예제 #1
0
		public StateUpdateEventArgs(NetBuffer msg) : base(msg)
		{
			EntitiesUpdatedState = new List<StateUpdateData>();
			RemarkableEvents = new List<RemarkableEventData>();

			LastAcknowledgedActionID = msg.ReadUInt64();
			Time = msg.ReadDouble();
			Vec2 velocity = new Vec2(msg.ReadFloat(), msg.ReadFloat());
			byte nbClients = msg.ReadByte();
			for (byte i = 0; i < nbClients; ++i) {
				ulong id = msg.ReadUInt64();
				Vec2 pos = new Vec2(msg.ReadFloat(), msg.ReadFloat());
				ChampionAnimation anim = (ChampionAnimation)msg.ReadByte();
				bool facingLeft = msg.ReadBoolean();

				EntitiesUpdatedState.Add(new StateUpdateData(id, pos, velocity, anim, facingLeft));
			}
			while (msg.Position != msg.LengthBits) {
				ServerCommand cmd = (ServerCommand)msg.ReadByte();
				RemarkableEventData data = null;
				switch (cmd) {
					case ServerCommand.SpellCast:
						data = new SpellCastEventData(
							msg.ReadUInt64(),
							msg.ReadUInt64(),
							(SpellTypes)msg.ReadByte(),
							msg.ReadFloat(),
							new Vec2(msg.ReadFloat(), msg.ReadFloat()),
							new Vec2(msg.ReadFloat(), msg.ReadFloat()),
							TimeSpan.FromSeconds(msg.ReadFloat()),
							msg.ReadFloat(),
							msg.ReadFloat());
						break;

					case ServerCommand.SpellDisappear:
						data = new SpellDisappearEventData(msg.ReadUInt64());
						break;

					case ServerCommand.StatsChanged:
						data = new StatsChangedEventData(msg.ReadUInt64(), msg.ReadFloat());
						break;

					case ServerCommand.ChampionDied:
						data = new ChampionDiedEventData(msg.ReadUInt64(),
						                                 msg.ReadUInt64(),
						                                 msg.ReadUInt32(), msg.ReadUInt32(), msg.ReadUInt32(), msg.ReadUInt32(),
						                                 TimeSpan.FromSeconds(msg.ReadUInt16()));
						break;

					case ServerCommand.StructureStatsChanged:
						data = new StructureStatsChangedEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right,
						                                          (StructureTypes)msg.ReadByte(),
						                                          msg.ReadFloat());
						break;

					case ServerCommand.StructureDestroyed:
						data = new StructureDestroyedEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right,
						                                       (StructureTypes)msg.ReadByte());
						break;

					case ServerCommand.EndOfGame:
						data = new EndOfGameEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right);
						break;

					case ServerCommand.TowerPreparingToShoot:
						data = new TowerPreparingToShootEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right,
						                                          (StructureTypes)msg.ReadByte());
						break;

					default:
						Debug.Fail("Unknown server command when updating (unknown remarkable event)");
						break;
				}
				if (data != null) {
					RemarkableEvents.Add(data);
				}
			}
		}
예제 #2
0
        public StateUpdateEventArgs(NetBuffer msg) : base(msg)
        {
            EntitiesUpdatedState = new List <StateUpdateData>();
            RemarkableEvents     = new List <RemarkableEventData>();

            LastAcknowledgedActionID = msg.ReadUInt64();
            Time = msg.ReadDouble();
            Vec2 velocity  = new Vec2(msg.ReadFloat(), msg.ReadFloat());
            byte nbClients = msg.ReadByte();

            for (byte i = 0; i < nbClients; ++i)
            {
                ulong             id         = msg.ReadUInt64();
                Vec2              pos        = new Vec2(msg.ReadFloat(), msg.ReadFloat());
                ChampionAnimation anim       = (ChampionAnimation)msg.ReadByte();
                bool              facingLeft = msg.ReadBoolean();

                EntitiesUpdatedState.Add(new StateUpdateData(id, pos, velocity, anim, facingLeft));
            }
            while (msg.Position != msg.LengthBits)
            {
                ServerCommand       cmd  = (ServerCommand)msg.ReadByte();
                RemarkableEventData data = null;
                switch (cmd)
                {
                case ServerCommand.SpellCast:
                    data = new SpellCastEventData(
                        msg.ReadUInt64(),
                        msg.ReadUInt64(),
                        (SpellTypes)msg.ReadByte(),
                        msg.ReadFloat(),
                        new Vec2(msg.ReadFloat(), msg.ReadFloat()),
                        new Vec2(msg.ReadFloat(), msg.ReadFloat()),
                        TimeSpan.FromSeconds(msg.ReadFloat()),
                        msg.ReadFloat(),
                        msg.ReadFloat());
                    break;

                case ServerCommand.SpellDisappear:
                    data = new SpellDisappearEventData(msg.ReadUInt64());
                    break;

                case ServerCommand.StatsChanged:
                    data = new StatsChangedEventData(msg.ReadUInt64(), msg.ReadFloat());
                    break;

                case ServerCommand.ChampionDied:
                    data = new ChampionDiedEventData(msg.ReadUInt64(),
                                                     msg.ReadUInt64(),
                                                     msg.ReadUInt32(), msg.ReadUInt32(), msg.ReadUInt32(), msg.ReadUInt32(),
                                                     TimeSpan.FromSeconds(msg.ReadUInt16()));
                    break;

                case ServerCommand.StructureStatsChanged:
                    data = new StructureStatsChangedEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right,
                                                              (StructureTypes)msg.ReadByte(),
                                                              msg.ReadFloat());
                    break;

                case ServerCommand.StructureDestroyed:
                    data = new StructureDestroyedEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right,
                                                           (StructureTypes)msg.ReadByte());
                    break;

                case ServerCommand.EndOfGame:
                    data = new EndOfGameEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right);
                    break;

                case ServerCommand.TowerPreparingToShoot:
                    data = new TowerPreparingToShootEventData(msg.ReadBoolean() ? Teams.Left : Teams.Right,
                                                              (StructureTypes)msg.ReadByte());
                    break;

                default:
                    Debug.Fail("Unknown server command when updating (unknown remarkable event)");
                    break;
                }
                if (data != null)
                {
                    RemarkableEvents.Add(data);
                }
            }
        }