From da8ce4b4254676cbc3988bb0c0a90031d47e75e7 Mon Sep 17 00:00:00 2001 From: brausjonas Date: Sun, 29 Jan 2023 00:25:54 +0100 Subject: [PATCH] NameSync --- .../.idea.FlufflParty/.idea/workspace.xml | 4 +- FlufflParty/Assets/Scenes/Start.unity | 849 +++++++++++++++++- FlufflParty/Assets/Scripts/Client.cs | 16 +- .../Scripts/Players/NoPlayablePlayer.cs | 4 +- .../Assets/Scripts/Players/PlayablePlayer.cs | 6 +- FlufflParty/Assets/Scripts/Players/Player.cs | 5 +- .../Assets/Scripts/Start/StartHandler.cs | 45 +- .../UserSettings/EditorUserSettings.asset | 4 +- Server/.idea/workspace.xml | 2 +- Server/out/artifacts/Server_jar/Server.jar | Bin 9798 -> 10276 bytes Server/out/production/Server/Client.class | Bin 535 -> 619 bytes Server/out/production/Server/Room$1.class | Bin 1184 -> 1184 bytes Server/out/production/Server/Room$2.class | Bin 2530 -> 2530 bytes Server/out/production/Server/Room.class | Bin 4634 -> 5325 bytes Server/out/production/Server/Server$1.class | Bin 2696 -> 2904 bytes Server/out/production/Server/Server.class | Bin 3344 -> 3344 bytes Server/src/Client.java | 5 +- Server/src/Room.java | 25 +- Server/src/Server.java | 7 +- 19 files changed, 950 insertions(+), 22 deletions(-) diff --git a/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml b/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml index 6d5d029..0e05e29 100644 --- a/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml +++ b/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml @@ -46,7 +46,7 @@ } - diff --git a/FlufflParty/Assets/Scenes/Start.unity b/FlufflParty/Assets/Scenes/Start.unity index 56d4712..3c2ec53 100644 --- a/FlufflParty/Assets/Scenes/Start.unity +++ b/FlufflParty/Assets/Scenes/Start.unity @@ -426,13 +426,169 @@ RectTransform: - {fileID: 2031235215} - {fileID: 1640298563} m_Father: {fileID: 1035793954} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: -0.00012207031, y: -0.11968994} m_SizeDelta: {x: -0.00012207, y: -0.7226} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &309674616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 309674617} + - component: {fileID: 309674620} + - component: {fileID: 309674619} + - component: {fileID: 309674618} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &309674617 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309674616} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1863703387} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &309674618 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309674616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &309674619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309674616} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter Name... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4283124555 + m_fontColor: {r: 0.2924528, g: 0.2924528, b: 0.2924528, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &309674620 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 309674616} + m_CullTransparentMesh: 1 --- !u!1 &358019285 GameObject: m_ObjectHideFlags: 0 @@ -1001,6 +1157,141 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 729803760} m_CullTransparentMesh: 1 +--- !u!1 &1000282453 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1000282454} + - component: {fileID: 1000282456} + - component: {fileID: 1000282455} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1000282454 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000282453} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1596386838} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1000282455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000282453} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Submit + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 20 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1000282456 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000282453} + m_CullTransparentMesh: 1 --- !u!1 &1027886993 GameObject: m_ObjectHideFlags: 0 @@ -1227,6 +1518,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1337600623} + - {fileID: 1178238780} - {fileID: 293557777} - {fileID: 1780335805} m_Father: {fileID: 0} @@ -1393,6 +1685,179 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1112206199} m_CullTransparentMesh: 1 +--- !u!1 &1178238779 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1178238780} + m_Layer: 5 + m_Name: Layout0 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1178238780 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1178238779} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1792022044} + - {fileID: 1596386838} + m_Father: {fileID: 1035793954} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.0038146973} + m_SizeDelta: {x: 0, y: -1.4500122} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1202941986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1202941987} + - component: {fileID: 1202941989} + - component: {fileID: 1202941988} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1202941987 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202941986} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1863703387} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1202941988 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202941986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 16 + m_fontSizeBase: 16 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1202941989 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1202941986} + m_CullTransparentMesh: 1 --- !u!1 &1330412934 GameObject: m_ObjectHideFlags: 0 @@ -1733,7 +2198,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0} m_AnchorMax: {x: 0.5, y: 0} - m_AnchoredPosition: {x: 0.00002905, y: 52} + m_AnchoredPosition: {x: -0.000015259, y: 51.04001} m_SizeDelta: {x: 200, y: 40} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1574528323 @@ -1830,6 +2295,140 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1574528321} m_CullTransparentMesh: 1 +--- !u!1 &1596386837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1596386838} + - component: {fileID: 1596386841} + - component: {fileID: 1596386840} + - component: {fileID: 1596386839} + m_Layer: 5 + m_Name: SubmitName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1596386838 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596386837} + m_LocalRotation: {x: -0, y: -0, z: -0.00069049717, w: 0.99999976} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1000282454} + m_Father: {fileID: 1178238780} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -0.079} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0.0000052452, y: 72.20001} + m_SizeDelta: {x: 200, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1596386839 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596386837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1596386840} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2045552894} + m_TargetAssemblyTypeName: StartHandler, Assembly-CSharp + m_MethodName: ButtonSubmitName + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1596386840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596386837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.92941177, b: 0.78039217, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 952a5200c3226fd418c93d8ffb2708a0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1596386841 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1596386837} + m_CullTransparentMesh: 1 --- !u!1 &1640298562 GameObject: m_ObjectHideFlags: 0 @@ -2050,13 +2649,254 @@ RectTransform: - {fileID: 1027886994} - {fileID: 1479699060} m_Father: {fileID: 1035793954} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: -0.00012207031, y: 0.12142944} m_SizeDelta: {x: 0, y: -0.730011} m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1792022043 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1792022044} + - component: {fileID: 1792022047} + - component: {fileID: 1792022046} + - component: {fileID: 1792022045} + m_Layer: 5 + m_Name: InputFieldName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1792022044 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792022043} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1863703387} + m_Father: {fileID: 1178238780} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.000001831} + m_SizeDelta: {x: 200, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1792022045 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792022043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1792022046} + m_TextViewport: {fileID: 1863703387} + m_TextComponent: {fileID: 1202941988} + m_Placeholder: {fileID: 309674619} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 8 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2045552894} + m_TargetAssemblyTypeName: StartHandler, Assembly-CSharp + m_MethodName: OnTextHasChangedNameInput + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + m_InputValidator: {fileID: 0} +--- !u!114 &1792022046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792022043} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.92941177, b: 0.78039217, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 952a5200c3226fd418c93d8ffb2708a0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1792022047 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1792022043} + m_CullTransparentMesh: 1 +--- !u!1 &1863703386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1863703387} + - component: {fileID: 1863703388} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1863703387 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863703386} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 309674617} + - {fileID: 1202941987} + m_Father: {fileID: 1792022044} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1863703388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863703386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} --- !u!1 &2031235214 GameObject: m_ObjectHideFlags: 0 @@ -2326,10 +3166,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c98cb2b6987650844a331238afcbf2f7, type: 3} m_Name: m_EditorClassIdentifier: + layout0: {fileID: 1178238779} layout1: {fileID: 293557776} layout2: {fileID: 1780335804} roomCodeEnter: {fileID: 505032544} + nameEnter: {fileID: 1202941988} buttonJoin: {fileID: 1640298562} + buttonSubmitName: {fileID: 1596386837} --- !u!1 &2072539372 GameObject: m_ObjectHideFlags: 0 diff --git a/FlufflParty/Assets/Scripts/Client.cs b/FlufflParty/Assets/Scripts/Client.cs index 48dc947..40bd88b 100644 --- a/FlufflParty/Assets/Scripts/Client.cs +++ b/FlufflParty/Assets/Scripts/Client.cs @@ -30,6 +30,8 @@ public class Client : MonoBehaviour string roomCode = PlayerPrefs.GetString("roomcode"); stream.Write(Encoding.ASCII.GetBytes(roomCode)); + string name = PlayerPrefs.GetString("name"); + stream.Write(Encoding.ASCII.GetBytes(name)); new Thread(Read).Start(); } @@ -57,7 +59,6 @@ public class Client : MonoBehaviour script.nextField = nextField; script.dice = dice; script.camera = cam; - script.Init(); } //player is not playable else @@ -71,7 +72,6 @@ public class Client : MonoBehaviour script.nextField = nextField; script.dice = dice; script.camera = cam; - script.Init(); } break; //--------------------------------------------------------- @@ -87,6 +87,18 @@ public class Client : MonoBehaviour case 4: ((NoPlayablePlayer)players[job.data[1]]).ArrowSelect(job.data[2]); break; + case 5: + byte[] name = new byte[8]; + for (int i = 0; i < 8; i++) + { + name[i] = job.data[i + 2]; + } + + players[job.data[1]].name = Encoding.ASCII.GetString(name).Replace(" ", ""); + players[job.data[1]].Init(); + + Debug.Log("test"); + break; case 127: client.Close(); SceneManager.LoadScene(0, LoadSceneMode.Single); diff --git a/FlufflParty/Assets/Scripts/Players/NoPlayablePlayer.cs b/FlufflParty/Assets/Scripts/Players/NoPlayablePlayer.cs index a6b3854..870ec9f 100644 --- a/FlufflParty/Assets/Scripts/Players/NoPlayablePlayer.cs +++ b/FlufflParty/Assets/Scripts/Players/NoPlayablePlayer.cs @@ -21,7 +21,7 @@ public class NoPlayablePlayer : Player private Vector3 useLess = new Vector3(); - public void Init() + public override void Init() { activated = false; diceScript = dice.GetComponent(); @@ -57,7 +57,7 @@ public class NoPlayablePlayer : Player private void FixedUpdate() { - if (activated) + if (activated && !name.Equals("")) { camera.transform.position = Vector3.SmoothDamp(camera.transform.position, transform.position + cameraOffset, ref velocity, 0.2f); diff --git a/FlufflParty/Assets/Scripts/Players/PlayablePlayer.cs b/FlufflParty/Assets/Scripts/Players/PlayablePlayer.cs index 0406b54..87c0a61 100644 --- a/FlufflParty/Assets/Scripts/Players/PlayablePlayer.cs +++ b/FlufflParty/Assets/Scripts/Players/PlayablePlayer.cs @@ -24,7 +24,7 @@ public class PlayablePlayer : Player public Client client; - public void Init() + public override void Init() { activated = false; QualitySettings.vSyncCount = 0; @@ -34,7 +34,7 @@ public class PlayablePlayer : Player private void Update() { - if (activated) + if (activated && !name.Equals("")) { //Generiere Würfelzahl von 1-6 wenn gerade gewürfelt werden darf if ((Input.GetMouseButtonDown(0)) && wurfelZahl == 0 && !wurfelt) @@ -58,7 +58,7 @@ public class PlayablePlayer : Player private void FixedUpdate() { - if (activated) + if (activated && !name.Equals("")) { camera.transform.position = Vector3.SmoothDamp(camera.transform.position, transform.position + cameraOffset, ref velocity, 0.2f); diff --git a/FlufflParty/Assets/Scripts/Players/Player.cs b/FlufflParty/Assets/Scripts/Players/Player.cs index 39ab42d..047db24 100644 --- a/FlufflParty/Assets/Scripts/Players/Player.cs +++ b/FlufflParty/Assets/Scripts/Players/Player.cs @@ -2,8 +2,9 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -public class Player : MonoBehaviour +public abstract class Player : MonoBehaviour { + public string name = ""; public bool activated = false; protected bool wurfelt = false; @@ -24,4 +25,6 @@ public class Player : MonoBehaviour { activated = false; } + + public abstract void Init(); } diff --git a/FlufflParty/Assets/Scripts/Start/StartHandler.cs b/FlufflParty/Assets/Scripts/Start/StartHandler.cs index 7f0f3c3..73a0b45 100644 --- a/FlufflParty/Assets/Scripts/Start/StartHandler.cs +++ b/FlufflParty/Assets/Scripts/Start/StartHandler.cs @@ -10,16 +10,30 @@ using UnityEngine.SceneManagement; public class StartHandler : MonoBehaviour { private TcpClient client; + [SerializeField] private GameObject layout0; [SerializeField] private GameObject layout1; [SerializeField] private GameObject layout2; [SerializeField] private TMP_Text roomCodeEnter; + [SerializeField] private TMP_Text nameEnter; [SerializeField] private GameObject buttonJoin; + [SerializeField] private GameObject buttonSubmitName; private string roomcode; private void Start() { - layout1.SetActive(true); + PlayerPrefs.DeleteAll(); + + if (PlayerPrefs.HasKey("name")) + { + layout0.SetActive(false); + layout1.SetActive(true); + } + else + { + layout0.SetActive(true); + layout1.SetActive(false); + } layout2.SetActive(false); client = new TcpClient("185.245.96.48", 8051); buttonJoin.SetActive(false); @@ -39,8 +53,6 @@ public class StartHandler : MonoBehaviour //wait for room code int i = stream.Read(readMessage, 0, 10); - Debug.Log(i); - string code = Encoding.ASCII.GetString(readMessage); PlayerPrefs.SetString("roomcode", code); @@ -91,4 +103,31 @@ public class StartHandler : MonoBehaviour buttonJoin.SetActive(false); } } + + public void OnTextHasChangedNameInput(string s) + { + if (s.Length > 0) + { + buttonSubmitName.SetActive(true); + } + else + { + buttonSubmitName.SetActive(false); + } + } + + public void ButtonSubmitName() + { + string name = nameEnter.text; + for (int i = name.Length; i < 10; i++) + { + name += " "; + } + + PlayerPrefs.SetString("name", name); + PlayerPrefs.Save(); + + layout0.SetActive(false); + layout1.SetActive(true); + } } \ No newline at end of file diff --git a/FlufflParty/UserSettings/EditorUserSettings.asset b/FlufflParty/UserSettings/EditorUserSettings.asset index 2bb28f9..14d6805 100644 --- a/FlufflParty/UserSettings/EditorUserSettings.asset +++ b/FlufflParty/UserSettings/EditorUserSettings.asset @@ -9,10 +9,10 @@ EditorUserSettings: value: 5604555501510a0955590d74437008441216412e7578276829704a6bb0b66c3a flags: 0 RecentlyUsedSceneGuid-1: - value: 0000025f04075d0f0c0a5c7149205a4417154f782e7923357e7a4560e3b4653b + value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a flags: 0 RecentlyUsedSceneGuid-2: - value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a + value: 0000025f04075d0f0c0a5c7149205a4417154f782e7923357e7a4560e3b4653b flags: 0 UnityRemoteDevice: value: 225f4d46245b0d4902070862342649191512 diff --git a/Server/.idea/workspace.xml b/Server/.idea/workspace.xml index 7fe325e..eeb9173 100644 --- a/Server/.idea/workspace.xml +++ b/Server/.idea/workspace.xml @@ -75,7 +75,7 @@ - + diff --git a/Server/out/artifacts/Server_jar/Server.jar b/Server/out/artifacts/Server_jar/Server.jar index aaa1b77a771244d3efc0c4bfc2237ba24e40695f..d10a25c95dfb6db15df41a19258e461158c02e58 100644 GIT binary patch delta 9022 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 delta 252 zcmXAjK~4fe6hvP)Jq$ArpfI9Y$|I*O%^9Hw< sZn+eWvQiojWfrJRA;&V2m3=7P5=M^ diff --git a/Server/out/production/Server/Room$1.class b/Server/out/production/Server/Room$1.class index abef71683fa1a52c216c9b9485de4f5b93eca043..69c93ee1f673171340b8c4cc33317e1395bc2e3e 100644 GIT binary patch delta 31 ncmZ3$xqx%SF=j^H$;X+yc?}ta7>pV07)%&E8O$cfvp50(jZz1V delta 31 ncmZ3$xqx%SF=j@c$;X+yc?}qZ7>pR~7>pS_8B8a~vp50(jSmNi diff --git a/Server/out/production/Server/Room$2.class b/Server/out/production/Server/Room$2.class index 5258dc6437280131812855fcc352676079697f1c..1baa1094bdb0019a7bb18dfb7abe2a6811b6be34 100644 GIT binary patch delta 169 zcmWN@KMMf?7{KA*d!-~ zs2H?)(2)SDgy>3`fy5a~ijm~eq{>*frUxc+WGW|gxigcO>4%McT`c6sQgN_S+@^lk LN|ep~ZGHX$uXHR9 delta 169 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 We2FgCa1Bo5T*TFM&hl@3dipoicB-%d literal 4634 zcmb_f32;>99shm1Z}(-F7svrbB$05`CYywWfQSUC1c^G)_5AkMk8$_fgh2 zbbQl~ORysk-;(uiKfaCcxy`H%n~}}6 z9f?>dvYB{q+=^|pVkB(suy;Ju6Fo7@?53y!hb5T^g=1c1SdawpuHbf^Ff$wJ=9?Cy_C+bx9}^ zN-R|Az+73@@4MnW>S|O3`gUZSf}8w5M_Qd z7_{Q?Idye)L{~VLS2C`yejcQ;^UlIDCuu~zAPUoLIfa%csH>|db&8Wh|Y`CI?qpTR^VkqS&*U3)NI~LStYV8V!5|R~fhxOATCuCIeSsv4It``zV?Xw4#TVkj`*%R`#-3%p8#Z&~ezn zFh*F>sTMTQfF;6uL}5~v!!Bt9E%+EEiWPI_3DHpl$MBefBiruOOhp(N#p4Pkwve1A zZcK*4-O|Booq^*RV>KFh0w-8l>&qQu%eO??3Ekx}Dk^7q%Hv79L^dVE;em29UhXt# zx$r+};3=HY@nZu&!A}|MtUjl5(+1az!A}c##=y_eqvPiWp2c$peu3u={1PV({7S$J zIH}`B125s_v}b46x`AJ#$G~qSyqZ(VIa*h4+`?&gmLX2d(-0^9XX6Iq35&f@m>Mw> z>9$ZfEM3h0U>kTVnwpxVQD&#g9APO$)-Ip zT3SS~J1V0r+t;f&Y!fuvGG&B#&AvV>(ydT4&KRpa&zMwx$v9!NmAIPP#U+Kw73b5E zsI;Q_{PV1gyhJn|J*UW+iX8Lgk`ZIW5!yeVdGszbQn)Y4rCFVfL}acuNDMsowZ!Ww z8z$)x28UDf9N|ui8!Fc_I1F8%MDJoJ5Hyc2o4gx%nhBxmXSp}=8Q^mxE812v4lV7t zAr_K^c`DX5id~az|LiH=88d^#c!OpnXoWG8p8%Kh+V{aFozI<1n%7=A6YP}(!d^Ko zpdcR*E?murL&Dy3Y}hO3g}t)Dx#p9$6>Ws=fZE894vnV|2aX^w;5iQ8Fg$@#_`8l^ z!Z1|8Jq)h^EkKMOI0{3Ss$sYT`f=nBV`AViCb~zF-&HipC@MID!VWpn?31FL6Hl6^ zI8EbC(>N#9!*EgcWU8JrjH#n2=?YX;AHhZK6gaiUHyP7LFntJG`ypDt6A$75O5w&z z+TV_1!s+zI;BO&6oQjE?!Z?=TQtoQ_JyeewjO0vuKMSA2Z1iCcZY6dn0=NrR*o{S$ zc?AxVY89mgC~Y^TU5nM!!Wf|gom^!nIZ*aavf#qUxt|Kxdo;Qaa}u+l!>ErS;EXlf9|x2y`8WSKGk&KZ>$ZT*9!-C@LSp z%%hk^STvh}q;A>IAt)WehemMe2tGWDimp*qb}^^?t7@+qK{Y8=%`w!taNQ7mgDy4n z-fcYdin6gisxxcIU))Q}?9;vYeQDVq^vX+V{b9^4@IRi{<<>g8G(H|4Pb}kc?d^AV zc8MJOtxn$b^xHgn%PS)&@VW_f0eJ#^?#>a^47rlOBIc&!C&0 z&$9h56oqZoV@ur&wJBQJUR+Z>MXO)zndZs(>Y=Y<10S(p%(tx{*O@_$qK^$BudSL6 z9b(Nqq`b<9`Knk&)b(5k)hp@`{IYgxb_Z(_tRtNjRKy;h&hDMX?ycs9|4H_2827S9 z_h38j!%d_a!~?hk`>+f9xjV!!^L%<{ zgLqEu!t?4SuCL%lT5(dniWk&tc-gM?P5fUZOebq8}GXB5dZ)H diff --git a/Server/out/production/Server/Server$1.class b/Server/out/production/Server/Server$1.class index e4130fe9fe7aada52ad912b05a2228fbf512fdc0..3e725c0fed0c5d3a2d27f0d60fdd6d249d982471 100644 GIT binary patch delta 1058 zcmZ{j+iz4=6vlshW;*+vlU>?!X`KhOT8h(B7@>f5pj3MSr6{#UNBKoSd`w`qtXt+TU7PXVx3N*l3}z*`(=q=^^l# zM8-z49)2w&h`;ZMcY<0*xY_pDGkL~Pmc-7%Go9T5+-KlxQ zqk=arc*~}JTQj10NAs@cy^EJiR6#7~4+P;KYG{gh-xuK`SCbZ1ax`p-q#pXf@F8`E z*~~G_qQ;P-PEi*ArOFD0WB7=Vt#em68kxR+H=kIr$FP@A4g1({IKXF$So`4MfTDP_ zzr#=U`?+kYV>sWJ%W4i9LJnEhVZ-NqVXZF>NBBzfwc#7S)f_b(<9JvdEq6}vo#7;> z!uDw8g6}z{`N43SGYZupU%BB&&Kl0~lOo>K-xuVDZN{Gs=eb}Q<>KXI(Z$hvoezfk z{q8`~oLuprs-|8)-w|xx9^|@%MGx{=H#+C{FA9Ih}+v`H{)xV?3I6s((TK%9Mm2 z+Gh1r{zz% z#W2r^)Op7R}P)k@USz;r$9sf41KrUP+O;)(=T_A~>WSg8&%fUF1BE;f5Tx1;H7?oI zYF4<^vC<`uRhrcn)VpXJ?8+LKWvsQZQL|3d6kt7Jm!WL1nT;+(XtuK!mrb+=*i4&d zi%TlC4qI((x9P$ThloR`UD)Q*MYrW|*F;@1>9L^K*4m-jsoAC3t=aRUKUsNSRU}35 zUhygJG}FX{ki1pCQ2IW@eu@k^zCoZ&nd?Chf95}xL=;R;tB%{9Yy`n(cYmoy)+nk15;q;p=O-jb4`Uo)zY?Du5WPt41G!{}n?zf{%-hGaOe8RLBnlqZ&{a>nAvT4^BF zOL0qM->KyXbxN~RxzwvN!oq4&6>J!^xmFBR)6G<-5zls(Go2Y?>j%RqW+n~;v{FK; zyvbyh&n(KMv5_i^+02o>#;6gLi#E=-@vqr<*`-1bOHtVINms_XjF&lqvuK diff --git a/Server/out/production/Server/Server.class b/Server/out/production/Server/Server.class index dc766cc3f2e8f826b86c20c410bb87521793a4b1..ebc54c9fa405e3afb62b8ca20aa9e5807c99065f 100644 GIT binary patch delta 68 zcmbOrH9=~_Juco1h6;vEhH8dvh6aY5$*;M#sTMG>G88fJGL$fgGL$iBFjO&E0Qq(d Xbqrn%jSQg-%?wctZJUpAdocn4YLF1c delta 68 zcmbOrH9=~_Jucp4h6;uhhH8d1h6aZ8$*;M#sb({