예제 #1
0
    void ReceiveInitialData(NetIncomingMessage message)
    {
        byte count = message.ReadByte();

        for (int i = 0; i < count; i++)
        {
            HeroInitialData init = HeroInitialData.ReadData(message);
            HeroSyncData    sync = HeroSyncData.ReadData(message);
            ObjectManager.AddHero(init, sync, false);
        }

        count = message.ReadByte();
        for (int i = 0; i < count; i++)
        {
            CoreInitialData init = CoreInitialData.ReadData(message);
            CoreSyncData    sync = CoreSyncData.ReadData(message);
            ObjectManager.AddCore(init, sync);
        }

        count = message.ReadByte();
        for (int i = 0; i < count; i++)
        {
            TowerInitialData init = TowerInitialData.ReadData(message);
            TowerSyncData    sync = TowerSyncData.ReadData(message);
            ObjectManager.AddTower(init, sync);
        }
    }
예제 #2
0
    void ReadSnapshot(NetIncomingMessage message)
    {
        byte count = message.ReadByte();

        for (int i = 0; i < count; i++)
        {
            HeroInitialData init = HeroInitialData.ReadData(message);
            HeroSyncData    sync = HeroSyncData.ReadData(message);
            ObjectManager.UpdateHero(init, sync);
        }

        count = message.ReadByte();
        for (int i = 0; i < count; i++)
        {
            CoreSyncData sync = CoreSyncData.ReadData(message);
            ObjectManager.UpdateCore(sync);
        }

        count = message.ReadByte();
        for (int i = 0; i < count; i++)
        {
            TowerSyncData sync = TowerSyncData.ReadData(message);
            ObjectManager.UpdateTower(sync);
        }

        count = message.ReadByte();
        List <SyncData> monsters = new List <SyncData>();

        for (int i = 0; i < count; i++)
        {
            monsters.Add(MonsterSyncData.ReadData(message));
        }
        ObjectManager.UpdateMonsters(monsters);

        count = message.ReadByte();
        List <SyncData> minions = new List <SyncData>();

        for (int i = 0; i < count; i++)
        {
            minions.Add(MinionSyncData.ReadData(message));
        }
        ObjectManager.UpdateMinions(minions);

        count = message.ReadByte();
        List <SyncData> abilities = new List <SyncData>();

        for (int i = 0; i < count; i++)
        {
            abilities.Add(AbilitySyncData.ReadData(message));
        }
        ObjectManager.UpdateAbilities(abilities);

        count = message.ReadByte();
        for (int i = 0; i < count; i++)
        {
            Bullet bullet = Bullet.ReadData(message);
            ObjectManager.AddBullet(bullet);
        }
    }
예제 #3
0
            // Deseriaizes response data
            public static Request Deserialize(byte[] Data)
            {
                // Deserialize data
                PortableStorage Storage = new PortableStorage();

                Storage.Deserialize(Data);

                // Populate and return new response
                return(new Request
                {
                    PayloadData = CoreSyncData.Deserialize(Storage.GetEntry("payload_data"))
                });
            }
예제 #4
0
            // Deseriaizes response data
            public static Response Deserialize(byte[] Data)
            {
                // Deserialize data
                PortableStorage Storage = new PortableStorage();

                Storage.Deserialize(Data);

                // Populate and return new response
                return(new Response
                {
                    LocalTime = (ulong)Storage.GetEntry("local_time"),
                    PayloadData = CoreSyncData.Deserialize(Storage.GetEntry("payload_data")),
                    LocalPeerlist = Storage.DeserializeArrayFromBinary <PeerlistEntry>("local_peerlist")
                });
            }