public void InterpetMessage(NPCUnit ally, UnitMessage message) { switch (message) { case UnitMessage.HostileFound: OnHostileFound(ally); break; // add more cases as necessary } }
// process certain unit messages in order to message other units in the "alliance" private void OnUnitMessageReceived(NPCUnit ally, UnitMessage message) { switch (message) { case UnitMessage.HostileFound: case UnitMessage.PlayerObjectiveInProgress: case UnitMessage.PlayerObjectiveCompleted: OnAllianceMessageSent?.Invoke(ally, message); break; default: break; } }
private void OnAllianceMessageReceived(NPCUnit ally, UnitMessage message) { // don't override state if this was the sender if (ally == _unit) { return; } // retrieve the appropriate state if (!_messageOverrideStates.TryGetValue(message, out AIState nextState)) { return; } _messageInterpeter.InterpetMessage(ally, message); OnReadyToTransitionState(nextState); }
protected virtual void OnAllianceMessageSent(NPCUnit unit, UnitMessage message) { OnUnitMessageReceived?.Invoke(unit, message); }
public void SendMessage(UnitMessage message) { OnUnitMessageSent?.Invoke(this, message); }
private void Awake() { message = (UnitMessage)FindObjectOfType(typeof(UnitMessage)); }