From 38b4f06bb1e2a3b2f945c721f101fae5eac98e14 Mon Sep 17 00:00:00 2001 From: brausjonas Date: Fri, 31 Mar 2023 14:32:27 +0200 Subject: [PATCH] Server Performance boost The Servers Performance was up to 100% percent. Tried to close threads not needed directly. now it is under 1% (Threads stacking, when errors) --- .../.idea.FlufflParty/.idea/workspace.xml | 5 +- .../Animations/PenguAnimator.controller | 160 +++++++++++++++++- FlufflParty/Assets/Scripts/Client.cs | 5 + .../Assets/Scripts/Start/StartHandler.cs | 9 + .../ProjectSettings/ProjectSettings.asset | 14 +- .../UserSettings/EditorUserSettings.asset | 4 +- .../UserSettings/Layouts/default-2021.dwlt | 121 +++++++------ Server/.idea/workspace.xml | 3 +- Server/out/artifacts/Server_jar/Server.jar | Bin 10764 -> 9215 bytes Server/out/production/Server/Room$1.class | Bin 1657 -> 2874 bytes Server/out/production/Server/Room$2.class | Bin 2974 -> 0 bytes Server/out/production/Server/Room.class | Bin 5390 -> 5192 bytes Server/out/production/Server/Server$1.class | Bin 2904 -> 3052 bytes Server/out/production/Server/Server.class | Bin 3274 -> 2582 bytes Server/src/Room.java | 59 +------ Server/src/Server.java | 59 +++---- 16 files changed, 288 insertions(+), 151 deletions(-) delete mode 100644 Server/out/production/Server/Room$2.class diff --git a/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml b/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml index 161e692..f4f07c4 100644 --- a/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml +++ b/FlufflParty/.idea/.idea.FlufflParty/.idea/workspace.xml @@ -52,7 +52,7 @@ } - diff --git a/FlufflParty/Assets/Animations/PenguAnimator.controller b/FlufflParty/Assets/Animations/PenguAnimator.controller index 34a79de..523f70d 100644 --- a/FlufflParty/Assets/Animations/PenguAnimator.controller +++ b/FlufflParty/Assets/Animations/PenguAnimator.controller @@ -1,5 +1,30 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1101 &-9039244494196307241 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: value + m_EventTreshold: 2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 957025389321444311} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.6666666 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1102 &-8981525267910014350 AnimatorState: serializedVersion: 6 @@ -43,6 +68,8 @@ AnimatorState: m_CycleOffset: 0 m_Transitions: - {fileID: 7614053744492617718} + - {fileID: -1099914224773865772} + - {fileID: -6777303784791167380} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -83,6 +110,56 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &-6777303784791167380 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: value + m_EventTreshold: 1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1423713061864677287} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.8181819 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &-5577835132539458708 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: value + m_EventTreshold: 2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 957025389321444311} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.78571427 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &-4292872927139587900 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -170,6 +247,8 @@ AnimatorState: m_CycleOffset: 0 m_Transitions: - {fileID: 1448224064508029569} + - {fileID: -5577835132539458708} + - {fileID: 4620052325714281977} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -210,6 +289,31 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &-1099914224773865772 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: value + m_EventTreshold: 2 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 957025389321444311} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.8181819 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &-129466730452059530 AnimatorStateTransition: m_ObjectHideFlags: 1 @@ -246,7 +350,7 @@ AnimatorController: m_DefaultFloat: 0 m_DefaultInt: 0 m_DefaultBool: 0 - m_Controller: {fileID: 0} + m_Controller: {fileID: 9100000} m_AnimatorLayers: - serializedVersion: 5 m_Name: Base Layer @@ -389,7 +493,7 @@ AnimatorStateMachine: m_Position: {x: 390, y: 560, z: 0} - serializedVersion: 1 m_State: {fileID: 957025389321444311} - m_Position: {x: 460, y: 320, z: 0} + m_Position: {x: 790, y: 370, z: 0} m_ChildStateMachines: [] m_AnyStateTransitions: [] m_EntryTransitions: [] @@ -412,6 +516,8 @@ AnimatorState: m_CycleOffset: 0 m_Transitions: - {fileID: -129466730452059530} + - {fileID: -9039244494196307241} + - {fileID: 3259241568417656217} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -452,6 +558,56 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 +--- !u!1101 &3259241568417656217 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: value + m_EventTreshold: 1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1423713061864677287} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.6666666 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 +--- !u!1101 &4620052325714281977 +AnimatorStateTransition: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: value + m_EventTreshold: 1 + m_DstStateMachine: {fileID: 0} + m_DstState: {fileID: 1423713061864677287} + m_Solo: 0 + m_Mute: 0 + m_IsExit: 0 + serializedVersion: 3 + m_TransitionDuration: 0.25 + m_TransitionOffset: 0 + m_ExitTime: 0.78571427 + m_HasExitTime: 0 + m_HasFixedDuration: 1 + m_InterruptionSource: 0 + m_OrderedInterruption: 1 + m_CanTransitionToSelf: 1 --- !u!1101 &6957837359468571303 AnimatorStateTransition: m_ObjectHideFlags: 1 diff --git a/FlufflParty/Assets/Scripts/Client.cs b/FlufflParty/Assets/Scripts/Client.cs index 1ee6a55..9454122 100644 --- a/FlufflParty/Assets/Scripts/Client.cs +++ b/FlufflParty/Assets/Scripts/Client.cs @@ -318,4 +318,9 @@ public class Client : MonoBehaviour { stream.Write(new byte[]{10, index, 0, 0, 0, 0, 0, 0, 0, 0}); } + + private void OnApplicationQuit() + { + stream.Write(new byte[]{126, 0, 0, 0, 0, 0, 0, 0, 0, 0}); + } } \ No newline at end of file diff --git a/FlufflParty/Assets/Scripts/Start/StartHandler.cs b/FlufflParty/Assets/Scripts/Start/StartHandler.cs index c5bd6e9..99d2255 100644 --- a/FlufflParty/Assets/Scripts/Start/StartHandler.cs +++ b/FlufflParty/Assets/Scripts/Start/StartHandler.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using System.Collections.Generic; using System.IO; @@ -66,6 +67,8 @@ public class StartHandler : MonoBehaviour PlayerPrefs.Save(); layout2.GetComponentInChildren().text = "Your room code is: \n" + code; + + stream.Close(); } public void ButtonJoin() @@ -152,4 +155,10 @@ public class StartHandler : MonoBehaviour layout0.SetActive(true); layout1.SetActive(false); } + + private void OnApplicationQuit() + { + Stream stream = client.GetStream(); + stream.Write(new byte[]{126, 0, 0, 0, 0, 0, 0, 0, 0}); + } } \ No newline at end of file diff --git a/FlufflParty/ProjectSettings/ProjectSettings.asset b/FlufflParty/ProjectSettings/ProjectSettings.asset index b210cc7..a38f65e 100644 --- a/FlufflParty/ProjectSettings/ProjectSettings.asset +++ b/FlufflParty/ProjectSettings/ProjectSettings.asset @@ -12,7 +12,7 @@ PlayerSettings: targetDevice: 2 useOnDemandResources: 0 accelerometerFrequency: 60 - companyName: IO Game Studios + companyName: IOGameStudios productName: FlufflParty defaultCursor: {fileID: 0} cursorHotspot: {x: 0, y: 0} @@ -136,8 +136,10 @@ PlayerSettings: 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 0.12 - preloadedAssets: [] + bundleVersion: 0.13 + preloadedAssets: + - {fileID: -6230802382160794249, guid: 90cd1b71078984c4980fcd1aa03eaaa3, type: 2} + - {fileID: 11400000, guid: 48bf7376b3770c44cbfe3f40e77359ab, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1 @@ -151,8 +153,8 @@ PlayerSettings: useHDRDisplay: 0 D3DHDRBitDepth: 0 m_ColorGamuts: 00000000 - targetPixelDensity: 30 - resolutionScalingMode: 0 + targetPixelDensity: 100 + resolutionScalingMode: 1 resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 @@ -164,7 +166,7 @@ PlayerSettings: iPhone: 0 tvOS: 0 overrideDefaultApplicationIdentifier: 0 - AndroidBundleVersionCode: 2 + AndroidBundleVersionCode: 3 AndroidMinSdkVersion: 26 AndroidTargetSdkVersion: 31 AndroidPreferredInstallLocation: 2 diff --git a/FlufflParty/UserSettings/EditorUserSettings.asset b/FlufflParty/UserSettings/EditorUserSettings.asset index bac6747..299540d 100644 --- a/FlufflParty/UserSettings/EditorUserSettings.asset +++ b/FlufflParty/UserSettings/EditorUserSettings.asset @@ -12,10 +12,10 @@ EditorUserSettings: value: 55010d0300055a5a595a592641730d44104e4c287b2e71662c7b186bb3b86069 flags: 0 RecentlyUsedSceneGuid-2: - value: 0000025f04075d0f0c0a5c7149205a4417154f782e7923357e7a4560e3b4653b + value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a flags: 0 RecentlyUsedSceneGuid-3: - value: 5a5757560101590a5d0c0e24427b5d44434e4c7a7b7a23677f2b4565b7b5353a + value: 0000025f04075d0f0c0a5c7149205a4417154f782e7923357e7a4560e3b4653b flags: 0 UnityRemoteDevice: value: 225f4d46245b0d4902070862342649191512 diff --git a/FlufflParty/UserSettings/Layouts/default-2021.dwlt b/FlufflParty/UserSettings/Layouts/default-2021.dwlt index 83ba0c0..508fb6e 100644 --- a/FlufflParty/UserSettings/Layouts/default-2021.dwlt +++ b/FlufflParty/UserSettings/Layouts/default-2021.dwlt @@ -19,7 +19,7 @@ MonoBehaviour: width: 1920 height: 1117 m_ShowMode: 4 - m_Title: Scene + m_Title: Game m_RootView: {fileID: 2} m_MinSize: {x: 875, y: 300} m_MaxSize: {x: 10000, y: 10000} @@ -118,7 +118,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 200} m_MaxSize: {x: 24288, y: 16192} vertical: 1 - controlID: 614 + controlID: 32 --- !u!114 &6 MonoBehaviour: m_ObjectHideFlags: 52 @@ -143,7 +143,7 @@ MonoBehaviour: m_MinSize: {x: 300, y: 200} m_MaxSize: {x: 24288, y: 16192} vertical: 0 - controlID: 615 + controlID: 33 --- !u!114 &7 MonoBehaviour: m_ObjectHideFlags: 52 @@ -168,7 +168,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 200} m_MaxSize: {x: 16192, y: 16192} vertical: 1 - controlID: 616 + controlID: 20 --- !u!114 &8 MonoBehaviour: m_ObjectHideFlags: 52 @@ -193,7 +193,7 @@ MonoBehaviour: m_MinSize: {x: 200, y: 100} m_MaxSize: {x: 16192, y: 8096} vertical: 0 - controlID: 617 + controlID: 21 --- !u!114 &9 MonoBehaviour: m_ObjectHideFlags: 52 @@ -230,7 +230,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 1 m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: SceneView + m_Name: GameView m_EditorClassIdentifier: m_Children: [] m_Position: @@ -241,13 +241,13 @@ MonoBehaviour: height: 754 m_MinSize: {x: 102, y: 121} m_MaxSize: {x: 4002, y: 4021} - m_ActualView: {fileID: 17} + m_ActualView: {fileID: 16} m_Panes: + - {fileID: 17} - {fileID: 15} - {fileID: 16} - - {fileID: 17} m_Selected: 2 - m_LastSelected: 1 + m_LastSelected: 0 --- !u!114 &11 MonoBehaviour: m_ObjectHideFlags: 52 @@ -258,7 +258,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 1 m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: ConsoleWindow + m_Name: ProjectBrowser m_EditorClassIdentifier: m_Children: [] m_Position: @@ -267,14 +267,14 @@ MonoBehaviour: y: 754 width: 1405 height: 313 - m_MinSize: {x: 101, y: 121} - m_MaxSize: {x: 4001, y: 4021} - m_ActualView: {fileID: 18} + m_MinSize: {x: 231, y: 271} + m_MaxSize: {x: 10001, y: 10021} + m_ActualView: {fileID: 13} m_Panes: - {fileID: 13} - {fileID: 18} - m_Selected: 1 - m_LastSelected: 0 + m_Selected: 0 + m_LastSelected: 1 --- !u!114 &12 MonoBehaviour: m_ObjectHideFlags: 52 @@ -294,8 +294,8 @@ MonoBehaviour: y: 0 width: 515 height: 1067 - m_MinSize: {x: 275, y: 50} - m_MaxSize: {x: 4000, y: 4000} + m_MinSize: {x: 276, y: 71} + m_MaxSize: {x: 4001, y: 4021} m_ActualView: {fileID: 19} m_Panes: - {fileID: 19} @@ -343,22 +343,22 @@ MonoBehaviour: m_SkipHidden: 0 m_SearchArea: 1 m_Folders: - - Assets/BlenderFiles/Textures + - Assets/Prefabs m_Globs: [] m_OriginalText: m_ViewMode: 1 m_StartGridSize: 64 m_LastFolders: - - Assets/BlenderFiles/Textures + - Assets/Prefabs m_LastFoldersGridSize: -1 - m_LastProjectPath: D:\Unity\flufflparty\flufflparty\FlufflParty + m_LastProjectPath: D:\Unity\flufflparty\FlufflParty m_LockTracker: m_IsLocked: 0 m_FolderTreeState: - scrollPos: {x: 0, y: 0} - m_SelectedIDs: 56c00000 - m_LastClickedID: 49238 - m_ExpandedIDs: 00000000b0670000ce670000d0670000d4670000d8670000da67000056c0000000ca9a3b + scrollPos: {x: 0, y: 48} + m_SelectedIDs: 6ea30000 + m_LastClickedID: 41838 + m_ExpandedIDs: 0000000064a3000068a3000072a3000074a3000078ad000000ca9a3b m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -386,7 +386,7 @@ MonoBehaviour: scrollPos: {x: 0, y: 0} m_SelectedIDs: m_LastClickedID: 0 - m_ExpandedIDs: 00000000b0670000 + m_ExpandedIDs: m_RenameOverlay: m_UserAcceptedRename: 0 m_Name: @@ -473,23 +473,23 @@ MonoBehaviour: m_SceneHierarchy: m_TreeViewState: scrollPos: {x: 0, y: 0} - m_SelectedIDs: 6ec80300 - m_LastClickedID: 247918 - m_ExpandedIDs: f4b5fdff3eb6fdff10bafdff18bcfdff2cc9fdff76c9fdff48cdfdff50cffdff86dbfdffd4dbfdff46defdff46e0fdffc4fcfdff16fdfdffe800fefff002feff700afeffcc0dfeffec10feff8213feff9a16feff6a19feff8a1cfeff2a1efeffc020feff4e28feff402efeff3c31fefff234feffd837feffa63afeff243dfeff0640feff7847feff464afeffa44dfeff7250feff1453feffdc55feffe458feffca5bfeff425efeff1e61feffae63feff7666feff0c69feffda6bfeffe26efeffb071feff3a74feff0877feff3e7afeff6a7dfeff8c80feffae83feffb886feffe489feff9e8cfeff988ffeff5292feff3495feffca97feff989afeff229dfefff09ffeffe8a3feffe6a9feff3cadfeff8cb0feffdeb3feffacb6feff66b9feffd4e9feff52ecfeffe8f6feff66f9feff56fcfeffd4fefeffaa18ffff341bffff021effff8020ffff8a25ffff0828ffffd62affff542dffff2230ffffb832ffff9e35ffff1c38ffff0c3bffff8a3dffff5640ffff2446ffffa248ffff6e4bffffca72ffffcc83ffff20c3ffffdedbffffb2e7ffffd6f5ffff04fbffff3e990000849b00002a9c000008c200008ac20000a4c40000de550100365601005a5601007a5601000e570100ba580100285901004659010010250200ba170300841b030090250300 + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: aea8fbfffea8fbffb0acfbffbaaefbff86b8fbffd6b8fbff88bcfbff92befbff14cdfbff70cdfbff22d1fbff2cd3fbff36dbfbff12e3fbff6ce3fbff30e7fbff30e9fbff46f3fbffa2f3fbff66f7fbff66f9fbfff008fcff3e09fcff020dfcff020ffcff522cfcffb463fcff32b8fcff22ccfcff32d0fcff82d0fcff22d4fcff22d6fcff6ad5fdffb8d5fdff58d9fdff58dbfdff7eeffdffa671fefffc97feff5a98feffe89bfefff29dfeff80a8feff50b5feffa4b5feffd8b9feffe2bbfefffce6feff72e7feff84ebfeff8eedfeff2a8cffff36b1ffff76b4ffff86b5ffff7ea80000ea0201002a920100b8f4030082f70300a8f703009c3a04002a7f040058ac0400 m_RenameOverlay: m_UserAcceptedRename: 0 - m_Name: Button - m_OriginalName: Button + m_Name: + m_OriginalName: m_EditFieldRect: serializedVersion: 2 x: 0 y: 0 width: 0 height: 0 - m_UserData: 88632 + m_UserData: 0 m_IsWaitingForDelay: 0 m_IsRenaming: 0 - m_OriginalEventType: 0 + m_OriginalEventType: 11 m_IsRenamingFilename: 0 m_ClientGUIView: {fileID: 9} m_SearchString: @@ -519,10 +519,10 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: 281 + x: 285 y: 73 - width: 1093 - height: 534 + width: 1118 + height: 733 m_ViewDataDictionary: {fileID: 0} m_OverlayCanvas: m_LastAppliedPresetName: Default @@ -533,6 +533,7 @@ MonoBehaviour: - {fileID: -724036225730276578, guid: f2f77a1f959da1044b07ed06d554a69b, type: 2} - {fileID: 7066694291420368678, guid: 815797d8f652ff44b8dab25ff9a0cde3, type: 2} - {fileID: 4626693171902715256, guid: 62b28fe48d7491a4db5f941cb066e3ec, type: 2} + - {fileID: 1990495500464979279, guid: 9518d5f73cb8c844aa4165b745c672cb, type: 2} m_ValueSerializationHelper: - e00: 1 e01: 0 @@ -550,14 +551,14 @@ MonoBehaviour: e31: 0 e32: 0 e33: 1 - - e00: 1 + - e00: 0.94549483 e01: 0 e02: 0 - e03: -29 + e03: 31.649342 e10: 0 - e11: 1 + e11: 0.94549483 e12: 0 - e13: 180 + e13: 190.78792 e20: 0 e21: 0 e22: 1 @@ -598,10 +599,26 @@ MonoBehaviour: e31: 0 e32: 0 e33: 1 + - e00: 0.94549483 + e01: 0 + e02: 0 + e03: 24.649284 + e10: 0 + e11: 0.94549483 + e12: 0 + e13: 102.7879 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 m_PreviewAnimator: {fileID: 0} - m_AnimatorController: {fileID: 9100000, guid: 62b28fe48d7491a4db5f941cb066e3ec, type: 2} + m_AnimatorController: {fileID: 9100000, guid: 9518d5f73cb8c844aa4165b745c672cb, type: 2} m_BreadCrumbs: - - m_Target: {fileID: 4626693171902715256, guid: 62b28fe48d7491a4db5f941cb066e3ec, type: 2} + - m_Target: {fileID: 1990495500464979279, guid: 9518d5f73cb8c844aa4165b745c672cb, type: 2} m_ScrollPosition: {x: 0, y: 0} stateMachineGraph: {fileID: 0} stateMachineGraphGUI: {fileID: 0} @@ -726,8 +743,8 @@ MonoBehaviour: m_Tooltip: m_Pos: serializedVersion: 2 - x: -31715 - y: -31970 + x: 285 + y: 73 width: 1118 height: 733 m_ViewDataDictionary: {fileID: 0} @@ -824,12 +841,12 @@ MonoBehaviour: layout: 4 - dockPosition: 1 containerId: overlay-container--right - floating: 0 + floating: 1 collapsed: 0 displayed: 0 - snapOffset: {x: 0, y: 0} + snapOffset: {x: -241, y: -173} snapOffsetDelta: {x: 0, y: 0} - snapCorner: 0 + snapCorner: 3 id: Scene View/Camera index: 1 layout: 4 @@ -964,9 +981,9 @@ MonoBehaviour: m_PlayAudio: 0 m_AudioPlay: 0 m_Position: - m_Target: {x: 91.277435, y: 6.8132505, z: 128.8896} + m_Target: {x: 92.27141, y: 15.105467, z: 140.35686} speed: 2 - m_Value: {x: 91.277435, y: 6.8132505, z: 128.8896} + m_Value: {x: 92.27141, y: 15.105467, z: 140.35686} m_RenderMode: 0 m_CameraMode: drawMode: 0 @@ -1013,13 +1030,13 @@ MonoBehaviour: m_GridAxis: 1 m_gridOpacity: 0.5 m_Rotation: - m_Target: {x: -0.044907745, y: -0.954333, z: 0.22779709, w: -0.1883778} + m_Target: {x: -0.012345448, y: -0.9739339, z: 0.21983707, w: -0.054695472} speed: 2 - m_Value: {x: -0.044562746, y: -0.9545449, z: 0.22784756, w: -0.18693246} + m_Value: {x: -0.012345327, y: -0.97392434, z: 0.21983492, w: -0.054694936} m_Size: m_Target: 1.1898067 speed: 2 - m_Value: 1.189896 + m_Value: 1.1898067 m_Ortho: m_Target: 0 speed: 2 @@ -1037,7 +1054,7 @@ MonoBehaviour: m_FarClip: 10000 m_DynamicClip: 1 m_OcclusionCulling: 0 - m_LastSceneViewRotation: {x: -0.012508444, y: -0.95910054, z: 0.27974868, w: -0.04308273} + m_LastSceneViewRotation: {x: -0.0078941835, y: -0.9656885, z: 0.25792852, w: -0.029559806} m_LastSceneViewOrtho: 0 m_ReplacementShader: {fileID: 0} m_ReplacementString: diff --git a/Server/.idea/workspace.xml b/Server/.idea/workspace.xml index ed3f638..a256311 100644 --- a/Server/.idea/workspace.xml +++ b/Server/.idea/workspace.xml @@ -91,7 +91,8 @@ - + + diff --git a/Server/out/artifacts/Server_jar/Server.jar b/Server/out/artifacts/Server_jar/Server.jar index a974c0dd036f80a720827d9830747996ccb38a78..1c7cd0a6150ae27af6a2a963124cb075f1f38382 100644 GIT binary patch delta 7539 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 MiAR|JHxi`ZKOT{SD*ylh literal 1657 zcmZuyOH&+G6#nkKdZz7!feZmb;$VmwCJB%DOu(Q_h#?suG7}Urnr7w(IyBv5PdCPm zD_3q@m{ggK3pZJ~iWLZ@R?3wN|A2e*FN|gUZqEQy1zmL?=W);XopbKo`SZVDo&b0q zpQq4=x7Bn`P3LtS!%ghD++m`whp` z$=_2vds)M@jts_QFI>nIvYFJg4ItKF~0)p(LPhnD#(jdK=OcNES=sZcM;X zde3#&3vN{kbQEu!8|JWWIxE8^-?N+*`Xu~St3EKoO>v%{N;7UbmVZIuc&?$^3Aq3G z;DSJ`5xlKvIdV2wUzT3kT((0vw_@50re`U+sf;N&GMjcB=@o3VUY8V;A<)1m(W74A zaL%dFqQ)^TaH!;)m9-hO76xI#m~zPtyo$VJDWsHQKBSTpXq$2>wp(X%Gtysms~XA% zPT;zM;}|gTGO`Bx@ru$78CbxF8a^_xh>tZa8TbS@G<<5{Gu$*_Vp&7QKo!I|vRAvQ zI~7^;E!Qz{3o8azVF`5Y*&DT;3@p2<8X_3?Hr5Q-SQpT4WEI;iPh=HQS>u=@cRuoSl8ehsNp8tq1*>XcNhe|We=C>$}-p2Sbk*|=*#Wz&Q9M{DRr|_k##nD zgspCGHg<5SSg7&`OfdUe;0yFLa7ZfB(*H6G}ZO&4v8LM z6NrD|Sw4Fe&n->1COxW>PVFR3UQr?mbne1j~xf=wBYlG)D#=rL6&dIF}@wqbXwh8fGe+Vxbia765%+3 zS0QkcyUUbgTr>Gon-KZan~3DkY$BR}jM&4_JI6UeZ{QpTIUfxpWRS;cN<684B(yVi z3^k&PTZo5VPov|#`9~1jh(Gxe-!!+qXaB&RZ6tQZN6=&j$-6(Gzg3rke)m2OQx)Ne zZoz1=9!l%KB^RUVugZ(DXn8Ttk>Jock{oFzq?MEo#Ze|kH1jD-?+Y8*a*JEFh;_dPn#tkWwcIc{~{uu mp*Zmm;*%Odo-t$;uhAIc-^v?YWBf~a3#Yi#8K93VzyASjc!HP! diff --git a/Server/out/production/Server/Room$2.class b/Server/out/production/Server/Room$2.class deleted file mode 100644 index edc1ff8aac321d532e0ff2c3a92f36246bd1165d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2974 zcmbVOU2IcT9RHnr?t0hD-RK5`v55i>>;_|HV+iu0ZfrQ%2drhIjwxMx-O9Rlwzqt$ zKp?)DkPv+^#y}uSF&d2qwkZalFhn1WPcy?9m1uk*`ald}4Df&M?d_UnF_R|e{Qu|w z{dG?7w-3I$0$??cIZ=#fR4l-H6>G6U!A1c$Iq@u>Q}I0NRLH1TuvtNa3KfmwyhX(e zXcB^3h2S<7&1ezFRGAkqnngr2nkdjC!&uavN{Vjn(GdeT(jbD|kc05geu3i7d;i8C;Y8 z+IsftK`LY6B#AmDeOu18192O_CV$dvznL$?GRS5Ap!mCAcCVdzwjf?zTpr(*c1Pc7j{L<~F) z^w!C&S9z$&YC7w!g5!uK4Rc&eGBJs%X)~#rc`Y{6rMobdNAc{BhYgxkGp?-4*Lc=W z`mGVwwo6}=9YmAJrI_xc8MRlBhD7w_zP?Wn_S03%ioRA@aoIg<_UiF{dYtNM8(uB= zB^mzY;7}fPYe>>z>5xiDkLZSOjZsm$A7;_hvgI9EMDO1MkVP<;OWZMf7A0B>@i*5 z!A8L4&<56W8M5Cx=ag1ogkuQGFmhW`$ZNd})n7S`Syx@^*SW1LDuwpfBAG&*EyD40htDsUp7Qx~D&-oV-@$!;g;p*tmpHh@$z>j$+&2W* z37MrHrc%;RGxnf7qK89Pv<2y6724UHg(grwf;pX2g4jMyf;r^gA{UA@DV-T6`B949 znPT5-mT}88UR;k<$MY%n&J-8hrZb)?;mo7|G{x3UF}=f#zF|5Cxpt3c?%+ZSKTdJ* zALVh{4*t)WolhY-a~J9(y08bUw0Z=2moPUq;cvBSRAhm9LzthM*i27@h9~J6aKgh! z`4~Y?PY>`LeH(%PELHli)Nqt!PLR|wJcZ-%;4ReRB-Y~;8gUx$<3oIc3;2Tee+a*a z&+q^jSw2SCTwG?Igm>c#+kvM%itQvAg(L+K5r9 z9=}SB_*3e@E$Ll?r}39`7Psk%yCV%_T)Ip6L)_;Qto?!ZmBuKx10bNy}X#fBK diff --git a/Server/out/production/Server/Room.class b/Server/out/production/Server/Room.class index 25ab52cd7688db5224a29a393639831292e13f3d..8c66bcf41ec718dfaeed8ca93365575e235bfbfb 100644 GIT binary patch literal 5192 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 TLfsAAz*nCBN1yNxa{v7sB4dGe literal 5390 zcmd5=d3;pW75?s|yd&ui62DW-J0h`>o zN9Ju_d=+1Fqt^pB?sa3k8#}!CI(E9T%Z>X4<$f6+@M1R}H1LptJzh*hpBGcn@5Wx4 z_sOt74-aEN*gWE)c8|(%K!(S>cpOg%(=70Gb8yVM^qO_d?ZU&L!BeukF~{M^JZ z@H(A3q(CY^GZs{e1;3QxSF|;CR+=i?YI6EDUN`X@tTph4iQnQ)6Tib-Cf>$7CVnr& zAMlQWKbrUx{%qne_^W}xnfN>YVd7o2c{^L#r3D3n!?w<(J;# z@^^LFEnw;}{jK~sCDJ)U!n~DM;yg+hlN3gm9gj;SBW5uH0z^13mwnwTf2`HIJZVJ& z*6bV^N5O|>SX|a{JbXwgcOsezM=JA=wwDTZiS^+K9g?e1x}S@?vYm?5Cpirl0o_q1ouD zbu2mdT-D9rm8>sY$S}AH&b6_S<~o?ITcZ(N13Wevl)jqy3n<`*Hu07F8X zcuD&sL4PbLq2Qi*>b|J;(s`|Q4eXw2U32l%c;w|~LezFAb?}fJy zc|J!UbQv5zPamAVeK2L3+y~8PJc|52jPUKj2*&{O+Y3+1D=gTHk*xyJZAf7b#F@bv zmBDdka8i&deNYrVnxe<_VeA0Lwfm+_-iwo)$#Cpc&uA3&V|*|4=H1l(dThr|6vKfI z>fgc#9&jdY8A%II;S;rlXQlMx>4Z+=8?YRe@S&QkCO$DghUw@+1+F3VdYpqzn1wC$ z%XV_xN$>2!CHxCg=!BbCMhb`c376tB&a#p?@UGxWBB8<0^;l>}$iQJ>xq*OzAd~@% zj>ZbCO!-{j02jRuZF}0Ajyc6N&~;!dw#i&v`7Ca=7n56k?R%i>moWwpqGSLQ=$cat zOZ#!!KAg_6@C*)<_h4e-hYHW^$0PxjaUiuO>v9go{qXf;azCaFU~2mSrnNKF)AypH zd1{8?j1-Bk2Q#>pQ~OaxE_qY;<17tJdg1BORPT{?!gSH?z}@QYtlsJd$J`Pdx>c<$ zF1Z`~Wm8N(i30;pVn>S7vvP?2OEAmh9Xm912_x4u%YF z89a`*etcM13y+D80(U>EAH?i_)Ku#tsM=ZNbhz7!oI1&!GhJg`MNWEkOp%i-eT>T) ztZM6V(Tq2RiLGCelPr5NP_6f(KMNhwnsWbtwRTqPJr317c%8&%Fe&OUm~vpQW2Qbv zFWHLor;O1n#V6S~I2i}Ah(GbIxYqXUu#WE0>8brJw*|YI`Y)*))CSB^8@0LGJj~G+ zYTLA4%t@Eu0hSY(=LS}x5Sf!k-&O24R@#t+@&h9LshZ7R^cHv3y-O4 z98@)Y$IYjNMs>DYpqf;(YEcW-617Mz<7$;^ zWod4;Ld#bxwNWahO;DYhk8_2JXmeFeo2Q~$ovP6qRJFEHU8Sv1>$N*MZ&N*5uew^h zS6ye9dJjJ**RwS&rfv>4-W>?Bt!U~pwi8*oR1<3WM(l*HS}+q~uAJJ~%&DejPBnMt zlwX@y(GxA?_k_BM{vbbX1zSy&&4-`R+V)I4;p%e2l-)#DW7J`I)FIsS9-N1fuMWej z2Ib>D#((NP6dgeUbi2pI74J<034IXPzTY{iocuQkuYsge@1miWRMMEPz}i$}(w0&u zHaWFSGRaZ-49-n0viVc6{=Z2ercRSE&@-I$p^ossadKujIX@^TSB8`8gK%=xjHiKl z`@yg0t&kR&H-0}pqVfME*g(&f+UZfOqE~n_wjcAvBfHuC!5h7S_fsP_;ug-E`4RFe z=hxIkH3`M)9Cf~GsFEoSmjA?BHKy*rl5{qA@_Wz4J_ zKAq)}>%;dY9`a!iuFYEFNU7-?zw|%K9?lXb11-6ZPo_*ThWx3WSR`-2XNDnGCqPV< VKWm3<1J2`I$o(|V@@HIX`Zr}Lz7qfd diff --git a/Server/out/production/Server/Server$1.class b/Server/out/production/Server/Server$1.class index 95e4757c5128b73961e274460850d17e2518ff92..19bc059f2db6660b1853d979f123c4c5a77c4d51 100644 GIT binary patch delta 1238 zcmZXTZBSHY6vuzhF1ydY*Q>$;!UiNrnV^P6WxSY)Xki!y1wyHmobIx;~|Np$)bAMj) zTS5B!zrLIUZr}@>3bvW8)1i_s&3z8{v)v(!9h#lSc)&puF(l&?ZK& z!y@{Or{7^AyNx#BFi6}c!H{N;!xFkIl12_&q?`s(MjZCC&tkvDLx$mD0~ysk;!wt; z#uzhnX^Y1k4scNOxWyBiLz*WwPfgAZs-TK0@|(S{{kf{ntMC=&iu16PAc<@0BtHRp z9lolt0$lgd*U!tlpl8Us9q=rUP zZK-55GU#%Q=gg(!E+;tY;&IC5d0tRtwI&jSitK-&1Ce;FN+5mlnC3;7ml!vwmt9`r zRinM;a+=pQZ@9e4TbAZ+mv?yAtM?Z#2pFbPm-m?P;{Kvd@AHA?jLV07q)_W+iSuJV zaruMe=I33yTH4b$+?|NWqur@! zPucX3{yCp*r4pC&^-c%F)87PJ)lx;yf5kM#Q_)y7sj!A3$>FG&-i2U6MH8hmIF%?? z;>*r9jRld?Wf?A?tTkLG-s`=3t8`tp*g>)2W*IzW1k8=a+{jvyMl(1mQ2aFpB@{mh z!U2`?#;xj-8oA|{WjIdCGWcb(#^k8l`_*bIIme>TaA1nXGh}B7hpvz^yJC4%e52uFSBs)~Y;ZITQe-Hwg2ZVKhMIjo#CnpHhACK zYtwe<>RFa|OyF*vB0sc3_$MW+fQqSpu8|x~tx1YyUq^rja%iN4&6LwD{c7PZw$Vu! zJK4^t?5EhpS9Eip-F!!!pGffw`?$z{erHr=F{VNsP|G=}Do7tvJ2wt?Bppy_u%y+=Ur>=6TLN=bn4M=bZ07&!4y4tj^u| z_u4PO{ao@9oUxU!;234EYheA-LHAcrH%vE zc-g|fqRD9vYF^bGn)o%T8obd&JeJBT%EH-5bf7IV*b&*4h!qbVmOi9 zsp>Vu>ogl0S!q~7gQ1D${54O_{KJMfc+=W%<^S;1_KfkiHQq5C;a$Uf95o!{eMQN( zbULZ1*b^CvG$kUb{-$ttD4y!qd|=3P+(w-+e8@*u``B=jQ<_fKj?WF}xuDQJ0Sg>ZR0lG{(P%7_=^IWYMg!5ISR@kKDOehx3Rk~?kG&Y!xr&9{&a%IV+XXX6{)>^(dC(si?3tf~>-+%#%mHChigMz4^0FVBLLU zd&PoBStYW%c%oe9?m@Ajycj3Fu$pEYB@pK&!Uffr|HoNXWuq*r#W*pmFUhz0!ojO7 zDd4ZXRm3C}y8Id05>_r?=p^4GI)P6rZh)X6-QM)$5aEy zRfN-$>6D6b#xj=^I9C9Nc!-cB%t*>Lti>xqi&@8dd;&Q}3lGcBIYpL7L~~fE+S$NH zp|Do9(#j?&y-ux{>j=s3EF{lfg*3)va+OL7w=H?6MJd%hp?OlXS?^?vrVajP|Fm@F roAb;%G*8J3(*o$3@xlhp(@4hl;>B$hijb^fq3Hq9T*(%cRi6I) diff --git a/Server/out/production/Server/Server.class b/Server/out/production/Server/Server.class index e5f47dd6bca5e1e05f052652c85cc92f2a039c96..554db26e768dec923e690e4cd574605aa7c0c6cc 100644 GIT binary patch delta 1366 zcmaKr+f!Rr6o9fmDG(qON-5qVCbaQFNo|#4FIX|OT4*s9F9D7aNC87Yyrycs zYZXt6whz8JI8Gl*tBIPKj=pyK7wD@G&iDs7Dj^b zNY<95&LvN$H)*oy{Nl+Ktbv*N+^F4~$=U|N0Xw%~=XU5cio3X5v6C*vAs$jB*kw@b zR+!IcvhhRdxd}zq~cX}DPH50$?J;KykXF|!8DN1Wv0jX&1bS>c24mo zZy8R|+Z248cTC<@yhpba_cjL;yswCJr$N*??(I+?a7HTc&t~lDymQeTDXwh5mThLNN80uc-SpAgjeilHpvrfq(z9fqAQ0B5+LcF59lUHqPP{9egr;t7wNJSZFTesu@V&(>{)ZS}NG)pPUcnWe!M>S8V5Ag)`*716HK z9%JRk^)l_L*k$f05$)F!3wZ22{%DDcWbBe8U!#s<$^3KqBUh;6OS!m<(!#3fwIaYp z`uLV(lsUmw7d(o$AY2LAc-Z9~Ugz~OB;6$ivQKWPUxfFdd#K0vC#K0^qpkXPe1EXT zBoT2LwU|E5rpeZ>xzcq8-KuMk%EwXts4O`>z@R?u)T;39TKxYEme^w) bcViE$aN>VsrSOnj{xNpQXvwK&8Rh#MWS{XE literal 3274 zcma)8`*Rc575-MXyzBL18`%Z|B*>HyArs3`Lk%VrV?u2rgNq!3d6X>D+Fp=$-Q5-7 z5b|h}K9V+%KJskSmOkjayezvoB`K4c&UE@$^r!v@o#`~8-`!o=G9paYC+tiqcuK)}F@IXc1w13;SrseroG|&kf^Ue)3kqIT@e;nN;#>H( zg73(9S;i|W*5bP=+VMRxyei{06|dusx?OQ1=2N$8;JNT)oB!s@;a&chjPKXu2l%0i zF8oL!d{e<&0{h!C-jVUH1Z~i=45vS@yRPAK>Ke`&!^zm$(}pKudHR%oMo(FWm&#OZ z^h$_2wq2k?OCVA7%zSDXZ_=2)w>L$>*)@|ta?UavOjMc7AH#sNk8U34RmQq#?!N>8CxGE zGeAP~xIyCRzBoQ`u{N>c=xzy;$^StK5iwB&PhwlfVP*r*(z98^b=P%ub&>8wImW(b zY?rX{csy`1?z3#<+T(-6@l8EjIyZN3>D;!pv%4ogeBj_nyr*l+ zCJleWpXu`Pc#sD1v!*v8Pb z=kY;HkgzSRL|~6?8rHpp^_8_8xUfh(TwTO-qm`#X)(C<&hW^-Kb7f|0J=rlmot~&onJ$b$A0bG9ZJL>C5FDwhaj@Dites z2&Z*kyJ9`)r31F>?bi#8&g%JoQPt-Jz~z-8I9RkS(VKh4PUAxI4(Z+meQ|UvCt5H2 zJd?XUIGrKLPUwy+t}KrNx|8b<<^-=io;lH%=^tcwTp1o;As@=olQoH>yFYthplM(c zdb(-3j~P>UH2-qK9ASRgW5c?~Yl#f>RC>0U+r_$X&zK@Govw&V$Q5oxu$N;a#lW93 zwP@zgloqN1TA+vl-+aC3l%dhJ)Dn++74j^U66!B=Ci#}?e60sKK8AEC|2(Y=jlSe{ zNF61pAEBWHEu1ZR;wl>F&_ra-v85%%X3@ei*2;mxu~-|25|)*)d;xHbP=WOX{t%WU zNr)Xj=w-n{A!r_nA?zm%Np!&w&c9LTOI=_*R*WuPK@y92ALn@6o#$ouH19XTjc`-!596!8oeQDE2f0^|Nauf$mXVBBx|`Y5@KKseco=qHe69FgKp|3&nFSS90V zvw~wd9{QW&TZA|&pb20>rU&`iP?6zLd`)CHl~3TwD&^~ld_H9zC-0&xeGX+P$j&Ec iyAPTy#=2**^OdC~sL%QC7>uT 30000 && players[p].lastTimeSendTimeOutCheck != -1) - { - server.deleteRoom(roomCode); - } - - players[p].output.write(new byte[]{126, 0, 0, 0, 0, 0, 0, 0, 0, 0}); - } - } - } catch (Exception e) - { - - } - - if (System.currentTimeMillis() - timeOut > 600000) - { - System.out.println("[" + Server.getDateTime() + "] Room " + roomCode + " closed due to timeout!"); - server.deleteRoom(roomCode); - } - } - }; - - t.scheduleAtFixedRate(tt, 0, 10000); - } catch (Exception e) - { - } } /** @@ -110,7 +69,7 @@ public class Room playerCount++; //LOG - System.out.println("[" + Server.getDateTime() + "] " + client.name.replace(" ", "") + " joined room " + roomCode + " successfully as player " + i); + System.out.println(client.name.replace(" ", "") + " joined room " + roomCode + " successfully as player " + i); //creates a thread for the connection with the joined player Thread t = new Thread(new Runnable() @@ -128,7 +87,7 @@ public class Room input = new DataInputStream(players[player].socket.getInputStream()); } catch (IOException e) { - throw new RuntimeException(e); + server.deleteRoom(roomCode); } while (true) @@ -267,9 +226,6 @@ public class Room } } break; - /** - * //the timeout check action - */ case 10: for (int i = 0; i < players.length; i++) @@ -283,10 +239,8 @@ public class Room } } break; - case 126: - //!!server action!! - players[player].lastTimeSendTimeOutCheck = System.currentTimeMillis(); + server.deleteRoom(roomCode); break; } @@ -344,7 +298,7 @@ public class Room //stop sending the name................................................................................ } catch (IOException e) { - + server.deleteRoom(roomCode); } } //if the player should be a bot @@ -366,7 +320,7 @@ public class Room players[j].output.write(send); } catch (IOException e) { - + server.deleteRoom(roomCode); } } } @@ -384,7 +338,7 @@ public class Room } } catch (IOException e) { - + server.deleteRoom(roomCode); } } } @@ -448,6 +402,7 @@ public class Room try { threads.get(i).interrupt(); + System.out.println("thread " + threads.get(i).getName() + " stopped!"); } catch (Exception e) { } diff --git a/Server/src/Server.java b/Server/src/Server.java index 0a6f139..7edd4ec 100644 --- a/Server/src/Server.java +++ b/Server/src/Server.java @@ -19,27 +19,13 @@ public class Server private final Server server = this; //A Formatter for date and time log outputs - private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); - - /** - * returns a date and time stamp - * @return - */ - public static String getDateTime() - { - return dtf.format(LocalDateTime.now()); - } - - /** - * tries to delete a room by its roomcode (will be only called by a rooms timeout for now) - */ public void deleteRoom(String code) { rooms.get(code).closeRoom(); rooms.remove(code); //LOG - System.out.println("[" + getDateTime() + "] Room" + code + " successfully deleted"); + System.out.println("Room" + code + " successfully deleted"); } /** @@ -54,19 +40,19 @@ public class Server serverSocket = new ServerSocket(8051); //LOG - System.out.println("[" + getDateTime() + "] Server started! IP 185.245.96.48 PORT 8051"); + System.out.println("Server started! IP 185.245.96.48 PORT 8051"); //a endless loop for accepting new connections - while(true) + while (true) { //accept a connection from a client Socket tempClient = serverSocket.accept(); //LOG - System.out.println("[" + getDateTime() + "] Client with IP " + tempClient.getInetAddress().getHostName() + " connected!"); + System.out.println("Client connected!"); //create a new thread for the connected client to free up main thread resources for new connections - new Thread(new Runnable() + Thread t = new Thread(new Runnable() { @Override public void run() @@ -90,7 +76,7 @@ public class Server input.read(readData); //check for the incoming actions - switch(readData[0]) + switch (readData[0]) { /** * !!!!!!!!!!!!!!!!!!! 0 is not used because of possible empty arrays read in because of inital connection errors !!!!!!!!!!!!!!!!!!!! @@ -109,7 +95,7 @@ public class Server rooms.put(new String(code, StandardCharsets.US_ASCII), room); //LOG - System.out.println("[" + getDateTime() + "] Room " + new String(code, StandardCharsets.US_ASCII) + " successfully created!"); + System.out.println("Room " + new String(code, StandardCharsets.US_ASCII) + " successfully created!"); break; //in this case a player wants to join an existing room (even the room creator will join via this method) case 1: @@ -134,31 +120,35 @@ public class Server name = name.replace("?", " "); //check if the room exists - if(rooms.containsKey(roomCode)) + if (rooms.containsKey(roomCode)) { //create the reference to the client Client client1 = new Client(output, input, client, name); //move the client to the room rooms.get(roomCode).addClient(client1); - } - else + } else { //room is not available, so the player should automatically go back to the start menu (kick action) output.write(new byte[]{127, 0, 0, 0, 0, 0, 0, 0, 0, 0}); } + break; + case 126: + Integer.parseInt("crash"); break; } - } catch (Exception e){ - //do not end the program on any main thread errors (unwated connection losses), because other players wont be able to connect to the server + } catch (Exception e) + { + System.out.println("Client disconnected!"); } } - }).start(); + }); + t.start(); } - } - catch(Exception e){ + } catch (Exception e) + { //do not end the program on any main thread errors (unwated connection losses), because other players wont be able to connect to the server } } @@ -166,6 +156,7 @@ public class Server /** * Generates a ascii byte[] room code * please see the ascii table + * * @return */ private byte[] generateRoomCode() @@ -173,17 +164,17 @@ public class Server //buffer to store the code byte[] code = new byte[10]; - for(int i = 0; i < code.length; i++) + for (int i = 0; i < code.length; i++) { //for the first 5 indexes user numbers (1-9) - if(i < code.length / 2) + if (i < code.length / 2) { - code[i] = (byte)(Math.random() * 8 + 49); + code[i] = (byte) (Math.random() * 8 + 49); } //for the last 5 indexes use letters (A-Z) else { - code[i] = (byte)(Math.random() * 25 + 97); + code[i] = (byte) (Math.random() * 25 + 97); } } @@ -191,7 +182,7 @@ public class Server String roomCode = new String(code, StandardCharsets.US_ASCII); //in case the room code does allready exists, the roomcode generation will be called recursively - if(rooms.containsKey(roomCode)) + if (rooms.containsKey(roomCode)) { code = generateRoomCode(); }