Exemplo n.º 1
0
    // 양 클라이언트에서 동일한 타이밍으로 게임 시작을 위한, 게임시작 패킷 수신 함수
    public void OnReceiveGameStartPacket(PacketId id, byte[] data)
    {
        GameStartPacket packet    = new GameStartPacket(data);
        GameStartData   startData = packet.GetPacket();

        enterGameScene[startData.campNumber - 1] = true;

        bool check = false;

        for (int i = 0; i < 2; i++)
        {
            if (enterGameScene[i] == false)
            {
                Debug.Log((i + 1).ToString() + " 진영에서 아직 데이터 안보냄.");
                check = true;
            }
        }

        if (check == false)
        {
            // 양 단말 모두 준비가 되었으므로 게임 시작
            Debug.Log("양 단말의 게임 시작 패킷 수신을 완료했으므로, 일시중지 해제하고 게임 시작");
            readyToStart = true;
        }
    }
Exemplo n.º 2
0
        public static GameDefinition GetGameDefinition(GameStartData startData)
        {
            var gamePack       = Current.GamePacks.FirstOrDefault(gp => gp.Name == startData.PackName);
            var gameSet        = gamePack.GameSets.FirstOrDefault(gs => gs.Name == startData.SetName);
            var gameDefinition = gameSet.Games[startData.Index];

            return(gameDefinition);
        }
Exemplo n.º 3
0
    // 게임 씬으로 진입했을 때, 즉 게임 시작을 위한 준비가 모두 끝났을 때 서버에 준비 되었다는 정보를 송신
    public void SendReadyToStartGamePacket()
    {
        GameStartData data = new GameStartData();

        data.campNumber = MyCampNum;
        networkManager.SendReliable <GameStartData>(new GameStartPacket(data));
        Debug.Log(myCampNum.ToString() + " 게임씬 입장 데이터 전송 완료");
    }
Exemplo n.º 4
0
 void OnGameJoinAccept(GameStartData gameStartData)
 {
     LastReceivedServerTick = gameStartData.OnJoinServerTick;
     ClientTick             = gameStartData.OnJoinServerTick;
     foreach (PlayerSpawnData playerSpawnData in gameStartData.Players)
     {
         SpawnPlayer(playerSpawnData);
     }
 }
Exemplo n.º 5
0
 void OnGameJoinAccept(GameStartData data)
 {
     LastRecievedServerTick = data.OnJoinServerTick;
     ClientTick             = data.OnJoinServerTick;
     foreach (PlayerSpawnData ppd in data.Players)
     {
         SpawnPlayer(ppd);
     }
 }
Exemplo n.º 6
0
        void Handle(GameStartData data)
        {
            gameState = new GameState
            {
                GameStart = data,
            };

            currentRoundState = new RoundState();
        }
Exemplo n.º 7
0
    public void OnLoadGameSubmit(Guid saveId, SaveData summary)
    {
        var data = GameStartData.Create();

        data.saveId       = saveId;
        data.saveName     = summary.saveName;
        data.seed         = summary.seed;
        data.isLoadedGame = true;
        this.LoadInGame();
    }
Exemplo n.º 8
0
    public void OnNewGameSubmit()
    {
        if (this.newGameName.text.Length <= 0)
        {
            return;
        }
        var data = GameStartData.Create();

        data.saveId   = Guid.NewGuid();
        data.saveName = this.newGameName.text;
        this.LoadInGame();
    }
Exemplo n.º 9
0
        public bool Serialize(GameStartData packet)
        {
            bool ret = true;

            ret &= Serialize(packet.campNumber);
            ret &= Serialize(packet.trash0);
            ret &= Serialize(packet.trash1);
            ret &= Serialize(packet.trash2);
            ret &= Serialize(packet.trash3);
            ret &= Serialize(packet.trash4);
            ret &= Serialize(packet.trash5);
            ret &= Serialize(packet.trash6);
            ret &= Serialize(packet.trash7);

            return(ret);
        }
Exemplo n.º 10
0
        public void CreateNewGame(GameStartData gameStartData)
        {
            // Prepare data for writing
            Console.WriteLine("Preparing new game data...");
            Game newGame = new Game();

            newGame.ThreadTimeStamp = gameStartData.ThreadTs;
            newGame.IsActive        = true;
            newGame.StartingUrl     = gameStartData.StartingUrl;
            newGame.EndingUrl       = gameStartData.EndingUrl;

            // Write changes to database
            Console.WriteLine("Saving data...");
            _context.Games.Add(newGame);
            _context.SaveChanges();
            Console.WriteLine("Game Written and started.");
        }
Exemplo n.º 11
0
        public bool Deserialize(ref GameStartData element)
        {
            // 데이터가 정의되어있지 않다면
            if (GetDataSize() == 0)
            {
                return(false);
            }

            bool ret = true;

            ret &= Deserialize(ref element.campNumber);
            ret &= Deserialize(ref element.trash0);
            ret &= Deserialize(ref element.trash1);
            ret &= Deserialize(ref element.trash2);
            ret &= Deserialize(ref element.trash3);
            ret &= Deserialize(ref element.trash4);
            ret &= Deserialize(ref element.trash5);
            ret &= Deserialize(ref element.trash6);
            ret &= Deserialize(ref element.trash7);

            return(ret);
        }
    private void OnGameStart(GameStartData startData)
    {
        LastServerTick = startData.ServerTick;
        ClientTick     = startData.ServerTick;

        // Mapreihenfolge festlegen
        Random.InitState(startData.Seed);

        mapOrder        = new int[rounds];
        currentMapIndex = 0;

        for (int i = 0; i < rounds; i++)
        {
            mapOrder[i] = Mathf.RoundToInt((mapPrefabs.Length - 1) * Random.value);
        }

        currentMap = Instantiate(mapPrefabs[mapOrder[currentMapIndex]]);

        foreach (var spawnData in startData.Players)
        {
            SpawnPlayer(spawnData);
        }
    }
Exemplo n.º 13
0
 public void CreateNewGame(GameStartData gameStartData)
 {
     Console.WriteLine($"New Game Create: Ts={gameStartData.ThreadTs}");
     gameEntries.Clear();
     _mockGameThreadTs = gameStartData.ThreadTs;
 }
Exemplo n.º 14
0
    /*private void SendAndCreateToServer()
     * {
     *  switch (sendOptions)
     *  {
     *      case SendOptions.AI_VS_AI:
     *          SendAI_VS_AI_Data();
     *          break;
     *
     *      case SendOptions.AckAI_VS_AI:
     *          SendAck();
     *          break;
     *
     *      case SendOptions.Ack:
     *          SendAck();
     *          break;
     *
     *      default:
     *          break;
     *  }
     * }*/

    private IEnumerator RecieveAndParseServerReply()
    {
        recievingInCorutine = true;

        while (!s.DataAvailable)
        {
            yield return(null);
        }

        string ServerReply = sr.ReadLine();

        Debug.Log("Recvd " + ServerReply);
        loggerText.text = "Recvd " + ServerReply + "\n";

        Dictionary <string, object> ServerReplyDict = JsonConvert.DeserializeObject <Dictionary <string, object> >(ServerReply);

        MsgsEnum ServerReplytype = (MsgsEnum)int.Parse(ServerReplyDict["type"].ToString());

        string serverMsg = ServerReplyDict["msg"].ToString();

        switch (ServerReplytype)
        {
        case MsgsEnum.AI_VS_AI:
            break;

        case MsgsEnum.AckAI_VS_AI:

            AckAI_VS_AI_Data ackAI_VS_AI = JsonConvert.DeserializeObject <AckAI_VS_AI_Data>(serverMsg);

            manager.SetMyTurn(ackAI_VS_AI.myTurn);

            if (ackAI_VS_AI.ourRemainingTime > 0)
            {
                manager.SetOurTimer(ackAI_VS_AI.ourRemainingTime / 1000.0f);
            }

            if (ackAI_VS_AI.theirRemainingTime > 0)
            {
                manager.SetTheirTimer(ackAI_VS_AI.theirRemainingTime / 1000.0f);
            }

            SendAck();

            break;

        case MsgsEnum.moveConfigrations:

            MoveData moveConfigData = JsonConvert.DeserializeObject <MoveData>(serverMsg);
            boardObject.PlaceStone(moveConfigData.y, moveConfigData.x, moveConfigData.color != 'b');

            if (moveConfigData.ourScore > 0 || moveConfigData.theirScore > 0)
            {
                manager.SetScore(moveConfigData.ourScore, moveConfigData.theirScore);
            }

            if (moveConfigData.ourTimer > 0)
            {
                manager.SetOurTimer(moveConfigData.ourTimer / 1000.0f);
            }

            if (moveConfigData.theirTimer > 0)
            {
                manager.SetTheirTimer(moveConfigData.theirTimer / 1000.0f);
            }

            manager.GamePlayedAvA();

            //sendOptions = SendOptions.Ack;
            SendAck();

            break;

        case MsgsEnum.gameEnd:

            GameEndData gameEndData = JsonConvert.DeserializeObject <GameEndData>(serverMsg);
            manager.GameEnd(gameEndData.ourScore, gameEndData.theirScore, gameEndData.win);

            SendAck();

            break;

        case MsgsEnum.gamePaused:

            manager.PauseGame();

            SendAck();

            break;

        case MsgsEnum.exit:
            break;

        case MsgsEnum.ack:

            AckData ackData = JsonConvert.DeserializeObject <AckData>(serverMsg);
            Debug.Log("Ack data " + ackData.reason + " " + ackData.valid + " " + ackData.valid);

            if (ackData.valid)
            {
                manager.PlayerMoveAccepted();

                if (ackData.ourScore > 0 || ackData.theirScore > 0)
                {
                    manager.SetScore(ackData.ourScore, ackData.theirScore);
                }
            }
            else
            {
                manager.PlayerMoveNotAccepted();
            }

            manager.ShowWarning(ackData.reason);

            SendAck();

            break;

        case MsgsEnum.gameStart:

            GameStartData gameStartData = JsonConvert.DeserializeObject <GameStartData>(serverMsg);

            manager.SetMyTurn(gameStartData.myTurn);

            if (gameStartData.ourRemainingTime > 0)
            {
                manager.SetOurTimer(gameStartData.ourRemainingTime / 1000.0f);
            }

            if (gameStartData.theirRemainingTime > 0)
            {
                manager.SetTheirTimer(gameStartData.theirRemainingTime / 1000.0f);
            }

            manager.ResumeGame();

            SendAck();

            break;

        case MsgsEnum.AI_VSHuman:
            break;

        case MsgsEnum.move:

            MoveData moveData = new MoveData();
            moveData.countCaptured = 0;

            moveData = JsonConvert.DeserializeObject <MoveData>(serverMsg);
            boardObject.PlaceStone(moveData.y, moveData.x, moveData.color != 'b');

            manager.AiPlayed();

            if (moveData.ourScore > 0 || moveData.theirScore > 0)
            {
                manager.SetScore(moveData.ourScore, moveData.theirScore);
            }

            //sendOptions = SendOptions.Ack;
            SendAck();

            break;

        case MsgsEnum.forfeit:
            break;

        case MsgsEnum.remove:

            RemoveData removeData = JsonConvert.DeserializeObject <RemoveData>(serverMsg);
            boardObject.RemoveStone(removeData.y, removeData.x);

            //sendOptions = SendOptions.Ack;
            SendAck();

            break;

        default:
            break;
        }

        recievingInCorutine = false;
    }