diff --git a/unity/Assets/Resources/ListElements/DiscordUser.prefab b/unity/Assets/Resources/ListElements/DiscordUser.prefab index 001d00c..aacd80b 100644 --- a/unity/Assets/Resources/ListElements/DiscordUser.prefab +++ b/unity/Assets/Resources/ListElements/DiscordUser.prefab @@ -289,6 +289,6 @@ MonoBehaviour: m_GameObject: {fileID: 7307195437051520398} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5030a557c7968c4e6bb3716620eb9a0d, type: 3} + m_Script: {fileID: 11500000, guid: 3bf7c180e77c80e4487e7ef2d20e372f, type: 3} m_Name: m_EditorClassIdentifier: diff --git a/unity/Assets/Scenes/MainMenu.unity b/unity/Assets/Scenes/MainMenu.unity index b30c92e..2e19f8a 100644 --- a/unity/Assets/Scenes/MainMenu.unity +++ b/unity/Assets/Scenes/MainMenu.unity @@ -920,8 +920,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 45, y: -10} - m_SizeDelta: {x: 200, y: 25} + m_AnchoredPosition: {x: 59.79, y: -10} + m_SizeDelta: {x: 185.21094, y: 25} m_Pivot: {x: 0, y: 0.5} --- !u!114 &462409823 MonoBehaviour: @@ -1359,6 +1359,194 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 603105757} m_CullTransparentMesh: 0 +--- !u!1 &657502031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 657502032} + - component: {fileID: 657502034} + - component: {fileID: 657502033} + m_Layer: 5 + m_Name: Votes + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &657502032 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657502031} + 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_Children: [] + m_Father: {fileID: 1783333716} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 154.99998, y: 11.99999} + m_SizeDelta: {x: 95.000015, y: 18.999996} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &657502033 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657502031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 102 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '## votes' +--- !u!222 &657502034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 657502031} + m_CullTransparentMesh: 0 +--- !u!1 &665096228 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 665096229} + - component: {fileID: 665096231} + - component: {fileID: 665096230} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &665096229 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665096228} + 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_Children: [] + m_Father: {fileID: 2072964505} + 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 &665096230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665096228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Ready +--- !u!222 &665096231 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 665096228} + m_CullTransparentMesh: 0 +--- !u!1 &700798141 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 700798142} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &700798142 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 700798141} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 354.69717, y: 174.50136, z: -13.586394} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &735549588 GameObject: m_ObjectHideFlags: 0 @@ -1754,7 +1942,7 @@ MonoBehaviour: m_GameObject: {fileID: 924830818} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: be4c17fe36a7a91fcb64147c5e222242, type: 3} + m_Script: {fileID: 11500000, guid: 417dad0f3302e6242964f2348e906d9d, type: 3} m_Name: m_EditorClassIdentifier: --- !u!4 &924830820 @@ -3442,6 +3630,85 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1687485368 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1687485369} + - component: {fileID: 1687485371} + - component: {fileID: 1687485370} + m_Layer: 5 + m_Name: GameID + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1687485369 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1687485368} + 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_Children: [] + m_Father: {fileID: 1783333716} + m_RootOrder: 4 + 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} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1687485370 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1687485368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: New Text +--- !u!222 &1687485371 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1687485368} + m_CullTransparentMesh: 0 --- !u!1 &1695705189 GameObject: m_ObjectHideFlags: 0 @@ -3805,7 +4072,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 5, y: 8} + m_AnchoredPosition: {x: 5, y: 11} m_SizeDelta: {x: 150, y: 25} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1751519030 @@ -3884,7 +4151,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0.5} m_AnchorMax: {x: 0, y: 0.5} - m_AnchoredPosition: {x: 5, y: -6} + m_AnchoredPosition: {x: 5, y: -2.9999974} m_SizeDelta: {x: 150, y: 25} m_Pivot: {x: 0, y: 0.5} --- !u!114 &1771254982 @@ -3962,6 +4229,8 @@ RectTransform: - {fileID: 1751519029} - {fileID: 1771254981} - {fileID: 462409822} + - {fileID: 657502032} + - {fileID: 1687485369} m_Father: {fileID: 513979424} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -4015,10 +4284,10 @@ MonoBehaviour: m_Calls: - m_Target: {fileID: 963550926} m_TargetAssemblyTypeName: MainMenuController, Assembly-CSharp - m_MethodName: ConnectLobby + m_MethodName: Vote m_Mode: 2 m_Arguments: - m_ObjectArgument: {fileID: 1751519030} + m_ObjectArgument: {fileID: 1687485370} m_ObjectArgumentAssemblyTypeName: UnityEngine.UI.Text, UnityEngine.UI m_IntArgument: 0 m_FloatArgument: 0 @@ -4078,7 +4347,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &1785051993 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4157,6 +4426,7 @@ RectTransform: - {fileID: 1002690558} - {fileID: 1221064085} - {fileID: 211623664} + - {fileID: 2072964505} m_Father: {fileID: 0} m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -4262,7 +4532,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!114 &1849231261 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4899,6 +5169,138 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2007855046} m_CullTransparentMesh: 0 +--- !u!1 &2072964504 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2072964505} + - component: {fileID: 2072964508} + - component: {fileID: 2072964507} + - component: {fileID: 2072964506} + m_Layer: 5 + m_Name: ReadyButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2072964505 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072964504} + 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_Children: + - {fileID: 665096229} + m_Father: {fileID: 1785051996} + m_RootOrder: 7 + 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: 204.22, y: 50.8} + m_SizeDelta: {x: 123.79576, y: 28.873802} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2072964506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072964504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + 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: 0.39607844} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 0.4} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.4} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 0.4} + m_DisabledColor: {r: 0.31132078, g: 0.31132078, b: 0.31132078, a: 0.4} + 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: 2072964507} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 963550926} + m_TargetAssemblyTypeName: MainMenuController, Assembly-CSharp + m_MethodName: SetReady + 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 &2072964507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072964504} + 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: 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_Sprite: {fileID: 0} + m_Type: 1 + 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 &2072964508 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2072964504} + m_CullTransparentMesh: 0 --- !u!1 &2074064734 GameObject: m_ObjectHideFlags: 0 diff --git a/unity/Assets/Scripts/Client.cs b/unity/Assets/Scripts/Client.cs index 7ad0b08..0a95170 100644 --- a/unity/Assets/Scripts/Client.cs +++ b/unity/Assets/Scripts/Client.cs @@ -2,6 +2,7 @@ using Grpc.Core; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; +using Utilities; public static class Client { private static Connection reference; @@ -33,6 +34,8 @@ public static class Client private string connId; private uint? lobby = null; private string address; + + private Modifiable lobby_status = null; public Connection(string user, string address) { channel = new Channel(address, ChannelCredentials.Insecure); @@ -87,6 +90,70 @@ public static class Client return l; } + public Lobby.LobbyStatus GetLobbyStatus() { + if (lobby != null) { + if (lobby_status != null) { + var hasNew = lobby_client.hasNewStatus( + new Lobby.LastStatusTimestamp { + Time = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(lobby_status.GetLastModfication()), + Lobby = (uint)lobby, + }, + new Metadata { new Metadata.Entry("client_id", connId) } + ).Value; + Debug.Log("HasNewStatus: " + hasNew); + if (hasNew) { + lobby_status.Set(lobby_client.getStatus(new Google.Protobuf.WellKnownTypes.Empty(), new Metadata { new Metadata.Entry("client_id", connId) })); + } + return lobby_status.Get(); + } else { + Debug.Log("Getting status"); + lobby_status = new Modifiable(lobby_client.getStatus(new Google.Protobuf.WellKnownTypes.Empty(), new Metadata { new Metadata.Entry("client_id", connId) })); + return lobby_status.Get(); + } + } else { + return null; + } + } + + public List GetLobbyVotes(uint game) { + Google.Protobuf.Collections.RepeatedField votes = GetLobbyStatus().Votes; + var gameVotes = new List(); + foreach (Lobby.Vote vote in votes) { + if (vote.Game == game) { + gameVotes.Add(vote); + } + } + return gameVotes; + } + + public int GetLobbyVoteCount(uint game) { + Google.Protobuf.Collections.RepeatedField votes = GetLobbyStatus().Votes; + var gameVotes = new List(); + foreach(Lobby.Vote vote in votes) { + if (vote.Game == game) { + gameVotes.Add(vote); + } + } + return gameVotes.Count; + } + public Lobby.Vote GetSelfVote(string player) { + Google.Protobuf.Collections.RepeatedField votes = GetLobbyStatus().Votes; + foreach (Lobby.Vote vote in votes) { + Debug.Log(vote); + if (vote.Player == player) { + return vote; + } + } + return null; + } + + public void Vote(uint game) { + lobby_client.vote(new Lobby.SingleVote() { Game = game }, new Metadata { new Metadata.Entry("client_id", connId) }); + } + public void SetReady() { + lobby_client.ready(new Google.Protobuf.WellKnownTypes.Empty(), new Metadata { new Metadata.Entry("client_id", connId) }); + } + public void LeaveLobby() { lobby_client.leave(new Google.Protobuf.WellKnownTypes.Empty(), new Metadata { new Metadata.Entry("client_id", connId) }); lobby = null; diff --git a/unity/Assets/Scripts/MainMenuController.cs b/unity/Assets/Scripts/MainMenuController.cs index 96d9d00..6b82366 100644 --- a/unity/Assets/Scripts/MainMenuController.cs +++ b/unity/Assets/Scripts/MainMenuController.cs @@ -26,6 +26,8 @@ public class MainMenuController : MonoBehaviour { private List usersInLobby = new List(); private long discordLobbyId = -1; + private bool ready = false; + void Start() { for(int i = 5; i < 0; i++){ Debug.Log(i); @@ -127,6 +129,25 @@ public class MainMenuController : MonoBehaviour { ConnectLobby(codeText.text); } + public void Vote(uint game) { + var conn = Client.GetConnection(); + if (conn != null) { + conn.Vote(game); + ReloadMenu(false); + } + } + public void Vote(Text gameText) { + Vote(uint.Parse(gameText.text)); + } + + public void SetReady() { + var conn = Client.GetConnection(); + if (conn != null) { + conn.SetReady(); + ReloadMenu(false); + } + } + public void ExitGame() { Application.Quit(); } @@ -169,7 +190,7 @@ public class MainMenuController : MonoBehaviour { }, "Invite a Friend", Resources.Load("ListElements/DiscordUser"), DiscordUtils.GetFriends().ToArray()); } - public void ReloadMenu() { + public void ReloadMenu(bool reloadDiscord = true) { if(mainMenu.activeSelf) { DiscordUtils.SetPresence(0, 0, false, "", ""); @@ -191,15 +212,18 @@ public class MainMenuController : MonoBehaviour { } serverName.text = Client.GetConnection().Name(); serverMenu.GetComponentInChildren().Reload(); - if (discordLobbyId == -1) - DiscordUtils.CreateLobby(10, (lobby) => { - discordLobbyId = lobby.Id; - //DiscordUtils.GetLobbyMetadataKeys(discordLobbyId); - }); - else - DiscordUtils.UpdateLobby(discordLobbyId, 10); - - Debug.Log(discordLobbyId); + + if (reloadDiscord) { + if (discordLobbyId == -1) + DiscordUtils.CreateLobby(10, (lobby) => { + discordLobbyId = lobby.Id; + //DiscordUtils.GetLobbyMetadataKeys(discordLobbyId); + }); + else + DiscordUtils.UpdateLobby(discordLobbyId, 10); + + Debug.Log(discordLobbyId); + } } if (lobbyMenu.activeSelf) { for (int i = lobbyScroll.transform.childCount-1; i >= 1; i--) { @@ -207,25 +231,38 @@ public class MainMenuController : MonoBehaviour { } var conn = Client.GetConnection(); if(conn != null) { + Debug.Log(conn.GetLobby()); var games = conn.GetGames(); foreach(ConnectionService.Game game in games) { var gameGO = Instantiate(lobbyScroll.transform.GetChild(0), lobbyScroll.transform); gameGO.GetComponentsInChildren()[0].text = game.Name; gameGO.GetComponentsInChildren()[1].text = game.Version; gameGO.GetComponentsInChildren()[2].text = string.Join(", ", game.Authors); + gameGO.GetComponentsInChildren()[3].text = conn.GetLobbyVoteCount(game.Id) + " votes"; + gameGO.GetComponentsInChildren()[4].text = ""+game.Id; gameGO.gameObject.SetActive(true); + } + + var selfVote = conn.GetSelfVote(username.text); + if (selfVote != null) + ready = selfVote.Ready; + //Debug.Log(selfVote); + lobbyMenu.transform.Find("ReadyButton").GetComponent().color = ready ? new Color(0, 255, 0) : new Color(255, 255, 255); + var users = conn.GetUsersInSameLobby(); lobbyMenu.FindRecursive("Usercount").GetComponent().text = "x " + users.Count; usersInLobby = users; // conn.Close(); - Debug.Log(discordLobbyId); - if (discordLobbyId == -1) - DiscordUtils.CreateLobby(10, (lobby) => { - discordLobbyId = lobby.Id; - }); - else - DiscordUtils.UpdateLobby(discordLobbyId, 10); + if (reloadDiscord) { + Debug.Log(discordLobbyId); + if (discordLobbyId == -1) + DiscordUtils.CreateLobby(10, (lobby) => { + discordLobbyId = lobby.Id; + }); + else + DiscordUtils.UpdateLobby(discordLobbyId, 10); + } } lobbyMenu.GetComponentInChildren().Reload();