示例#1
0
 protected RailConnection(RailRegistry registry)
 {
     Resource    = new RailResource(registry);
     Interpreter = new RailInterpreter();
     Room        = null;
     hasStarted  = false;
 }
示例#2
0
        public Rail_Test()
        {
            RailSynchronizedFactory.Detect(Assembly.GetAssembly(typeof(RailBitBufferExtensions)));

            RailRegistry registryClient = new RailRegistry(Component.Client);

            registryClient.AddEntityType <RailEntityClient <SomeState>, SomeState>();

            RailRegistry registryServer = new RailRegistry(Component.Server);

            registryServer.AddEntityType <RailEntityServer <SomeState>, SomeState>();

            m_Client = new RailClient(registryClient);
            m_Server = new RailServer(registryServer);

            m_PeerClientSide = new Mock <RailNetPeerWrapper>(m_ConClientSide)
            {
                CallBase = true
            };
            m_PeerServerSide = new Mock <RailNetPeerWrapper>(m_ConServerSide)
            {
                CallBase = true
            };

            m_ConClientSide.OnSend += m_PeerServerSide.Object.Receive;
            m_ConServerSide.OnSend += m_PeerClientSide.Object.Receive;
        }
示例#3
0
        public static void Initialize()
        {
            // TODO: This should be codegen
            RailRegistry registry = new RailRegistry();

            registry.SetCommandType <GameCommand>();
            registry.AddEntityType <ControlledEntity, EntityState>();
            registry.AddEntityType <DummyEntity, EntityState>();
            registry.AddEntityType <MimicEntity, EntityState>();

            registry.Register();
        }
示例#4
0
        public static RailRegistry Server(IEnvironmentServer environment)
        {
            RailRegistry reg = new RailRegistry(Component.Server);

            // Entities
            reg.AddEntityType <WorldEntityServer, WorldState>(new object[] { environment });
            reg.AddEntityType <MobilePartyEntityServer, MobilePartyState>(
                new object[] { environment });

            // Events
            reg.AddEventType <EventTimeControl>();
            reg.AddEventType <EventPartyMoveTo>();

            return(reg);
        }
示例#5
0
        public static RailRegistry Client(IEnvironmentClient environment)
        {
            RailRegistry reg = new RailRegistry(Component.Client);

            // Entities
            reg.AddEntityType <WorldEntityClient, WorldState>(new object[] { environment });
            reg.AddEntityType <MobilePartyEntityClient, MobilePartyState>(
                new object[] { environment });

            // Events
            reg.AddEventType <EventTimeControl>();
            reg.AddEventType <EventPartyMoveTo>();
            reg.AddEventType <EventMethodCall>();

            return(reg);
        }
示例#6
0
            public static RailRegistry Get(Component eComponent)
            {
                RailRegistry registry = new RailRegistry(eComponent);

                switch (eComponent)
                {
                case Component.Server:
                    registry.AddEntityType <EntityServer, EntityState>();
                    break;

                case Component.Client:
                    registry.AddEntityType <EntityClient, EntityState>();
                    break;
                }

                registry.SetCommandType <Command>();
                return(registry);
            }
示例#7
0
        private readonly List <RailEntityServer> toRemove = new List <RailEntityServer>(); // Pre-allocated list for reuse

        public RailServer(RailRegistry registry) : base(registry)
        {
        }
示例#8
0
 public RailClient(RailRegistry registry) : base(registry)
 {
     ServerPeer = null;
     localTick  = Tick.START;
     Room       = null;
 }