public void NotifyLevelPropSpawn(int userId, ILevelProp levelProp) { var levelPropSpawnPacket = new LevelPropSpawn(levelProp); _packetHandlerManager.SendPacket(userId, levelPropSpawnPacket, Channel.CHL_S2C); }
public bool HandlePacket(Peer peer, byte[] data) { var start = new StatePacket2(PacketCmdS2C.PKT_S2C_StartSpawn); _game.PacketHandlerManager.sendPacket(peer, start, Channel.CHL_S2C); _logger.LogCoreInfo("Spawning map"); int playerId = 0; foreach (var p in _playerManager.GetPlayers()) { var spawn = new HeroSpawn(p.Item2, playerId++); _game.PacketHandlerManager.sendPacket(peer, spawn, Channel.CHL_S2C); var info = new PlayerInfo(p.Item2); _game.PacketHandlerManager.sendPacket(peer, info, Channel.CHL_S2C); } var peerInfo = _playerManager.GetPeerInfo(peer); var bluePill = _itemManager.GetItemType(_game.Map.GetBluePillId()); var itemInstance = peerInfo.Champion.getInventory().SetExtraItem(7, bluePill); var buyItem = new BuyItemAns(peerInfo.Champion, itemInstance); _game.PacketHandlerManager.sendPacket(peer, buyItem, Channel.CHL_S2C); // Runes byte runeItemSlot = 14; foreach (var rune in peerInfo.Champion.RuneList._runes) { var runeItem = _itemManager.GetItemType(rune.Value); var newRune = peerInfo.Champion.getInventory().SetExtraItem(runeItemSlot, runeItem); _playerManager.GetPeerInfo(peer).Champion.GetStats().AddBuff(runeItem); runeItemSlot++; } // Not sure why both 7 and 14 skill slot, but it does not seem to work without it var skillUp = new SkillUpPacket(peerInfo.Champion.NetId, 7, 1, (byte)peerInfo.Champion.getSkillPoints()); _game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY); skillUp = new SkillUpPacket(peerInfo.Champion.NetId, 14, 1, (byte)peerInfo.Champion.getSkillPoints()); _game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY); peerInfo.Champion.GetStats().setSpellEnabled(7, true); peerInfo.Champion.GetStats().setSpellEnabled(14, true); peerInfo.Champion.GetStats().setSummonerSpellEnabled(0, true); peerInfo.Champion.GetStats().setSummonerSpellEnabled(1, true); var objects = _game.Map.GetObjects(); foreach (var kv in objects) { if (kv.Value is LaneTurret) { var t = kv.Value as LaneTurret; var turretSpawn = new TurretSpawn(t); _game.PacketHandlerManager.sendPacket(peer, turretSpawn, Channel.CHL_S2C); // Fog Of War var fow = new FogUpdate2(t); _game.PacketHandlerManager.broadcastPacketTeam(t.Team, fow, Channel.CHL_S2C); // To suppress game HP-related errors for enemy turrets out of vision var sh = new SetHealth(t); _game.PacketHandlerManager.sendPacket(peer, sh, Channel.CHL_S2C); foreach (var item in t.Inventory) { if (item == null) { continue; } _game.PacketNotifier.notifyItemBought(t, item as Item); } continue; } else if (kv.Value is LevelProp) { var lp = kv.Value as LevelProp; var lpsPacket = new LevelPropSpawn(lp); _game.PacketHandlerManager.sendPacket(peer, lpsPacket, Channel.CHL_S2C); } else if (kv.Value is Inhibitor || kv.Value is Nexus) { var inhib = kv.Value as Unit; var ms = new MinionSpawn2(inhib.NetId); _game.PacketHandlerManager.sendPacket(peer, ms, Channel.CHL_S2C); var sh = new SetHealth(inhib.NetId); _game.PacketHandlerManager.sendPacket(peer, sh, Channel.CHL_S2C); } } // TODO shop map specific? // Level props are just models, we need button-object minions to allow the client to interact with it if (peerInfo != null && peerInfo.Team == TeamId.TEAM_BLUE) { // Shop (blue team) var ms1 = new MinionSpawn2(0xff10c6db); _game.PacketHandlerManager.sendPacket(peer, ms1, Channel.CHL_S2C); var sh1 = new SetHealth(0xff10c6db); _game.PacketHandlerManager.sendPacket(peer, sh1, Channel.CHL_S2C); } else if (peerInfo != null && peerInfo.Team == TeamId.TEAM_PURPLE) { // Shop (purple team) var ms1 = new MinionSpawn2(0xffa6170e); _game.PacketHandlerManager.sendPacket(peer, ms1, Channel.CHL_S2C); var sh1 = new SetHealth(0xffa6170e); _game.PacketHandlerManager.sendPacket(peer, sh1, Channel.CHL_S2C); } var end = new StatePacket(PacketCmdS2C.PKT_S2C_EndSpawn); return(_game.PacketHandlerManager.sendPacket(peer, end, Channel.CHL_S2C)); }
public override bool HandlePacket(Peer peer, byte[] data) { var start = new StatePacket2(PacketCmd.PKT_S2C_StartSpawn); _game.PacketHandlerManager.sendPacket(peer, start, Channel.CHL_S2C); _logger.LogCoreInfo("Spawning map"); int playerId = 0; foreach (var p in _playerManager.GetPlayers()) { var spawn = new HeroSpawn(p.Item2, playerId++); _game.PacketHandlerManager.sendPacket(peer, spawn, Channel.CHL_S2C); var info = new AvatarInfo(p.Item2); _game.PacketHandlerManager.sendPacket(peer, info, Channel.CHL_S2C); } var peerInfo = _playerManager.GetPeerInfo(peer); var bluePill = _itemManager.GetItemType(_game.Map.MapGameScript.BluePillId); var itemInstance = peerInfo.Champion.getInventory().SetExtraItem(7, bluePill); var buyItem = new BuyItemResponse(peerInfo.Champion, itemInstance); _game.PacketHandlerManager.sendPacket(peer, buyItem, Channel.CHL_S2C); // Runes byte runeItemSlot = 14; foreach (var rune in peerInfo.Champion.RuneList._runes) { var runeItem = _itemManager.GetItemType(rune.Value); var newRune = peerInfo.Champion.getInventory().SetExtraItem(runeItemSlot, runeItem); _playerManager.GetPeerInfo(peer).Champion.GetStats().AddModifier(runeItem); runeItemSlot++; } // Not sure why both 7 and 14 skill slot, but it does not seem to work without it var skillUp = new SkillUpResponse(peerInfo.Champion.NetId, 7, 1, (byte)peerInfo.Champion.getSkillPoints()); _game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY); skillUp = new SkillUpResponse(peerInfo.Champion.NetId, 14, 1, (byte)peerInfo.Champion.getSkillPoints()); _game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY); peerInfo.Champion.GetStats().setSpellEnabled(7, true); peerInfo.Champion.GetStats().setSpellEnabled(14, true); peerInfo.Champion.GetStats().setSummonerSpellEnabled(0, true); peerInfo.Champion.GetStats().setSummonerSpellEnabled(1, true); var objects = _game.ObjectManager.GetObjects(); foreach (var kv in objects) { if (kv.Value is LaneTurret) { var turret = kv.Value as LaneTurret; var turretSpawn = new TurretSpawn(turret); _game.PacketHandlerManager.sendPacket(peer, turretSpawn, Channel.CHL_S2C); // Fog Of War var fogOfWarPacket = new FogUpdate2(turret, _networkIdManager); _game.PacketHandlerManager.broadcastPacketTeam(turret.Team, fogOfWarPacket, Channel.CHL_S2C); // To suppress game HP-related errors for enemy turrets out of vision var setHealthPacket = new SetHealth(turret); _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C); foreach (var item in turret.Inventory) { if (item == null) { continue; } _game.PacketNotifier.NotifyItemBought(turret, item as Item); } continue; } else if (kv.Value is LevelProp) { var levelProp = kv.Value as LevelProp; var levelPropSpawnPacket = new LevelPropSpawn(levelProp); _game.PacketHandlerManager.sendPacket(peer, levelPropSpawnPacket, Channel.CHL_S2C); continue; } else if (kv.Value is Champion) { var champion = kv.Value as Champion; if (champion.IsVisibleByTeam(peerInfo.Champion.Team)) { var enterVisionPacket = new EnterVisionAgain(champion); _game.PacketHandlerManager.sendPacket(peer, enterVisionPacket, Channel.CHL_S2C); } } else if (kv.Value is Inhibitor || kv.Value is Nexus) { var inhibtor = kv.Value as AttackableUnit; var minionSpawnPacket = new MinionSpawn2(inhibtor.NetId); _game.PacketHandlerManager.sendPacket(peer, minionSpawnPacket, Channel.CHL_S2C); var setHealthPacket = new SetHealth(inhibtor.NetId); _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C); continue; } else if (kv.Value is Projectile) { var projectile = kv.Value as Projectile; if (projectile.IsVisibleByTeam(peerInfo.Champion.Team)) { var spawnProjectilePacket = new SpawnProjectile(projectile); _game.PacketHandlerManager.sendPacket(peer, spawnProjectilePacket, Channel.CHL_S2C); } continue; } else { _logger.LogCoreWarning("Object of type: " + kv.Value.GetType() + " not handled in HandleSpawn."); } } // TODO shop map specific? // Level props are just models, we need button-object minions to allow the client to interact with it if (peerInfo != null && peerInfo.Team == TeamId.TEAM_BLUE) { // Shop (blue team) var minionSpawnPacket = new MinionSpawn2(0xff10c6db); _game.PacketHandlerManager.sendPacket(peer, minionSpawnPacket, Channel.CHL_S2C); var setHealthPacket = new SetHealth(0xff10c6db); _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C); } else if (peerInfo != null && peerInfo.Team == TeamId.TEAM_PURPLE) { // Shop (purple team) var minionSpawnPacket = new MinionSpawn2(0xffa6170e); _game.PacketHandlerManager.sendPacket(peer, minionSpawnPacket, Channel.CHL_S2C); var setHealthPacket = new SetHealth(0xffa6170e); _game.PacketHandlerManager.sendPacket(peer, setHealthPacket, Channel.CHL_S2C); } var endSpawnPacket = new StatePacket(PacketCmd.PKT_S2C_EndSpawn); return(_game.PacketHandlerManager.sendPacket(peer, endSpawnPacket, Channel.CHL_S2C)); }
public bool HandlePacket(Peer peer, byte[] data, Game game) { var start = new StatePacket2(PacketCmdS2C.PKT_S2C_StartSpawn); game.PacketHandlerManager.sendPacket(peer, start, Channel.CHL_S2C); Logger.LogCoreInfo("Spawning map"); int playerId = 0; foreach (var p in game.GetPlayers()) { var spawn = new HeroSpawn(p.Item2, playerId++); game.PacketHandlerManager.sendPacket(peer, spawn, Channel.CHL_S2C); var info = new PlayerInfo(p.Item2); game.PacketHandlerManager.sendPacket(peer, info, Channel.CHL_S2C); } var peerInfo = game.GetPeerInfo(peer); var bluePill = game.ItemManager.GetItemType(game.GetMap().GetBluePillId()); var itemInstance = peerInfo.GetChampion().Inventory.SetExtraItem(7, bluePill); var buyItem = new BuyItemAns(peerInfo.GetChampion(), itemInstance); game.PacketHandlerManager.sendPacket(peer, buyItem, Channel.CHL_S2C); // Not sure why both 7 and 14 skill slot, but it does not seem to work without it var skillUp = new SkillUpPacket(peerInfo.GetChampion().getNetId(), 7, 1, (byte)peerInfo.GetChampion().getSkillPoints()); game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY); skillUp = new SkillUpPacket(peerInfo.GetChampion().getNetId(), 14, 1, (byte)peerInfo.GetChampion().getSkillPoints()); game.PacketHandlerManager.sendPacket(peer, skillUp, Channel.CHL_GAMEPLAY); peerInfo.GetChampion().GetStats().setSpellEnabled(7, true); peerInfo.GetChampion().GetStats().setSpellEnabled(14, true); peerInfo.GetChampion().GetStats().setSummonerSpellEnabled(0, true); peerInfo.GetChampion().GetStats().setSummonerSpellEnabled(1, true); var objects = game.GetMap().GetObjects(); foreach (var kv in objects) { if (kv.Value is Turret) { var t = kv.Value as Turret; var turretSpawn = new TurretSpawn(t); game.PacketHandlerManager.sendPacket(peer, turretSpawn, Channel.CHL_S2C); // To suppress game HP-related errors for enemy turrets out of vision var sh = new SetHealth(t); game.PacketHandlerManager.sendPacket(peer, sh, Channel.CHL_S2C); continue; } else if (kv.Value is LevelProp) { var lp = kv.Value as LevelProp; var lpsPacket = new LevelPropSpawn(lp); game.PacketHandlerManager.sendPacket(peer, lpsPacket, Channel.CHL_S2C); } else if (kv.Value is Inhibitor || kv.Value is Nexus) { var inhib = kv.Value as Unit; var ms = new MinionSpawn2(inhib.getNetId()); game.PacketHandlerManager.sendPacket(peer, ms, Channel.CHL_S2C); var sh = new SetHealth(inhib.getNetId()); game.PacketHandlerManager.sendPacket(peer, sh, Channel.CHL_S2C); } } // TODO shop map specific? // Level props are just models, we need button-object minions to allow the client to interact with it if (peerInfo != null && peerInfo.GetTeam() == TeamId.TEAM_BLUE) { // Shop (blue team) var ms1 = new MinionSpawn2(0xff10c6db); game.PacketHandlerManager.sendPacket(peer, ms1, Channel.CHL_S2C); var sh1 = new SetHealth(0xff10c6db); game.PacketHandlerManager.sendPacket(peer, sh1, Channel.CHL_S2C); } else if (peerInfo != null && peerInfo.GetTeam() == TeamId.TEAM_PURPLE) { // Shop (purple team) var ms1 = new MinionSpawn2(0xffa6170e); game.PacketHandlerManager.sendPacket(peer, ms1, Channel.CHL_S2C); var sh1 = new SetHealth(0xffa6170e); game.PacketHandlerManager.sendPacket(peer, sh1, Channel.CHL_S2C); } var end = new StatePacket(PacketCmdS2C.PKT_S2C_EndSpawn); return(game.PacketHandlerManager.sendPacket(peer, end, Channel.CHL_S2C)); }