Online Function With Room Codes

This commit is contained in:
brausjonas
2023-01-28 00:49:09 +01:00
parent 4127dbaaac
commit e89535fb02
55 changed files with 5573 additions and 425 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

@@ -0,0 +1,147 @@
fileFormatVersion: 2
guid: af5b87e28fb80214ba094061ae4502aa
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cee4fb3a7beae5249b207eafcb7e0bff
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 1432c14cba9ac6148875816671032465
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Motley Forces
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
+99
View File
@@ -0,0 +1,99 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &711685448941949428
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 711685448941949416}
- component: {fileID: 711685448941949431}
- component: {fileID: 711685448941949430}
- component: {fileID: 711685448941949429}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &711685448941949416
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711685448941949428}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 93.3, y: 1.71, z: 128.16}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &711685448941949431
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711685448941949428}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &711685448941949430
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711685448941949428}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &711685448941949429
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 711685448941949428}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9cb6f2379e137224e8f4450eae3198dc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,64 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!850595691 &4890085278179872738
LightingSettings:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Lighting Settings
serializedVersion: 4
m_GIWorkflowMode: 1
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_RealtimeEnvironmentLighting: 1
m_BounceScale: 1
m_AlbedoBoost: 1
m_IndirectOutputScale: 1
m_UsingShadowmask: 1
m_BakeBackend: 1
m_LightmapMaxSize: 1024
m_BakeResolution: 40
m_Padding: 2
m_LightmapCompression: 3
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAO: 0
m_MixedBakeMode: 2
m_LightmapsBakeMode: 1
m_FilterMode: 1
m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0}
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_RealtimeResolution: 2
m_ForceWhiteAlbedo: 0
m_ForceUpdates: 0
m_FinalGather: 0
m_FinalGatherRayCount: 256
m_FinalGatherFiltering: 1
m_PVRCulling: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_LightProbeSampleCountMultiplier: 4
m_PVRBounces: 2
m_PVRMinBounces: 1
m_PVREnvironmentMIS: 1
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_PVRTiledBaking: 0
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 560fdca36749b9f47a392bdddbaceec2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 4890085278179872738
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: c169a244ad039ce4ab72b1ee3383a41c
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+28 -120
View File
@@ -98,7 +98,7 @@ LightmapSettings:
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 4890085278179872738, guid: 73100c072b51c9e4b876978bf39c7cb2, type: 2}
m_LightingSettings: {fileID: 4890085278179872738, guid: 560fdca36749b9f47a392bdddbaceec2, type: 2}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
@@ -406,6 +406,7 @@ GameObject:
- component: {fileID: 47812147}
- component: {fileID: 47812146}
- component: {fileID: 47812145}
- component: {fileID: 47812148}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
@@ -461,8 +462,24 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 14
m_RootOrder: 13
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &47812148
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 47812144}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 812fca21913ccbd42a3f716f9c3b7727, type: 3}
m_Name:
m_EditorClassIdentifier:
playerPrefab: {fileID: 711685448941949428, guid: 9cb6f2379e137224e8f4450eae3198dc, type: 3}
dice: {fileID: 2005766824}
nextField: {fileID: 1406090859}
cam: {fileID: 1328561024}
--- !u!1001 &55786170
PrefabInstance:
m_ObjectHideFlags: 0
@@ -2690,7 +2707,7 @@ RectTransform:
m_Children:
- {fileID: 1416818652}
m_Father: {fileID: 0}
m_RootOrder: 13
m_RootOrder: 12
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -5461,7 +5478,7 @@ Light:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
@@ -9524,7 +9541,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f02425538b327cc47a5d70da69804669, type: 3}
m_Name:
m_EditorClassIdentifier:
followUp: {fileID: 1704083916}
followUp: {fileID: 0}
--- !u!114 &1328561029
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -9830,7 +9847,7 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1585359140388994828, guid: 5f6fe4eec1bc656458eebd9867f08b47, type: 3}
m_PrefabInstance: {fileID: 1406090857}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1406090860 stripped
--- !u!114 &1406090859 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: -5742674990914652290, guid: 5f6fe4eec1bc656458eebd9867f08b47, type: 3}
m_PrefabInstance: {fileID: 1406090857}
@@ -12831,119 +12848,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 6264285776840265041, guid: 8a4c1f56cdf3b264b9f27207969fdf01, type: 3}
m_PrefabInstance: {fileID: 1683787995}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1704083916
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1704083920}
- component: {fileID: 1704083919}
- component: {fileID: 1704083918}
- component: {fileID: 1704083917}
- component: {fileID: 1704083921}
m_Layer: 0
m_Name: Player
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &1704083917
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1704083916}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
serializedVersion: 2
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &1704083918
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1704083916}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &1704083919
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1704083916}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &1704083920
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1704083916}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 93.3, y: 1.71, z: 128.16}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1704083921
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1704083916}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0c5b74f4bdf875641a8d9ac432a5166f, type: 3}
m_Name:
m_EditorClassIdentifier:
nextField: {fileID: 1406090860}
dice: {fileID: 2005766824}
fpsText: {fileID: 1416818653}
--- !u!1001 &1704281756
PrefabInstance:
m_ObjectHideFlags: 0
@@ -13635,7 +13539,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 12
m_RootOrder: 11
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1812332222
PrefabInstance:
@@ -15021,6 +14925,10 @@ PrefabInstance:
propertyPath: m_Name
value: Dice
objectReference: {fileID: 0}
- target: {fileID: 315064472590105111, guid: 06e960ba226dd6e4c972ec724166cc0d, type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
- target: {fileID: 315064472590105111, guid: 06e960ba226dd6e4c972ec724166cc0d, type: 3}
propertyPath: m_StaticEditorFlags
value: 0
@@ -1,23 +0,0 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Camera : MonoBehaviour
{
//TODO: Replace with Follow Function later (player camera should follow)
[SerializeField] private GameObject followUp;
private Vector3 offset;
private Vector3 velocity = Vector3.zero;
//TODO: Replace with Follow Function later (player camera should follow)
private void Start()
{
offset = followUp.transform.position - transform.position;
}
private void FixedUpdate()
{
transform.position = Vector3.SmoothDamp(transform.position, followUp.transform.position - offset, ref velocity, 0.2f);
}
}
+145
View File
@@ -0,0 +1,145 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
public class Client : MonoBehaviour
{
private TcpClient client;
private Stream stream;
[SerializeField] private GameObject playerPrefab;
private Player[] players = new Player[4];
private Queue<Job> jobs = new Queue<Job>();
[SerializeField] private GameObject dice;
[SerializeField] private Field nextField;
[SerializeField] private GameObject cam;
private void Start()
{
client = new TcpClient("185.245.96.48", 8051);
stream = client.GetStream();
stream.Write(new byte[] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 0, 10);
string roomCode = PlayerPrefs.GetString("roomcode");
stream.Write(Encoding.ASCII.GetBytes(roomCode));
new Thread(Read).Start();
}
private void Update()
{
if (jobs.Count > 0)
{
Job job = jobs.Dequeue();
switch (job.data[0])
{
//-----Create A new player-----
case 1:
//player is playable
if (job.data[1] == 1)
{
GameObject player = Instantiate(playerPrefab);
player.transform.position = new Vector3(job.data[2], job.data[3] + 0.5f, job.data[4]);
PlayablePlayer script = player.AddComponent<PlayablePlayer>();
players[job.data[5]] = script;
script.client = this;
script.nextField = nextField;
script.dice = dice;
script.Init();
}
//player is not playable
else
{
GameObject player = Instantiate(playerPrefab);
player.transform.position = new Vector3(job.data[2], job.data[3] + 0.5f, job.data[4]);
NoPlayablePlayer script = player.AddComponent<NoPlayablePlayer>();
players[job.data[5]] = script;
script.nextField = nextField;
script.dice = dice;
script.Init();
}
break;
//---------------------------------------------------------
//-----Activate a Player
case 2:
Activate(job.data[1]);
break;
//Jemand hat gewürfelt
case 3:
((NoPlayablePlayer)players[job.data[1]]).Wurfeln(job.data[2]);
break;
//Jemand hat den Pfeil geklickt
case 4:
((NoPlayablePlayer)players[job.data[1]]).ArrowSelect(job.data[2]);
break;
}
}
}
private void Activate(int player)
{
for (int i = 0; i < players.Length; i++)
{
if (players[i] != null)
{
if (i == player)
{
players[i].Activate();
}
else
{
players[i].DeActivate();
}
}
}
cam.transform.parent = players[player].transform;
cam.transform.localPosition = new Vector3(-3, 8, 7);
}
private void Read()
{
while (true)
{
byte[] read = new byte[10];
stream.Read(read, 0, 10);
jobs.Enqueue(new Job(read));
}
}
//0 3 wurfeln
//1 x, x = zahl
public void SendWurfeln(int zahl)
{
stream.Write(new byte[]{3, (byte)zahl, 0, 0, 0, 0, 0, 0, 0, 0});
}
//0 4 arrow selected
//1 x, x = arrow idx
public void SendArrowSelected(int idx)
{
stream.Write(new byte[]{4, (byte)idx, 0, 0, 0, 0, 0, 0, 0, 0});
}
//0 5
public void SendFinished()
{
stream.Write(new byte[]{5, 0, 0, 0, 0, 0, 0, 0, 0, 0});
}
}
@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: f02425538b327cc47a5d70da69804669
guid: 812fca21913ccbd42a3f716f9c3b7727
MonoImporter:
externalObjects: {}
serializedVersion: 2
+13
View File
@@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Job
{
public byte[] data;
public Job(byte[] data)
{
this.data = data;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e64a1673d23a4304fa81de76a9941bb3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,126 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NoPlayablePlayer : Player
{
public Field nextField;
private Field currentField;
public GameObject dice;
private Dice diceScript;
private Vector3 moveTo = Vector3.zero;
private Vector3 lastPos = Vector3.zero;
private float speed = 5;
private float interPol = 0;
private int wurfelZahl = 0;
private bool wait = false;
private bool lastActivated = false;
private float timeSinceWurfeln = 0;
private Vector3 useLess = new Vector3();
public void Init()
{
activated = false;
diceScript = dice.GetComponent<Dice>();
}
public void Wurfeln(int wurfelZahl)
{
this.wurfelZahl = wurfelZahl;
//nächstes Feld anvisieren
TargetNextField();
//stop the dice
diceScript.StopRandom(wurfelZahl);
//delay for walk start
timeSinceWurfeln = Time.time;
}
public void ArrowSelect(int idx)
{
foreach (Arrow a in nextField.DirectionalArrow)
{
a.Deactivate();
}
nextField = nextField.Target[idx];
moveTo = nextField.transform.position;
wait = false;
}
private void FixedUpdate()
{
if (activated)
{
if (!wait)
{
//Laufe zum nöchsten Feld, falls noch Züge übrig sind
if (interPol < 1 && wurfelZahl > 0)
{
//delay
if (Time.time - timeSinceWurfeln > 1)
{
InterPolerate();
}
}
//Würfelzahl um 1 verringern falls noch züge übrig sind
else if (wurfelZahl > 0)
{
wurfelZahl--;
//Visiere das nächste Feld an falls noch ein Zug übrig ist (Player steht gerade auf einem Feld oder läuft darüber)
if (wurfelZahl > 0)
{
TargetNextField();
}
}
//Der Spieler steht gerade
else
{
//start the dice
dice.transform.position = Vector3.SmoothDamp(dice.transform.position,
transform.position + Vector3.up * 2, ref useLess, 0.2f);
diceScript.StartRandom();
}
}
else
{
foreach (Arrow a in nextField.DirectionalArrow)
{
a.Activate();
}
}
}
}
//Das nächste Feld aufgrund des aktuellen Feldes anvisieren
private void TargetNextField()
{
interPol = 0;
lastPos = transform.position;
currentField = nextField;
if (nextField.Target.Length == 1)
{
nextField = nextField.Target[0];
moveTo = nextField.transform.position;
}
else
{
wait = true;
}
}
//Bewegt den Player von einem Punkt(lastPos) zu einem anderen Punkt(moveTo) mit konstanter Geschwindigkeit
private void InterPolerate()
{
Vector3 nextPoint = Vector3.Lerp(lastPos, moveTo, interPol);
transform.position = new Vector3(nextPoint.x, transform.position.y, nextPoint.z);
interPol += (Time.deltaTime * speed) / Mathf.Abs(Vector3.Distance(moveTo, lastPos));
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 68609d4bfa4ff26459dc9a4f510bf86d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,161 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayablePlayer : Player
{
public Field nextField;
private Field currentField;
public GameObject dice;
private Dice diceScript;
private Vector3 moveTo = Vector3.zero;
private Vector3 lastPos = Vector3.zero;
private float speed = 5;
private float interPol = 0;
private int wurfelZahl = 0;
private bool wait = false;
private float timeSinceWurfeln = 0;
private Vector3 useLess = new Vector3();
public Client client;
public void Init()
{
activated = false;
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 59;
diceScript = dice.GetComponent<Dice>();
}
private void Update()
{
if (activated)
{
//Generiere Würfelzahl von 1-6 wenn gerade gewürfelt werden darf
if ((Input.GetMouseButtonDown(0)) && wurfelZahl == 0 && !wurfelt)
{
wurfelt = true;
wurfelZahl = Random.Range(1, 7);
client.SendWurfeln(wurfelZahl);
//nächstes Feld anvisieren
TargetNextField();
//stop the dice
diceScript.StopRandom(wurfelZahl);
//delay for walk start
timeSinceWurfeln = Time.time;
}
}
}
private void FixedUpdate()
{
if (activated)
{
if (!wait)
{
//Laufe zum nöchsten Feld, falls noch Züge übrig sind
if (interPol < 1 && wurfelZahl > 0)
{
//delay
if (Time.time - timeSinceWurfeln > 1)
{
InterPolerate();
}
}
//Würfelzahl um 1 verringern falls noch züge übrig sind
else if (wurfelZahl > 0)
{
wurfelZahl--;
//Visiere das nächste Feld an falls noch ein Zug übrig ist (Player steht gerade auf einem Feld oder läuft darüber)
if (wurfelZahl > 0)
{
TargetNextField();
}
}
//Der Spieler steht gerade
else
{
//start the dice
dice.transform.position = Vector3.SmoothDamp(dice.transform.position,
transform.position + Vector3.up * 2, ref useLess, 0.2f);
diceScript.StartRandom();
//TODO: temp spieler finsihed erst, wenn field action ausgeführt wurde
if (wurfelt)
{
client.SendFinished();
activated = false;
}
}
}
else
{
foreach (Arrow a in nextField.DirectionalArrow)
{
a.Activate();
}
if (nextField.DirectionalArrow[0].IsClicked())
{
client.SendArrowSelected(0);
foreach (Arrow a in nextField.DirectionalArrow)
{
a.Deactivate();
}
nextField = nextField = nextField.Target[0];
moveTo = nextField.transform.position;
wait = false;
}
else if (nextField.DirectionalArrow[1].IsClicked())
{
client.SendArrowSelected(1);
foreach (Arrow a in nextField.DirectionalArrow)
{
a.Deactivate();
}
nextField = nextField = nextField.Target[1];
moveTo = nextField.transform.position;
wait = false;
}
}
}
}
//Das nächste Feld aufgrund des aktuellen Feldes anvisieren
private void TargetNextField()
{
interPol = 0;
lastPos = transform.position;
currentField = nextField;
if (nextField.Target.Length == 1)
{
nextField = nextField.Target[0];
moveTo = nextField.transform.position;
}
else
{
wait = true;
}
}
//Bewegt den Player von einem Punkt(lastPos) zu einem anderen Punkt(moveTo) mit konstanter Geschwindigkeit
private void InterPolerate()
{
Vector3 nextPoint = Vector3.Lerp(lastPos, moveTo, interPol);
transform.position = new Vector3(nextPoint.x, transform.position.y, nextPoint.z);
interPol += (Time.deltaTime * speed) / Mathf.Abs(Vector3.Distance(moveTo, lastPos));
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ec20d73d6ef92f6469fe8f5daf50c15c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+4 -146
View File
@@ -1,159 +1,17 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using Random = UnityEngine.Random;
public class Player : MonoBehaviour
{
[SerializeField] private Field nextField;
private Field currentField;
[SerializeField] private GameObject dice;
private Dice diceScript;
private Vector3 moveTo = Vector3.zero;
private Vector3 lastPos = Vector3.zero;
private float speed = 5;
private float interPol = 0;
private int wurfelZahl = 0;
private bool activated = true;
private bool wait = false;
private bool lastActivated = false;
private float timeSinceWurfeln = 0;
public bool activated = false;
protected bool wurfelt = false;
//TESTTTTT
[SerializeField] private TMP_Text fpsText;
private Vector3 useLess = new Vector3();
private void Start()
{
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 9999;
diceScript = dice.GetComponent<Dice>();
}
private void Update()
{
fpsText.text = ((int)Time.frameCount / (int)Time.time) + " fps";
if(activated)
{
//Generiere Würfelzahl von 1-6 wenn gerade gewürfelt werden darf
if ((Input.GetMouseButtonDown(0)) && wurfelZahl == 0)
{
wurfelZahl = Random.Range(1, 7);
//nächstes Feld anvisieren
TargetNextField();
//stop the dice
diceScript.StopRandom(wurfelZahl);
//delay for walk start
timeSinceWurfeln = Time.time;
}
}
}
private void FixedUpdate()
{
if (activated)
{
if (!wait)
{
//Laufe zum nöchsten Feld, falls noch Züge übrig sind
if (interPol < 1 && wurfelZahl > 0)
{
//delay
if(Time.time - timeSinceWurfeln > 1)
{
InterPolerate();
}
}
//Würfelzahl um 1 verringern falls noch züge übrig sind
else if (wurfelZahl > 0 )
{
wurfelZahl--;
//Visiere das nächste Feld an falls noch ein Zug übrig ist (Player steht gerade auf einem Feld oder läuft darüber)
if (wurfelZahl > 0)
{
TargetNextField();
}
}
//Der Spieler steht gerade
else
{
//start the dice
dice.transform.position = Vector3.SmoothDamp(dice.transform.position,
transform.position + Vector3.up * 2, ref useLess, 0.2f);
diceScript.StartRandom();
}
}
else
{
foreach(Arrow a in nextField.DirectionalArrow)
{
a.Activate();
}
if (nextField.DirectionalArrow[0].IsClicked())
{
foreach(Arrow a in nextField.DirectionalArrow)
{
a.Deactivate();
}
nextField = nextField = nextField.Target[0];
moveTo = nextField.transform.position;
wait = false;
}
else if (nextField.DirectionalArrow[1].IsClicked())
{
foreach(Arrow a in nextField.DirectionalArrow)
{
a.Deactivate();
}
nextField = nextField = nextField.Target[1];
moveTo = nextField.transform.position;
wait = false;
}
}
}
}
//Das nächste Feld aufgrund des aktuellen Feldes anvisieren
private void TargetNextField()
{
interPol = 0;
lastPos = transform.position;
currentField = nextField;
if(nextField.Target.Length == 1)
{
nextField = nextField.Target[0];
moveTo = nextField.transform.position;
}
else
{
wait = true;
}
}
//Bewegt den Player von einem Punkt(lastPos) zu einem anderen Punkt(moveTo) mit konstanter Geschwindigkeit
private void InterPolerate()
{
Vector3 nextPoint = Vector3.Lerp(lastPos, moveTo, interPol);
transform.position = new Vector3(nextPoint.x, transform.position.y, nextPoint.z);
interPol += (Time.deltaTime * speed) / Mathf.Abs(Vector3.Distance(moveTo, lastPos));
}
//Aktiviert den Player
public void Activate()
{
activated = true;
wurfelt = false;
}
//Deaktiviert den Player
@@ -161,4 +19,4 @@ public class Player : MonoBehaviour
{
activated = false;
}
}
}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c996b0ab459030a4e9d75049c0105263
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,65 @@
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net.Sockets;
using System.Text;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartHandler : MonoBehaviour
{
private TcpClient client;
[SerializeField] private GameObject layout1;
[SerializeField] private GameObject layout2;
[SerializeField] private TMP_Text roomCodeEnter;
private void Start()
{
client = new TcpClient("185.245.96.48", 8051);
layout1.SetActive(true);
layout2.SetActive(false);
}
public void ButtonNewRoom()
{
Stream stream = client.GetStream();
byte[] readMessage = new byte[10];
//Send message new room
stream.Write(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
layout1.SetActive(false);
layout2.SetActive(true);
//wait for room code
int i = stream.Read(readMessage, 0, 10);
Debug.Log(i);
string code = Encoding.ASCII.GetString(readMessage);
PlayerPrefs.SetString("roomcode", code);
PlayerPrefs.Save();
GUIUtility.systemCopyBuffer = code;
layout2.GetComponentInChildren<TMP_Text>().text = "Your room code is: \n" + code + "\n copied to clipboard!";
}
public void ButtonJoin()
{
string code = roomCodeEnter.text;
PlayerPrefs.SetString("roomcode", code);
PlayerPrefs.Save();
SceneManager.LoadScene(1, LoadSceneMode.Single);
client.Close();
}
public void ButtonJoin2()
{
SceneManager.LoadScene(1, LoadSceneMode.Single);
client.Close();
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c98cb2b6987650844a331238afcbf2f7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -2,14 +2,15 @@
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2180264
Material:
serializedVersion: 6
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: LiberationSans SDF Material
m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3}
m_ShaderKeywords:
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
@@ -67,6 +68,7 @@ Material:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Ambient: 0.5
- _Bevel: 0.5
@@ -107,9 +109,9 @@ Material:
- _Parallax: 0.02
- _PerspectiveFilter: 0.875
- _Reflectivity: 10
- _ScaleRatioA: 0.90909094
- _ScaleRatioA: 0.9
- _ScaleRatioB: 0.73125
- _ScaleRatioC: 0.7386364
- _ScaleRatioC: 0.73125
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0
@@ -148,6 +150,7 @@ Material:
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
m_BuildTextureStacks: []
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -165,15 +168,16 @@ MonoBehaviour:
materialHashCode: 462855346
m_Version: 1.1.0
m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75,
type: 3}
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3}
m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3}
m_AtlasPopulationMode: 1
m_FaceInfo:
m_FaceIndex: 0
m_FamilyName: Liberation Sans
m_StyleName: Regular
m_PointSize: 86
m_Scale: 1
m_UnitsPerEM: 0
m_LineHeight: 98.8916
m_AscentLine: 77.853516
m_CapLine: 59
@@ -313,15 +317,20 @@ Texture2D:
Hash: 00000000000000000000000000000000
m_ForcedFallbackFormat: 4
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 2
m_Width: 0
m_Height: 0
m_CompleteImageSize: 0
m_MipsStripped: 0
m_TextureFormat: 1
m_MipCount: 1
m_IsReadable: 1
m_IsPreProcessed: 0
m_IgnoreMasterTextureLimit: 0
m_StreamingMipmaps: 0
m_StreamingMipmapsPriority: 0
m_VTOnly: 0
m_AlphaIsTransparency: 0
m_ImageCount: 1
m_TextureDimension: 2
@@ -335,9 +344,11 @@ Texture2D:
m_WrapW: 0
m_LightmapFormat: 0
m_ColorSpace: 0
m_PlatformBlob:
image data: 0
_typelessdata:
m_StreamData:
serializedVersion: 2
offset: 0
size: 0
path:
File diff suppressed because one or more lines are too long