public override void step() { nextAttackTime -= Chronos.deltaTime; remainingDuration -= Chronos.deltaTime; if (remainingDuration <= 0) { destroyable = true; return; } if (nextAttackTime <= 0 && targetStrategy != null) { nextAttackTime = ATTACK_COOLDOWN; Collection <Minion> targetMinions = targetStrategy.selectTargetsFromBoard(ownerPlayer.board, getWorldPosition(), numOfTarget, 0, RADIUS_DEFAULT, MinionStateSelection.ALIVE); foreach (Minion minion in targetMinions) { SeedTowerPlantMissile missile = new SeedTowerPlantMissile(ownerTower, worldPosition, minion); if (ownerPlayer.game.missiles.ContainsKey(missile.instanceId) == false) { ownerPlayer.game.missiles.Add(missile.instanceId, missile); } GAreaEffect_SeedTowerAreaEffect_createMissile.sendMessage(ownerPlayer.game.players, missile); } } }
public static void sendMessage(ICollection <Player> receiverPlayers, SeedTowerPlantMissile missile) { RawMessage msg = new RawMessage(); msg.putInt("id", TypeIdGenerator.getMessageId(typeof(GAreaEffect_SeedTowerAreaEffect_createMissile))); if (receiverPlayers != null && receiverPlayers.Count != 0) { msg.putInt("iid", missile.instanceId); msg.putFloat("x", missile.startWorldPosition.x); msg.putFloat("y", missile.startWorldPosition.y); msg.putFloat("z", missile.startWorldPosition.z); msg.putInt("tid", TypeIdGenerator.getMissileId(missile.GetType())); msg.putInt("mid", missile.targetMinion.instanceId); foreach (var receiverPlayer in receiverPlayers) { receiverPlayer.user.session.client.SendMessage(msg); } } }