/// <summary> /// adds the order to the registry. /// (orders should be checked for "validness" - check if cmder is full before recruiting, for example - /// before being added) /// </summary> /// <param name="orderType"></param> /// <param name="orderedActorID"></param> /// <param name="zoneTargetID"></param> public void RegisterOrder(RegisteredCmderOrder.OrderType orderType, int orderedActorID = -1, int zoneTargetID = -1, bool addVisualFeedbackNow = false) { RegisteredCmderOrder newOrder = new RegisteredCmderOrder(orderType, orderedActorID, zoneTargetID); registeredOrders.Add(newOrder); if (addVisualFeedbackNow) { AddFeedbackForOrder(newOrder); } }
public void AddFeedbackForOrder(RegisteredCmderOrder order) { if (order.orderType == RegisteredCmderOrder.OrderType.createCmder || order.orderType == RegisteredCmderOrder.OrderType.move) { Zone targetZone = null; if (order.zoneTargetID != -1) { targetZone = GameController.GetZoneByID(order.zoneTargetID); if (targetZone == null) { return; } } if (order.orderType == RegisteredCmderOrder.OrderType.createCmder) { WorldVisualFeedbacks.instance.createCmderFBCycler.PlaceObjAt(targetZone.MyZoneSpot.transform); } else { Commander targetCmder = GameController.GetCmderByID(order.orderedActorID); if (targetCmder == null) { return; } Faction ownerFac = GameController.GetFactionByID(targetCmder.ownerFaction); if (ownerFac == null) { return; } LinkLine line = WorldVisualFeedbacks.instance.moveFBCycler.GetAnObj().GetComponent <LinkLine>(); line.SetLink(targetCmder.MeIn3d, targetZone.MyZoneSpot, ownerFac.color, 0.3f); } } else { Commander targetCmder = GameController.GetCmderByID(order.orderedActorID); if (targetCmder == null) { return; } if (order.orderType == RegisteredCmderOrder.OrderType.recruit) { WorldVisualFeedbacks.instance.recruitFBCycler.PlaceObjAt(targetCmder.MeIn3d.transform); } else { WorldVisualFeedbacks.instance.trainingFBCycler.PlaceObjAt(targetCmder.MeIn3d.transform); } } }
/// <summary> /// if an order was given to the target cmder, removes it and returns true; if no order is found, returns false. /// does not affect order visual feedbacks; they should be refreshed manually afterwards! /// </summary> /// <param name="orderedCmderID"></param> /// <returns></returns> public bool RemoveAnyOrderGivenToCmder(int orderedCmderID) { RegisteredCmderOrder cmderOrder = null; foreach (RegisteredCmderOrder order in registeredOrders) { if (order.orderType != RegisteredCmderOrder.OrderType.createCmder && order.orderedActorID == orderedCmderID) { cmderOrder = order; } } if (cmderOrder != null) { registeredOrders.Remove(cmderOrder); } return(cmderOrder != null); }