//private int RegisterStateType(string stateName, StatePeeker peeker, StatePriorityCalculator priority, StateSerializer serializer, StateDeserializer deserializer) {
    //    if(StateCodes.Contains(stateName)) {
    //        Debug.LogException(new Exception("Can not register state type [" + stateName + "] because a state already exists with that name"));
    //    }
    //    StateCodes.Add(stateName);
    //    StateSerializers.Add(serializer);
    //    StateDeserializers.Add(deserializer);
    //    StatePeekers.Add(peeker);
    //    StatePriorityCalculators.Add(priority);

    //    int stateId = StateCodes.Count - 1;
    //    return stateId;
    //}

    //public int GetStateCode(string stateName) {
    //    if(StateCodes.Contains(stateName)) {
    //        return StateCodes.IndexOf(stateName);
    //    }
    //    throw new Exception("State with name [" + stateName + "] does not exist");
    //}

    public int RegisterMessageType(string messageName, MessagePeeker peeker, MessagePriorityCalculator priority, MessageSerializer serializer, MessageDeserializer deserializer, MessageProcessor processor)
    {
        if (MessageCodes.Contains(messageName))
        {
            Debug.LogException(new Exception("Can not register message type [" + messageName + "] because a message already exists with that name"));
        }
        MessageCodes.Add(messageName);
        MessageSerializers.Add(serializer);
        MessageDeserializers.Add(deserializer);
        MessageProcessors.Add(processor);
        MessagePeekers.Add(peeker);
        MessagePriorityCalculators.Add(priority);

        int msgId = MessageCodes.Count - 1;

        return(msgId);
    }
Exemple #2
0
    //private int RegisterStateType(string stateName, StatePeeker peeker, StatePriorityCalculator priority, StateSerializer serializer, StateDeserializer deserializer) {
    //    if(StateCodes.Contains(stateName)) {
    //        Debug.LogException(new Exception("Can not register state type [" + stateName + "] because a state already exists with that name"));
    //    }
    //    StateCodes.Add(stateName);
    //    StateSerializers.Add(serializer);
    //    StateDeserializers.Add(deserializer);
    //    StatePeekers.Add(peeker);
    //    StatePriorityCalculators.Add(priority);

    //    int stateId = StateCodes.Count - 1;
    //    return stateId;
    //}

    //public int GetStateCode(string stateName) {
    //    if(StateCodes.Contains(stateName)) {
    //        return StateCodes.IndexOf(stateName);
    //    }
    //    throw new Exception("State with name [" + stateName + "] does not exist");
    //}

    public int RegisterMessageType(string messageName, MessagePeeker peeker, MessagePriorityCalculator priority, MessageSerializer serializer, MessageDeserializer deserializer, MessageProcessor processor)
    {
        if (MessageCodes.Contains(messageName))
        {
            Debug.LogException(new Exception("Can not register message type [" + messageName + "] because a message already exists with that name"));
        }
        MessageCodes.Add(messageName);
        MessageSerializers.Add(serializer);
        MessageDeserializers.Add(deserializer);
        MessageProcessors.Add(processor);
        MessagePeekers.Add(peeker);
        MessagePriorityCalculators.Add(priority);

        int msgId = MessageCodes.Count - 1;

        if (msgId > maxMessageTypes)
        {
            Debug.LogException(new Exception("Message type [" + messageName + "] was registered outside the max range [" + maxMessageTypes + "]. Using this message will cause problems"));
        }
        return(msgId);
    }