Esempio n. 1
0
        private void GetCommandChangeWorkerPosReal(CommandChangeWorkerPos _command, PlayerData _playerData)
        {
            if (_command.targetPos >= -CookConst.WORKER_NUM && _command.targetPos < _playerData.dish.Count && _command.workerIndex > -1 && _command.workerIndex < CookConst.WORKER_NUM)
            {
                Worker worker = _playerData.workers[_command.workerIndex];

                if (worker.pos == _command.targetPos)
                {
                    return;
                }

                if (_command.targetPos < 0)
                {
                    worker.pos = _command.targetPos;

                    worker.punishTick = (int)(CookConst.WORKER_PUNISH_TIME * CookConst.TICK_NUM_PER_SECOND);
                }
                else
                {
                    if (!CheckCanChangeWorkerPos(_command.workerIndex, _playerData.workers, _command.targetPos))
                    {
                        return;
                    }

                    if (worker.pos > -1)
                    {
                        worker.punishTick = (int)(CookConst.WORKER_PUNISH_TIME * CookConst.TICK_NUM_PER_SECOND);
                    }

                    worker.pos = _command.targetPos;
                }

                eventCallBack?.Invoke(_command);
            }
        }
Esempio n. 2
0
 internal void GetCommandChangeWorkerPos(CommandChangeWorkerPos _command)
 {
     if (_command.isMine)
     {
         GetCommandChangeWorkerPosReal(_command, mData);
     }
     else
     {
         GetCommandChangeWorkerPosReal(_command, oData);
     }
 }
Esempio n. 3
0
        private void ServerGetCommand(bool _isMine, BinaryReader _br)
        {
            ICommand command;

            CommandType commandType = (CommandType)_br.ReadByte();

            switch (commandType)
            {
            case CommandType.CHANGE_WORKER_POS:

                command = new CommandChangeWorkerPos();

                break;

            case CommandType.CHANGE_RESULT_POS:

                command = new CommandChangeResultPos();

                break;

            case CommandType.COMPLETE_DISH:

                command = new CommandCompleteDish();

                break;

            default:

                command = new CommandCompleteRequirement();

                break;
            }

            command.FromBytes(_br);

            command.SetIsMine(_isMine);

            commandList.Add(command);
        }
Esempio n. 4
0
        private void Update(BinaryReader _br)
        {
            ushort tick = _br.ReadUInt16();

            if (tick != main.tick)
            {
                throw new Exception("tick is not match!  client:" + main.tick + "   server:" + tick);
            }

            if (tick % CookConst.REQUIRE_PRODUCE_TIME == 0)
            {
                ushort randomSeed = _br.ReadUInt16();

                main.SetSeed(randomSeed);
            }

            main.Update();

            ushort num = _br.ReadUInt16();

            for (int i = 0; i < num; i++)
            {
                CommandType commandType = (CommandType)_br.ReadByte();

                switch (commandType)
                {
                case CommandType.CHANGE_RESULT_POS:

                    CommandChangeResultPos commandChangeResultPos = new CommandChangeResultPos();

                    commandChangeResultPos.FromBytes(_br);

                    main.GetCommandChangeResultPos(commandChangeResultPos);

                    break;

                case CommandType.CHANGE_WORKER_POS:

                    CommandChangeWorkerPos commandChangeWorkerPos = new CommandChangeWorkerPos();

                    commandChangeWorkerPos.FromBytes(_br);

                    main.GetCommandChangeWorkerPos(commandChangeWorkerPos);

                    break;

                case CommandType.COMPLETE_DISH:

                    CommandCompleteDish commandCompleteDish = new CommandCompleteDish();

                    commandCompleteDish.FromBytes(_br);

                    main.GetCommandCompleteDish(commandCompleteDish);

                    break;

                default:

                    CommandCompleteRequirement commandCompleteRequirement = new CommandCompleteRequirement();

                    commandCompleteRequirement.FromBytes(_br);

                    main.GetCommandCompleteRequirement(commandCompleteRequirement);

                    break;
                }
            }

            if (num > 0)
            {
                CheckSync();
            }

            GameResult gameResult;

            if (main.tick > CookConst.MAX_TIME * CookConst.TICK_NUM_PER_SECOND)
            {
                gameResult = main.GetGameResult();
            }
            else
            {
                gameResult = GameResult.NOT_OVER;
            }

            client.UpdateCallBack(gameResult);
        }
Esempio n. 5
0
        public void ChangeWorkerPos(int _workerIndex, int _targetPos)
        {
            CommandChangeWorkerPos command = new CommandChangeWorkerPos(clientIsMine, _workerIndex, _targetPos);

            SendCommand(command);
        }