Ejemplo n.º 1
0
        void SpawnDisk(string name, int player)
        {
            Vector3 position = Vector3.zero;

            switch (player)
            {
            case 1:
                position = _player1Spawn.position;
                break;

            case 2:
                position = _player2Spawn.position;
                break;
            }

            position.y = Disk.THICKNESS;

            DiskJson json = _diskJsons.First(d => d.name == name);

            Disk disk = new Disk
            {
                ID             = _nextDiskID++,
                Player         = player,
                Name           = json.name,
                Diameter       = json.diameter,
                Position       = position,
                MaxMoves       = json.moves,
                RemainingMoves = json.moves
            };

            while (HasCollisions(disk, disk.Position))
            {
                disk.Position.y += Disk.THICKNESS;
            }

            GameObject actor = Instantiate(_diskPrefab);

            actor.name = disk.Name;
            actor.transform.position = disk.Position;

            actor.transform.localScale = new Vector3(
                disk.Diameter,
                Disk.THICKNESS / 2f,
                disk.Diameter);

            Texture2D texture = _textureLookup[json.texture];

            actor.GetComponent <Renderer>().material.mainTexture = texture;

            _disks.Add(disk);
            _idByActor.Add(actor, disk.ID);
            _actorByID.Add(disk.ID, actor);
        }
Ejemplo n.º 2
0
        public static DiskJson[] LoadDisks()
        {
            string[]   jsonFiles = Directory.GetFiles(DisksPath, "*.json");
            DiskJson[] disks     = new DiskJson[jsonFiles.Length];

            for (int i = 0; i < jsonFiles.Length; i++)
            {
                string   file = jsonFiles[i];
                string   text = File.ReadAllText(file);
                DiskJson disk = JsonUtility.FromJson <DiskJson>(text);
                disks[i] = disk;
            }

            return(disks);
        }
Ejemplo n.º 3
0
        IEnumerator StartServer()
        {
            _server = new TcpListener(IPAddress.Any, 7777);
            _server.Start();

            bool   connected     = false;
            Thread connectThread = new Thread(() =>
            {
                _connectedClient = _server.AcceptTcpClient();
                _networkStream   = _connectedClient.GetStream();
                connected        = true;
            });

            connectThread.Start();

            while (connected == false)
            {
                yield return(null);
            }

            Debug.Log("connected!");

            _networkListening = true;
            ReadClientMessagesAsync();

            NetworkMessage message = new NetworkMessage();

            message.type         = NetworkMessage.Type.Chat;
            message.chat.message = "hello!";
            SendNetworkMessage(message);

            message.type = NetworkMessage.Type.InitializeClient;
            message.initializeClient.playerID = 2;
            _playerID = 1;

            SendNetworkMessage(message);

            message.type = NetworkMessage.Type.DiskSpawn;

            for (int i = 0; i < _diskJsons.Length; i++)
            {
                int      player = (i % 2) + 1;
                DiskJson disk   = _diskJsons[i];
                SpawnDisk(disk.name, player);
                message.diskSpawn.player   = player;
                message.diskSpawn.diskName = disk.name;
                SendNetworkMessage(message);
            }

            _currentPlayer             = 1;
            _currentPlayerDisplay.text = _currentPlayer == _playerID
                ? "It's your turn!"
                : $"Player {_currentPlayer}'s turn";

            if (_currentPlayer == _playerID)
            {
                _diskGhost.SetActive(true);
            }

            message.type = NetworkMessage.Type.PlayerTurnUpdateMessage;
            message.playerTurnUpdate.currentPlayer = _currentPlayer;
            SendNetworkMessage(message);

            _endTurnButton.onClick.AddListener(EndTurnServer);
        }