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()); } }
internal MessageHandler(WorldHandler worldHandler) { m_WorldHandler = worldHandler; }