namespace Supercell.Laser.Logic.Message.Battle { using Supercell.Laser.Logic.Battle.Structures; using Supercell.Laser.Logic.Helper; using Supercell.Laser.Titan.Util; public class StartLoadingMessage : GameMessage { public List Players; public int OwnIndex; public int TeamIndex; public int LocationId; public BattlePlayerMap PlayerMap; public int GameMode; public int GameType; public int SpectateMode; public bool isFriendlyMatch; public bool IsPornRanked; public int PornRound; public int MapMode = 1; //ЫЫ 1 ПО ДЕФОЛТУ!! public List Modifiers; public StartLoadingMessage() : base() { Players = new List(); } public void SetPlayerMap(BattlePlayerMap map) { if (map != null) { MapMode = 5; this.PlayerMap = map; LocationId = 0; GameMode = map.GMV; } } public override void Encode() { Stream.WriteInt(Players.Count); Stream.WriteInt(OwnIndex); Stream.WriteInt(TeamIndex); Stream.WriteInt(Players.Count); foreach (BattlePlayer player in Players) { player.Encode(Stream); } Stream.WriteInt(0); // array Stream.WriteInt(0); // array Stream.WriteInt(0); // randomseed Stream.WriteVInt(GameType); Stream.WriteVInt(MapMode); Stream.WriteVInt(GameMode); Stream.WriteBoolean(false); Stream.WriteVInt(SpectateMode); Stream.WriteVInt(0); Console.WriteLine($"[PlayerMap] Before Location/PlayerMap block, offset={Stream.GetOffset()}"); ByteStreamHelper.WriteDataReference(Stream, PlayerMap == null ? LocationId : 0); Console.WriteLine($"[PlayerMap] After WriteDataReference, offset={Stream.GetOffset()}"); ByteStreamHelper.WriteBattlePlayerMap(Stream, PlayerMap); Console.WriteLine($"[PlayerMap] After WriteBattlePlayerMap, offset={Stream.GetOffset()}"); Stream.WriteBoolean(false); // Underdog Stream.WriteBoolean(false); Stream.WriteVInt(0); Stream.WriteVInt(0); // if(IsPornRanked) Stream.WriteVInt(PornRound); // else Stream.WriteVInt(0); // if(IsPornRanked) Stream.WriteVInt(PornRound); // else Stream.WriteVInt(0); } public override int GetMessageType() { return 20559; } public override int GetServiceNodeType() { return 4; } } }