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); } } }
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); } } }