diff --git a/Chess/.gitignore b/Chess/.gitignore index 774f1a1..d5894c9 100644 --- a/Chess/.gitignore +++ b/Chess/.gitignore @@ -6,10 +6,12 @@ /[Tt]emp/ /[Oo]bj/ /[Bb]uild/ +/[Bb]uild.app/ /[Bb]uilds/ /[Ll]ogs/ /[Mm]emoryCaptures/ UserSettings/ +*DoNotShip/ # Asset meta data should only be ignored when the corresponding asset is also ignored !/**/*.meta diff --git a/Chess/Assets/CloudCode.meta b/Chess/Assets/CloudCode.meta new file mode 100644 index 0000000..ff759ff --- /dev/null +++ b/Chess/Assets/CloudCode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5e90cdc32ff448ae9a8b43b1b48d3c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings.meta new file mode 100644 index 0000000..e13bc29 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ef92cf66747449309636e576705cf27 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode.meta new file mode 100644 index 0000000..5809ef9 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f736288850806402ab00ebe4c71fce22 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.BoardUpdateResponse.cs b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.BoardUpdateResponse.cs new file mode 100644 index 0000000..4c503ed --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.BoardUpdateResponse.cs @@ -0,0 +1,17 @@ +// This file was generated by Cloud Code Bindings Generator. Modifications will be lost upon regeneration. +using UnityEngine.Scripting; + +namespace Unity.Services.CloudCode.GeneratedBindings.ChessCloudCode +{ + public partial class BoardUpdateResponse + { + public string Board; + public bool GameOver; + public string EndgameType; + + [Preserve] + public BoardUpdateResponse () + { + } + } +} \ No newline at end of file diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.BoardUpdateResponse.cs.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.BoardUpdateResponse.cs.meta new file mode 100644 index 0000000..da152e8 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.BoardUpdateResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a48f1f362fea6423c8ea04e8b7ac6583 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.HostGameResponse.cs b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.HostGameResponse.cs new file mode 100644 index 0000000..46dd0eb --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.HostGameResponse.cs @@ -0,0 +1,15 @@ +// This file was generated by Cloud Code Bindings Generator. Modifications will be lost upon regeneration. +using UnityEngine.Scripting; + +namespace Unity.Services.CloudCode.GeneratedBindings.ChessCloudCode +{ + public partial class HostGameResponse + { + public string LobbyCode; + + [Preserve] + public HostGameResponse () + { + } + } +} \ No newline at end of file diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.HostGameResponse.cs.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.HostGameResponse.cs.meta new file mode 100644 index 0000000..c004f6b --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.HostGameResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8c39f0250eb8045b1b04cbce5a4bd360 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.InitializeMatchResponse.cs b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.InitializeMatchResponse.cs new file mode 100644 index 0000000..702db72 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.InitializeMatchResponse.cs @@ -0,0 +1,15 @@ +// This file was generated by Cloud Code Bindings Generator. Modifications will be lost upon regeneration. +using UnityEngine.Scripting; + +namespace Unity.Services.CloudCode.GeneratedBindings.ChessCloudCode +{ + public partial class InitializeMatchResponse + { + public string Status; + + [Preserve] + public InitializeMatchResponse () + { + } + } +} \ No newline at end of file diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.InitializeMatchResponse.cs.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.InitializeMatchResponse.cs.meta new file mode 100644 index 0000000..9b41b82 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.InitializeMatchResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cab8ea60655094b72ab6085003003dc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.JoinGameResponse.cs b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.JoinGameResponse.cs new file mode 100644 index 0000000..cf0fd72 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.JoinGameResponse.cs @@ -0,0 +1,18 @@ +// This file was generated by Cloud Code Bindings Generator. Modifications will be lost upon regeneration. +using UnityEngine.Scripting; + +namespace Unity.Services.CloudCode.GeneratedBindings.ChessCloudCode +{ + public partial class JoinGameResponse + { + public string Session; + public string Board; + public string OpponentId; + public bool IsWhite; + + [Preserve] + public JoinGameResponse () + { + } + } +} \ No newline at end of file diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.JoinGameResponse.cs.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.JoinGameResponse.cs.meta new file mode 100644 index 0000000..c2d0b19 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.JoinGameResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9370fb3f1abd45858d626bd89da7e4d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.PlayerData.cs b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.PlayerData.cs new file mode 100644 index 0000000..784e7b2 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.PlayerData.cs @@ -0,0 +1,16 @@ +// This file was generated by Cloud Code Bindings Generator. Modifications will be lost upon regeneration. +using UnityEngine.Scripting; + +namespace Unity.Services.CloudCode.GeneratedBindings.ChessCloudCode +{ + public partial class PlayerData + { + public int EloScore; + public string Name; + + [Preserve] + public PlayerData () + { + } + } +} \ No newline at end of file diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.PlayerData.cs.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.PlayerData.cs.meta new file mode 100644 index 0000000..722e870 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCode.PlayerData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e195441b110104044bc8e35a60e131cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCodeBindings.cs b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCodeBindings.cs new file mode 100644 index 0000000..7382373 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCodeBindings.cs @@ -0,0 +1,82 @@ +// This file was generated by Cloud Code Bindings Generator. Modifications will be lost upon regeneration. +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Unity.Services.CloudCode.GeneratedBindings +{ + public class ChessCloudCodeBindings + { + readonly ICloudCodeService k_Service; + public ChessCloudCodeBindings(ICloudCodeService service) + { + k_Service = service; + } + + public async Task PrepareAndFetchPlayerData(string playerId) + { + return await k_Service.CallModuleEndpointAsync( + "ChessCloudCode", + "PrepareAndFetchPlayerData", + new Dictionary() + { + {"playerId", playerId}, + }); + } + + public async Task InitializeMatch(string sessionId) + { + return await k_Service.CallModuleEndpointAsync( + "ChessCloudCode", + "InitializeMatch", + new Dictionary() + { + {"sessionId", sessionId}, + }); + } + + public async Task HostGame() + { + return await k_Service.CallModuleEndpointAsync( + "ChessCloudCode", + "HostGame", + new Dictionary() + { + }); + } + + public async Task JoinGame(string lobbyCode) + { + return await k_Service.CallModuleEndpointAsync( + "ChessCloudCode", + "JoinGame", + new Dictionary() + { + {"lobbyCode", lobbyCode}, + }); + } + + public async Task MakeMove(string session, string fromPosition, string toPosition) + { + return await k_Service.CallModuleEndpointAsync( + "ChessCloudCode", + "MakeMove", + new Dictionary() + { + {"session", session}, + {"fromPosition", fromPosition}, + {"toPosition", toPosition}, + }); + } + + public async Task Resign(string session) + { + return await k_Service.CallModuleEndpointAsync( + "ChessCloudCode", + "Resign", + new Dictionary() + { + {"session", session}, + }); + } + } +} diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCodeBindings.cs.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCodeBindings.cs.meta new file mode 100644 index 0000000..1ae1741 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/ChessCloudCode/ChessCloudCodeBindings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 972629e1fd7254cc7af1433ce0d60ea4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/Unity.Services.CloudCode.GeneratedBindings.asmdef b/Chess/Assets/CloudCode/GeneratedModuleBindings/Unity.Services.CloudCode.GeneratedBindings.asmdef new file mode 100644 index 0000000..24c33d2 --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/Unity.Services.CloudCode.GeneratedBindings.asmdef @@ -0,0 +1,8 @@ +{ + "name": "Unity.Services.CloudCode.GeneratedBindings", + "rootNamespace": "Unity.Services.CloudCode.GeneratedBindings", + "autoReferenced": true, + "references": [ + "Unity.Services.CloudCode" + ] +} diff --git a/Chess/Assets/CloudCode/GeneratedModuleBindings/Unity.Services.CloudCode.GeneratedBindings.asmdef.meta b/Chess/Assets/CloudCode/GeneratedModuleBindings/Unity.Services.CloudCode.GeneratedBindings.asmdef.meta new file mode 100644 index 0000000..fbc44ad --- /dev/null +++ b/Chess/Assets/CloudCode/GeneratedModuleBindings/Unity.Services.CloudCode.GeneratedBindings.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 93d45b41dbb4e439696042a09f9b368a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/Player.cs b/Chess/Assets/Player.cs deleted file mode 100644 index ea12302..0000000 --- a/Chess/Assets/Player.cs +++ /dev/null @@ -1,366 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using Newtonsoft.Json; -using TMPro; -using Unity.Services.Authentication; -using Unity.Services.CloudCode; -using Unity.Services.CloudCode.Subscriptions; -using Unity.Services.Core; -using Unity.Services.Leaderboards; -using Unity.Services.Leaderboards.Exceptions; -using Unity.Services.Lobbies; -using Unity.Services.Lobbies.Models; -using Unity.VisualScripting; -using UnityEngine; -using UnityEngine.Analytics; -using UnityEngine.InputSystem; -using UnityEngine.Serialization; -using UnityEngine.SocialPlatforms.Impl; -using WebSocketSharp; - -public class Player : MonoBehaviour -{ - private GameObject _selectedPiece; - public Camera playerCamera; - public GameObject cameraPivot; - public TextMeshProUGUI lobbyInputCodeText; - public TextMeshProUGUI lobbyCodeText; - - public TextMeshProUGUI playerNameText; - public TextMeshProUGUI playerEloText; - public TextMeshProUGUI opponentNameText; - public TextMeshProUGUI opponentEloText; - - public GameObject resignButton; - public GameObject uiPanel; - public TextMeshProUGUI resultText; - public GameObject board; - - private readonly Dictionary _prefabs = new(); - private const string StartingBoard = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; - private bool _gameStarted; - private bool _isWhite; - private string _currentSession; - - private readonly Color32 _selectedColor = new (84, 84, 255, 255); - private readonly Color32 _lightColor = new(223, 210, 194, 255); - private readonly Color32 _darkColor = new (84, 84, 84, 255); - - private async void Start() - { - await UnityServices.InitializeAsync(); - await AuthenticationService.Instance.SignInAnonymouslyAsync(); - await SubscribeToPlayerMessages(); - SyncBoard(StartingBoard); - InitializePlayer(); - resignButton.SetActive(false); - } - - private async Task InitializePlayer() - { - try - { - await RefreshPlayerInfo(); - } - catch (LeaderboardsException e) - { - // If player is not present on lb create a new entry for them - if (e.Reason == LeaderboardsExceptionReason.EntryNotFound) - { - var response = await LeaderboardsService.Instance.AddPlayerScoreAsync("EloRatings", 1500); - playerEloText.text = "Rating: " + Math.Round(response?.Score ?? 1500); - playerNameText.text = response.PlayerName; - } - else - { - throw; - } - } - } - - private async Task RefreshPlayerInfo() - { - var response = await LeaderboardsService.Instance.GetPlayerScoreAsync("EloRatings"); - - playerEloText.text = "Rating: " + Math.Round(response?.Score ?? 1500); - playerNameText.text = response.PlayerName; - } - - private async Task SetOpponentInfo(string opponentId) - { - Debug.Log($"Setting opponent info"); - var response = await LeaderboardsService.Instance.GetScoresByPlayerIdsAsync("EloRatings", new List(){opponentId}); - var opponent = response?.Results?.FirstOrDefault(); - Debug.Log($"Setting opponent info {opponent?.PlayerId}"); - opponentEloText.text = "Rating: " + Math.Round(opponent?.Score ?? 1500); - opponentNameText.text = opponent?.PlayerName ?? "Unknown"; - } - - public async void CreateGame() - { - var hostGameResponse = await CloudCodeService.Instance.CallModuleEndpointAsync("ChessCloudCode", "HostGame"); - - lobbyCodeText.text = hostGameResponse.LobbyCode; - } - - private void SetPov() - { - var angle = _isWhite ? 0 : 180; - cameraPivot.transform.eulerAngles = new Vector3(0, angle, 0); - } - - public async void Resign() - { - try - { - var boardUpdate = await CloudCodeService.Instance.CallModuleEndpointAsync("ChessCloudCode", "Resign", - new Dictionary { { "session", _currentSession } }); - OnBoardUpdate(boardUpdate); - } - catch (LobbyServiceException exception) - { - Debug.LogException(exception); - } - } - - public async void JoinLobbyByCode() - { - try - { - // There's a weird no space character that gets added to the end of the lobby code, let's remove it for now - var sanitizedLobbyCode = Regex.Replace(lobbyInputCodeText.text, @"\s", "").Replace("\u200B", ""); - - var joinGameResponse = await CloudCodeService.Instance.CallModuleEndpointAsync("ChessCloudCode", "JoinGame", - new Dictionary { { "lobbyCode", sanitizedLobbyCode } }); - lobbyCodeText.text = sanitizedLobbyCode; - - OnGameStart(joinGameResponse); - } - catch (LobbyServiceException exception) - { - Debug.LogException(exception); - } - } - - private void SyncBoard(string fen) - { - var boardState = FenToDict(fen); - try - { - foreach (Transform child in board.transform) - { - Destroy(child.gameObject); - } - foreach (var piece in boardState) - { - var pieceType = char.ToLower(piece.Value) switch - { - 'p' => "Pawn", - 'n' => "Knight", - 'b' => "Bishop", - 'r' => "Rook", - 'q' => "Queen", - 'k' => "King", - _ => "" - }; - var prefabName = pieceType + (char.IsUpper(piece.Value) ? "Light" : "Dark"); - if (!_prefabs.ContainsKey(prefabName)) - { - _prefabs[prefabName] = Resources.Load($"{pieceType}/Prefabs/{prefabName}"); - } - - var newObject = Instantiate(_prefabs[prefabName], board.transform); - newObject.GameObject().transform.position = new Vector3(piece.Key.Item1, 0, piece.Key.Item2); - newObject.GameObject().transform.rotation = Quaternion.Euler(0, char.IsLower(piece.Value)? 180 : 0, 0); - } - } - catch (CloudCodeException exception) - { - Debug.LogException(exception); - } - } - - private async void MakeMove(GameObject piece, Vector3 toPos) - { - if (piece == null) return; - var result = await CloudCodeService.Instance.CallModuleEndpointAsync( - "ChessCloudCode", - "MakeMove", - new Dictionary - { - { "session", _currentSession }, - { "fromPosition", PosToFen(piece.transform.position) }, - { "toPosition", PosToFen(toPos) } - }); - - SelectPiece(null); - OnBoardUpdate(result); - } - - private async void OnBoardUpdate(BoardUpdateResponse boardUpdateResponse) - { - SyncBoard(boardUpdateResponse.Board); - if (boardUpdateResponse.GameOver) - { - uiPanel.SetActive(true); - resignButton.SetActive(false); - resultText.text = boardUpdateResponse.EndgameType; - RefreshPlayerInfo(); - } - } - - private async void OnGameStart(JoinGameResponse joinGameResponse) - { - Debug.Log($"Opponent joined: {joinGameResponse.OpponentId}"); - _currentSession = joinGameResponse.Session; - SetOpponentInfo(joinGameResponse.OpponentId); - SyncBoard(joinGameResponse.Board); - uiPanel.SetActive(false); - resignButton.SetActive(true); - _isWhite = joinGameResponse.IsWhite; - SetPov(); - _gameStarted = true; - } - - private Task SubscribeToPlayerMessages() - { - var callbacks = new SubscriptionEventCallbacks(); - callbacks.MessageReceived += @event => - { - switch (@event.MessageType) - { - case "boardUpdated": - var message = JsonConvert.DeserializeObject(@event.Message); - OnBoardUpdate(message); - break; - case "opponentJoined": - var opponentJoinedMessage = JsonConvert.DeserializeObject(@event.Message); - OnGameStart(opponentJoinedMessage); - break; - default: - Debug.Log($"Got unsupported player Message: {JsonConvert.SerializeObject(@event, Formatting.Indented)}"); - break; - } - }; - callbacks.ConnectionStateChanged += @event => - { - if (@event == EventConnectionState.Subscribed && _currentSession != null && _gameStarted) - { - } - Debug.Log($"Got player subscription ConnectionStateChanged: {@event.ToString()}"); - }; - callbacks.Kicked += () => - { - Debug.Log($"Got player subscription Kicked"); - }; - callbacks.Error += @event => - { - Debug.Log($"Got player subscription Error: {JsonConvert.SerializeObject(@event, Formatting.Indented)}"); - }; - return CloudCodeService.Instance.SubscribeToPlayerMessagesAsync(callbacks); - } - - public void PlayerInteract(InputAction.CallbackContext context) - { - if (!context.performed && _currentSession != null) return; - var mousePosition = Mouse.current.position.ReadValue(); - var rayOrigin = playerCamera.ScreenPointToRay(mousePosition); - if (Physics.Raycast(rayOrigin, out var hitInfo)) - { - var gameObject = hitInfo.transform.gameObject; - if (hitInfo.transform.gameObject.name == "Board" - || (_selectedPiece != null && gameObject.name.Contains("Light") != _isWhite)) - { - var boardPos = new Vector3(Mathf.RoundToInt(hitInfo.point.x), 0, Mathf.RoundToInt(hitInfo.point.z)); - MakeMove(_selectedPiece, boardPos); - } - else if (gameObject.name.Contains("Light") == _isWhite) - { - SelectPiece(hitInfo.transform.gameObject); - Debug.Log($"Piece selected: {_selectedPiece.name}"); - } - } - else - { - SelectPiece(null); - } - } - - private void SelectPiece(GameObject piece) - { - if (_selectedPiece != null) - { - ChangeMaterialColor(_selectedPiece, - _selectedPiece.name.Contains("Light") ? _lightColor : _darkColor); - } - _selectedPiece = piece; - if (_selectedPiece == null) return; - ChangeMaterialColor(_selectedPiece, _selectedColor); - } - - private static Dictionary, char> FenToDict(string fen) - { - var fenParts = fen.Split(' '); - var boardState = fenParts[0]; - var ranks = boardState.Split('/'); - - var coordinatesDict = new Dictionary, char>(); - var x = 0; - var y = 7; - - foreach (var rank in ranks) - { - foreach (var c in rank) - { - if (char.IsDigit(c)) - { - x += int.Parse(c.ToString()); - } - else - { - var coordinates = new Tuple(x, y); - coordinatesDict.Add(coordinates, c); - x += 1; - } - } - x = 0; - y -= 1; - } - - return coordinatesDict; - } - - private void ChangeMaterialColor(GameObject obj, Color newColor) - { - var selectedRenderer = obj.GetComponent(); - selectedRenderer.material.color = newColor; - } - - public class HostGameResponse - { - public string LobbyCode { get; set; } - } - - public class BoardUpdateResponse - { - public string Board { get; set; } - public bool GameOver { get; set; } - public string EndgameType { get; set; } - } - - public class JoinGameResponse - { - public string Session { get; set; } - public string Board { get; set; } - public string OpponentId { get; set; } - public bool IsWhite { get; set; } - } - - private string PosToFen(Vector3 pos) - { - return (char)(pos.x + 97) + ((char)pos.z + 1).ToString(); - } -} diff --git a/Chess/Assets/Scenes/ChessDemo.unity b/Chess/Assets/Scenes/ChessDemo.unity index 9616806..1feb238 100644 --- a/Chess/Assets/Scenes/ChessDemo.unity +++ b/Chess/Assets/Scenes/ChessDemo.unity @@ -38,7 +38,6 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.4465791, g: 0.49641317, b: 0.57481784, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -149,13 +148,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 37427375} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 5, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &37427377 MeshCollider: @@ -255,13 +254,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 48581370} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &48581372 MeshCollider: @@ -367,10 +366,10 @@ RectTransform: m_Children: - {fileID: 874255098} - {fileID: 744837260} + - {fileID: 129172498} - {fileID: 1693787997} - {fileID: 220347694} m_Father: {fileID: 908034760} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -441,13 +440,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 75352243} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 5, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &75352245 MeshCollider: @@ -547,13 +546,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 128748984} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 5, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &128748986 MeshCollider: @@ -627,6 +626,139 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 128748984} m_Mesh: {fileID: 4300000, guid: 1ae3b6cad3254b848942cea678f244c7, type: 3} +--- !u!1 &129172497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 129172498} + - component: {fileID: 129172501} + - component: {fileID: 129172500} + - component: {fileID: 129172499} + m_Layer: 5 + m_Name: Find Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &129172498 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129172497} + 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: 1795115908} + m_Father: {fileID: 74450293} + 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: 80} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &129172499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129172497} + 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.7830189, g: 0.7830189, b: 0.7830189, a: 1} + m_PressedColor: {r: 0.6698113, g: 0.6698113, b: 0.6698113, 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: 129172500} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1881174974} + m_TargetAssemblyTypeName: Player, Assembly-CSharp + m_MethodName: FindMatch + 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 &129172500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129172497} + 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: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 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 &129172501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 129172497} + m_CullTransparentMesh: 1 --- !u!1 &161468093 GameObject: m_ObjectHideFlags: 0 @@ -650,6 +782,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 161468093} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.5, y: 0, z: 3.5} m_LocalScale: {x: 1, y: 1, z: 1} @@ -657,7 +790,6 @@ Transform: m_Children: - {fileID: 631113155} m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &200233927 GameObject: @@ -685,13 +817,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 200233927} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 1, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &200233929 MeshCollider: @@ -791,13 +923,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 213516277} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 3, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &213516279 MeshCollider: @@ -902,7 +1034,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 74450293} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -1006,6 +1137,56 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 220347693} m_CullTransparentMesh: 1 +--- !u!1 &246826150 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 246826152} + - component: {fileID: 246826151} + m_Layer: 0 + m_Name: Events + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &246826151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246826150} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8e73f24eea6434965bf89b424a5ba356, type: 3} + m_Name: + m_EditorClassIdentifier: + phaseChangeEvent: + m_PersistentCalls: + m_Calls: [] + errorAcknowledgedEvent: + m_PersistentCalls: + m_Calls: [] +--- !u!4 &246826152 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 246826150} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 690.2871, y: 423.5113, z: -0.3530747} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &287442522 GameObject: m_ObjectHideFlags: 0 @@ -1037,7 +1218,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 874255098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1064,7 +1244,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Join Game + m_text: Join Match m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -1167,13 +1347,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 307732244} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 4, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} --- !u!64 &307732246 MeshCollider: @@ -1279,7 +1459,6 @@ RectTransform: - {fileID: 2038119199} - {fileID: 1112684033} m_Father: {fileID: 1693787997} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1326,13 +1505,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 325610623} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &325610625 MeshCollider: @@ -1432,13 +1611,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 414792898} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 1, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &414792900 MeshCollider: @@ -1538,13 +1717,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 449874633} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &449874635 MeshCollider: @@ -1618,6 +1797,111 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 449874633} m_Mesh: {fileID: 4300000, guid: 0d4dc18442ed9d14698239a5a964f27f, type: 3} +--- !u!1 &519999539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519999541} + - component: {fileID: 519999540} + m_Layer: 0 + m_Name: MatchManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &519999540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519999539} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 91ab04a1e4af4bffb3908fe5fe47d74e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &519999541 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519999539} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.4999995, y: 0.5846951, z: 3.5000005} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &578265780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 578265782} + - component: {fileID: 578265781} + - component: {fileID: 578265783} + m_Layer: 5 + m_Name: ErrorUIDocument + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &578265781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578265780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PanelSettings: {fileID: 11400000, guid: 0739fa41b160849b0a4faf643d633270, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: 72d6d0cbe988d4e23b5c2a4fbec1a2b9, type: 3} + m_SortingOrder: 0 +--- !u!4 &578265782 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578265780} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &578265783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578265780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51b82f777de27477da27398d184ad676, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &631113151 stripped GameObject: m_CorrespondingSourceObject: {fileID: 1857998089916902, guid: 5b856ec4f8f8cb84f861f8f8a026c288, type: 3} @@ -1654,13 +1938,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 656049610} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &656049612 MeshCollider: @@ -1760,13 +2044,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 682251755} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &682251757 MeshCollider: @@ -1866,13 +2150,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 725736685} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 6, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &725736687 MeshCollider: @@ -1979,11 +2263,10 @@ RectTransform: m_Children: - {fileID: 1234927403} m_Father: {fileID: 74450293} - m_RootOrder: -1 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: 89} + m_AnchoredPosition: {x: 0, y: -10} m_SizeDelta: {x: 160, y: 30} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &744837261 @@ -2092,7 +2375,7 @@ GameObject: - component: {fileID: 756768991} - component: {fileID: 756768990} m_Layer: 5 - m_Name: Lobby Code Text (TMP) + m_Name: Join Code Text (TMP) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -2111,7 +2394,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1544248098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.6906753, y: 0.88533866} m_AnchorMax: {x: 0.9801624, y: 0.97137696} @@ -2138,7 +2420,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: + m_text: m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -2301,13 +2583,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 807870249} + serializedVersion: 2 m_LocalRotation: {x: 0.10938167, y: 0.8754261, z: -0.40821788, w: 0.23456976} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 50, y: 150, z: 0} --- !u!1 &874255097 GameObject: @@ -2342,7 +2624,6 @@ RectTransform: m_Children: - {fileID: 287442523} m_Father: {fileID: 74450293} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -2540,7 +2821,6 @@ RectTransform: - {fileID: 74450293} - {fileID: 1544248098} m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2573,13 +2853,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 912573191} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 0, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &912573193 MeshCollider: @@ -2679,13 +2959,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 918073342} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 0, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &918073344 MeshCollider: @@ -2790,7 +3070,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1676727204} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2917,6 +3196,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1035193158} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.5, y: 0, z: 3.5} m_LocalScale: {x: 1, y: 1, z: 1} @@ -2924,7 +3204,6 @@ Transform: m_Children: - {fileID: 1974944745} m_Father: {fileID: 0} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1112684032 GameObject: @@ -2957,7 +3236,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 312391764} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -3087,13 +3365,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1117633118} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 2, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1117633120 MeshCollider: @@ -3257,13 +3535,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1170277842} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1170277844 MeshCollider: @@ -3368,7 +3646,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 744837260} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -3395,7 +3672,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Create Game + m_text: Create Match m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -3498,13 +3775,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1242490634} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 4, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1242490636 MeshCollider: @@ -3609,7 +3886,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1544248098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.03543989, y: 0.8981307} m_AnchorMax: {x: 0.48631966, y: 0.9604123} @@ -3880,13 +4156,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1393921725} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1393921727 MeshCollider: @@ -3991,11 +4267,10 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1544248098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.030859973, y: 0.014654879} m_AnchorMax: {x: 0.48631966, y: 0.08413721} - m_AnchoredPosition: {x: -1.5, y: -2} + m_AnchoredPosition: {x: -1.5, y: -2.0000305} m_SizeDelta: {x: 1, y: 2} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1522302540 @@ -4132,7 +4407,6 @@ RectTransform: - {fileID: 2130390096} - {fileID: 1676727204} m_Father: {fileID: 908034760} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -4208,7 +4482,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1544248098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.030859973, y: 0.08413721} m_AnchorMax: {x: 0.48631966, y: 0.15730974} @@ -4338,13 +4611,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1586274340} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 3, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1586274342 MeshCollider: @@ -4444,13 +4717,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1622118773} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 3, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1622118775 MeshCollider: @@ -4557,7 +4830,6 @@ RectTransform: m_Children: - {fileID: 991883428} m_Father: {fileID: 1544248098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.030859973, y: 0.202} m_AnchorMax: {x: 0.18878047, y: 0.25} @@ -4658,6 +4930,68 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1676727203} m_CullTransparentMesh: 1 +--- !u!1 &1692556258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1692556261} + - component: {fileID: 1692556260} + - component: {fileID: 1692556259} + m_Layer: 5 + m_Name: FindingPlayersDocument + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1692556259 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692556258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4ae24bb34b51b4c0babf8497ec43dd8a, type: 3} + m_Name: + m_EditorClassIdentifier: + _phase: 0 +--- !u!114 &1692556260 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692556258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PanelSettings: {fileID: 11400000, guid: 0739fa41b160849b0a4faf643d633270, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: 3f9ee94c82af6479596bfb4a8560bb48, type: 3} + m_SortingOrder: 0 +--- !u!4 &1692556261 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1692556258} + serializedVersion: 2 + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1693787996 GameObject: m_ObjectHideFlags: 0 @@ -4671,7 +5005,7 @@ GameObject: - component: {fileID: 1693787999} - component: {fileID: 1693787998} m_Layer: 5 - m_Name: Lobby Code Input + m_Name: Join Code Input m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -4691,7 +5025,6 @@ RectTransform: m_Children: - {fileID: 312391764} m_Father: {fileID: 74450293} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -4860,13 +5193,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1738690013} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, 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: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1738690015 MeshCollider: @@ -4966,13 +5299,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1758319147} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 2, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1758319149 MeshCollider: @@ -5072,13 +5405,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1777222571} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 3, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1777222573 MeshCollider: @@ -5152,6 +5485,140 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1777222571} m_Mesh: {fileID: 4300000, guid: 8d213db23e89f6b4fa3d427f07a32b13, type: 3} +--- !u!1 &1795115907 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1795115908} + - component: {fileID: 1795115910} + - component: {fileID: 1795115909} + 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 &1795115908 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1795115907} + 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: 129172498} + 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 &1795115909 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1795115907} + 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: Find Match + 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: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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: 24 + m_fontSizeBase: 24 + 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 &1795115910 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1795115907} + m_CullTransparentMesh: 1 --- !u!1 &1835524139 GameObject: m_ObjectHideFlags: 0 @@ -5222,13 +5689,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1835524139} + serializedVersion: 2 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: 0} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1881174973 GameObject: @@ -5241,6 +5708,7 @@ GameObject: - component: {fileID: 1881174975} - component: {fileID: 1881174974} - component: {fileID: 1881174976} + - component: {fileID: 1881174977} m_Layer: 0 m_Name: Player m_TagString: Untagged @@ -5262,12 +5730,13 @@ MonoBehaviour: m_EditorClassIdentifier: playerCamera: {fileID: 1974944749} cameraPivot: {fileID: 1035193158} - lobbyInputCodeText: {fileID: 1112684034} - lobbyCodeText: {fileID: 756768990} + joinCodeInput: {fileID: 0} + joinCodeDisplayText: {fileID: 0} playerNameText: {fileID: 1546221354} playerEloText: {fileID: 1522302540} opponentNameText: {fileID: 1266149770} opponentEloText: {fileID: 2130390097} + errorText: {fileID: 0} resignButton: {fileID: 1676727203} uiPanel: {fileID: 74450292} resultText: {fileID: 220347695} @@ -5279,13 +5748,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1881174973} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.246233, y: -2.1321354, z: -0.3700037} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1881174976 MonoBehaviour: @@ -5381,6 +5850,18 @@ MonoBehaviour: m_DefaultActionMap: Player m_SplitScreenIndex: -1 m_Camera: {fileID: 1974944749} +--- !u!114 &1881174977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1881174973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 91ab04a1e4af4bffb3908fe5fe47d74e, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1941642356 GameObject: m_ObjectHideFlags: 0 @@ -5407,13 +5888,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1941642356} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 6, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1941642358 MeshCollider: @@ -5513,13 +5994,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1974944744} + serializedVersion: 2 m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254} m_LocalPosition: {x: 0, y: 15, z: -9.5} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1035193159} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} --- !u!81 &1974944747 AudioListener: @@ -5614,13 +6095,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1977734249} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 7, y: 0.0000003059797, z: 7} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &1977734251 MeshCollider: @@ -5720,13 +6201,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2002527198} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 4, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2002527200 MeshCollider: @@ -5826,13 +6307,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2025034869} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 6, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2025034871 MeshCollider: @@ -5932,13 +6413,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2033846001} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 1, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2033846003 MeshCollider: @@ -6044,7 +6525,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 312391764} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -6091,7 +6571,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: Enter lobby code... + m_text: Enter join code... m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} @@ -6194,13 +6674,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2065325157} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 7, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2065325159 MeshCollider: @@ -6300,13 +6780,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2073016748} + serializedVersion: 2 m_LocalRotation: {x: -0.000000021855694, y: -0, z: -0, w: 1} m_LocalPosition: {x: 2, y: 0.00000004371139, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2073016750 MeshCollider: @@ -6406,13 +6886,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2121728206} + serializedVersion: 2 m_LocalRotation: {x: 9.553427e-16, y: 1, z: -0.000000021855694, w: -0.00000004371139} m_LocalPosition: {x: 7, y: 0.00000026226832, z: 6} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 631113155} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!64 &2121728208 MeshCollider: @@ -6517,7 +6997,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1544248098} - m_RootOrder: -1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.03543989, y: 0.83041155} m_AnchorMax: {x: 0.48631966, y: 0.8981307} @@ -6621,3 +7100,17 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2130390095} m_CullTransparentMesh: 1 +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 807870251} + - {fileID: 161468094} + - {fileID: 1035193159} + - {fileID: 1881174975} + - {fileID: 908034760} + - {fileID: 1835524142} + - {fileID: 519999541} + - {fileID: 578265782} + - {fileID: 246826152} + - {fileID: 1692556261} diff --git a/Chess/Assets/Scripts.meta b/Chess/Assets/Scripts.meta new file mode 100644 index 0000000..5504211 --- /dev/null +++ b/Chess/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97ab97082883649c5a6151d9d37129c4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Chess/Assets/Scripts/ChessSession.cs b/Chess/Assets/Scripts/ChessSession.cs new file mode 100644 index 0000000..e7614cb --- /dev/null +++ b/Chess/Assets/Scripts/ChessSession.cs @@ -0,0 +1,13 @@ +using System.Collections.Generic; +using System.Linq; +using Unity.Services.Multiplayer; + +public class ChessSession +{ + public List PlayerIds = new List(); + + public void FromSession(ISession session) + { + PlayerIds = session.Players.Select(player => player.Id).ToList(); + } +} \ No newline at end of file diff --git a/Chess/Assets/Scripts/ChessSession.cs.meta b/Chess/Assets/Scripts/ChessSession.cs.meta new file mode 100644 index 0000000..09206e8 --- /dev/null +++ b/Chess/Assets/Scripts/ChessSession.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c47b999a7b8342138addf0a44a6c3631 +timeCreated: 1721384341 \ No newline at end of file diff --git a/Chess/Assets/Scripts/ErrorUI.cs b/Chess/Assets/Scripts/ErrorUI.cs new file mode 100644 index 0000000..851507d --- /dev/null +++ b/Chess/Assets/Scripts/ErrorUI.cs @@ -0,0 +1,59 @@ +using UnityEngine; +using UnityEngine.UIElements; + +public class ErrorUI : MonoBehaviour +{ + private VisualElement root; + private Label errorText; + private Button okButton; + + private void Awake() + { + // Load the UI document + var uiDocument = GetComponent(); + root = uiDocument.rootVisualElement; + + // Bind the UI elements + errorText = root.Q