void InitCommand(Robot rob, ServerRobotCommand robCmd, Command cmd) { robCmd.lastCmd = cmd; switch (cmd.cmdTyp) { case CommandType.MOVE_TO: robCmd.currPath = lvlCtrl.AStarPath(rob.pos, new Vector2(cmd.goalPosX, cmd.goalPosY)); robCmd.currPathIncr = -1; break; case CommandType.CHANGE_HEIGHT: break; case CommandType.GUARD: // float timeForGuarding = cmd.val; break; case CommandType.SET_ANGLE: rob.SetGoalAngle(cmd.val); break; default: break; } }
void PerformCommand(Robot rob, ServerRobotCommand robCmd, Command cmd) { switch (cmd.cmdTyp) { case CommandType.MOVE_TO: // Debug.Log("robCmd.currPathIncr: " + robCmd.currPathIncr + ", robCmd.currPath: " + robCmd.currPath + ", " + robCmd.currPath.Count); Vector2 nextMove = Vector2.zero; if (robCmd.currPathIncr >= 0) { nextMove = robCmd.currPath[robCmd.currPathIncr]; } // Debug.Log("PerformCommand - IsRobotAtGoal: "+ IsRobotAtGoal(rob.pos, robCmd.currPathNextPos, nextMove) + ", rob.pos: " + rob.pos + ", robCmd.currPathNextPos: "+ robCmd.currPathNextPos + ", nextMove: "+ nextMove); if (robCmd.currPathIncr == -1 || IsRobotAtGoal(rob.pos, robCmd.currPathNextPos, nextMove)) { robCmd.currPathIncr++; nextMove = robCmd.currPath[robCmd.currPathIncr]; robCmd.currPathNextPos = Tools.CleanPos(new Vector2((int)rob.pos.x + nextMove.x, (int)rob.pos.y + nextMove.y)); } else { nextMove = robCmd.currPath[robCmd.currPathIncr]; } rob.transform.Translate(nextMove * 2f * Time.fixedDeltaTime); break; case CommandType.CHANGE_HEIGHT: break; case CommandType.GUARD: // float timeForGuarding = cmd.val; break; case CommandType.SET_ANGLE: // if (rob.currAngle != rob.goalAngle){ // rob.currAngle = Mathf.MoveTowardsAngle(rob.currAngle,rob. goalAngle, 90f * Time.fixedDeltaTime); // // rob.UpdateGunRotation(); // } //// rob.SetGoalAngle(cmd.val); // break; default: break; } }
bool IsDoneWithCommand(Robot rob, ServerRobotCommand robCmd, Command cmd) { if (cmd == null) { return(true); } // rob.robotCommand.lastCmd switch (cmd.cmdTyp) { case CommandType.MOVE_TO: if (robCmd.currPathIncr == robCmd.currPath.Count - 1 && IsRobotAtGoal(rob.pos, robCmd.currPathNextPos, robCmd.currPath[robCmd.currPathIncr])) { return(true); } break; case CommandType.CHANGE_HEIGHT: break; case CommandType.GUARD: float timeForGuarding = cmd.val; break; case CommandType.SET_ANGLE: //Instant return(true); default: break; } return(false); }