Ejemplo n.º 1
0
        public PortalHandler(WorldHandler worldHandler, EngineConnection engineConnection, MessageEventArgs eventArgs)
        {
            m_SendCommand  = engineConnection.SendCommand;
            m_WorldHandler = worldHandler;

            m_SendCommand += SentCommandToEngine;

            AgentId = eventArgs.AgentId;

            switch (eventArgs.Type)
            {
            case MessegeType.Portal_New:
                //Assumes the DS engine's ints are at least 16 bits.
                //  Still gives low odds of id collisions.
                ExternalId = RandomHelper.Rand.Next(Int16.MaxValue);
                m_SendCommand(AgentId, CommandType.Portal_SetId, ExternalId.ToString());
                break;

            case MessegeType.Portal_WorldLoaded:
                if (!eventArgs.Parameters.Any())
                {
                    Debug.Fail("No parameters found.");
                }
                int id;
                if (Int32.TryParse(eventArgs.Parameters.First(), out id))
                {
                    ExternalId = id;
                }
                else
                {
                    throw new OrchestrationException($"Parameter should have been an int.");
                }
                break;

            default:
                throw new Exceptions.OrchestrationException($"Type invalid: {eventArgs.Type}", new ArgumentException());
            }
        }
Ejemplo n.º 2
0
 internal MessageHandler(WorldHandler worldHandler)
 {
     m_WorldHandler = worldHandler;
 }