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); } }
internal void GetCommandChangeWorkerPos(CommandChangeWorkerPos _command) { if (_command.isMine) { GetCommandChangeWorkerPosReal(_command, mData); } else { GetCommandChangeWorkerPosReal(_command, oData); } }
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); }
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); }
public void ChangeWorkerPos(int _workerIndex, int _targetPos) { CommandChangeWorkerPos command = new CommandChangeWorkerPos(clientIsMine, _workerIndex, _targetPos); SendCommand(command); }