/// <summary> /// Checks if a character currently has an order to perform. /// </summary> /// <param name="id">ID of the character</param> /// <returns>True if an order exists, false otherwise</returns> public static bool HasOrderForCharacter(int id) { lock (Orders) { AI_Order order = (AI_Order)Orders[id]; return(order != null); } }
/// <summary> /// Retrieves the current order for a character. The order is then consumed. /// </summary> /// <param name="id">ID of the character</param> /// <returns>Order to perform</returns> public static AI_Order GetOrderForCharacter(int id) { lock (Orders) { AI_Order order = (AI_Order)Orders[id]; Orders[id] = null; return(order); } }
/// <summary> /// Gives a new order to a character. Previous orders that were not consumed are overriden. /// </summary> /// <param name="id"></param> /// <param name="code">Action code</param> /// <param name="direction">Target direction of the action (optional)</param> /// <param name="position">Target position of the action (optional)</param> /// <returns>Order to perform</returns> public static AI_Order SetOrderForCharacter(int id, EActionCode code, Vector3 position, Vector3 direction) { lock (Orders) { AI_Order order = new AI_Order(id, code, position, direction); Orders[id] = order; return(order); } }
public void Update() { AI_Params.PushCharacter(AI_Params.PlayerID, ECharacterType.CharacterTypePlayer, Vector3.zero, Vector3.zero, Vector3.zero, true); //AI_Params.PushEvent(EEventType.EventTypeActionStarted, AI_Params.PlayerID, AI_Params.UnknownID, EActionCode.ActionCodeAttackLight); //if (Time.time > 2.0) AI_Params.PushEvent(EEventType.EventTypeGameEnd); AI_Params.Send(Time.time); AI_Order order = AI_Orders.GetOrderForCharacter(AI_Params.PlayerID); if (order != null) { Debug.Log("[Game] Order received (id: " + order.CharacterID + ", code: " + order.ActionCode + ")."); } }