public override void processMessage(RawMessage message, User user) { if (user.player != null && user.player.playerState != Player.PlayerState.DEAD && // adam oyunda mi, ölü mü user.player.game.gameState == Science_Wars_Server.Game.GameState.PLAYTIME && // oyun pause olmamis ya da bitmemis degil mi? user.player.board.nextBoard.boardState != Board.BoardState.COLLAPSING) // onumuzdeki board çöküyor mu? { int typeId = message.getInt("tid"); if (typeId < 0 || typeId >= user.unlockedMinions.Length) { return; } if (user.player.availableMinions[typeId] == false) // bu availableMinions zaten sadece o scienceType a ait minionlara true iceriyor. Bir daha science type kontrolu yapmaya gerek yok { return; } Minion minion = (Minion)Activator.CreateInstance(TypeIdGenerator.getMinionType(typeId), user.player.game, user.player); if (user.player.trySpendCash(minion.getCost())) { // STATCODE PlayerStats pStats = user.player.game.statTracker.getPlayerStatsOfPlayer(user.player); pStats.minionsSend += 1; user.player.addIncome(minion.getIncome()); user.player.board.nextBoard.AddMinion(minion); OutgoingMessages.Game.GCreateMinionResult.sendMessage(user.player.game.players, minion); } } }
public override void processMessage(RawMessage message, User user) { if (user.player != null && user.player.playerState != Player.PlayerState.DEAD && // adam oyunda mi, ölü mü user.player.game.gameState == Science_Wars_Server.Game.GameState.PLAYTIME && // oyun pause olmamis ya da bitmemis degil mi? user.player.board.nextBoard.boardState != Board.BoardState.COLLAPSING) // onumuzdeki board çöküyor mu? { int oldMinionTypeId = message.getInt("tid"); int upgradedMinionTypeId = message.getInt("utid"); if ((oldMinionTypeId < 0 || oldMinionTypeId >= user.player.availableMinions.Length) && // verilen typeId'ler mantikli. (upgradedMinionTypeId < 0 || upgradedMinionTypeId >= user.player.availableMinions.Length)) { return; } if (user.player.availableMinions[oldMinionTypeId] == false || user.unlockedMinions[upgradedMinionTypeId] == false) // bu minionlar unlocked mi? (dikkat: birinin unlock durumuna bakiyoruz digerinin available durumuna ) { return; } if (checkIfMinionUpgradableTo(oldMinionTypeId, TypeIdGenerator.getMinionType(upgradedMinionTypeId)) == false) // bu minion verilen miniona upgrade edilebilir mi { return; } Minion minion = (Minion)Activator.CreateInstance(TypeIdGenerator.getMinionType(upgradedMinionTypeId), user.player.game, user.player); // bir instance olusturuyoruz. tek sebebi upgradeCost u ogrenmek. damn... if (user.player.trySpendCash(minion.getUpgradeCost())) { user.player.availableMinions[oldMinionTypeId] = false; user.player.availableMinions[upgradedMinionTypeId] = true; OutgoingMessages.Game.GUpgradeMinionResult.sendMessage(user.player, oldMinionTypeId, upgradedMinionTypeId); } } }
private void setAvailableMinionsOfPlayer() { Type root = null; switch (PlayerMe.self.board.scienceType) { case ScienceType.PHYS: root = typeof(PhysicsMinion); break; case ScienceType.CHEM: root = typeof(ChemistryMinion); break; case ScienceType.BIO: root = typeof(BiologyMinion); break; } PlayerMe.availableMinionTypes = new List <Type>(); for (int i = 0; i < UserMe.unlockedMinions.Length; i++) { if (UserMe.unlockedMinions[i]) { Type minionType = TypeIdGenerator.getMinionType(i); MinionNode minionNode = TypeIdGenerator.getMinionNodeInsts(minionType); if (UserMe.unlockedMinions[i] && minionNode.parent != null && minionNode.parent.minionType == root) { PlayerMe.availableMinionTypes.Add(minionType); } } } }
public override void processMessage(RawMessage message) { int tid = message.getInt("tid"); Minion minion = (Minion)System.Activator.CreateInstance(TypeIdGenerator.getMinionType(tid)); User user = Assets.Scripts.Engine.Game.getUserById(message.getInt("uid")); if (user != null) // random minionlarda null gelebilir. { minion.ownerPlayer = user.player; if (user.player == PlayerMe.self) { PlayerMe.income += minion.getIncome(); PlayerMe.cash -= minion.getCost(); Runner.Graphics.updateCashAndIncome(); } } minion.instanceId = message.getInt("iid"); minion.position = new MinionPosition(); minion.position.pathPosition = new PathPosition(0, 0); minion.position.board = Assets.Scripts.Engine.Game.getBoardById(message.getInt("bid")); minion.position.pathPosition.pointIndex = message.getInt("cid"); minion.position.pathPosition.ratio = message.getFloat("t"); minion.position.board.AddMinion(minion); Runner.Graphics.createMinion(minion); }
public override void processMessage(RawMessage message) { Type currentMinionType = TypeIdGenerator.getMinionType(message.getInt("tid")); Type upgradedMinionType = TypeIdGenerator.getMinionType(message.getInt("utid")); for (int i = 0; i < PlayerMe.availableMinionTypes.Count; i++) { if (currentMinionType == PlayerMe.availableMinionTypes[i]) { PlayerMe.availableMinionTypes[i] = upgradedMinionType; break; } } Runner.Graphics.upgradeMinion(currentMinionType, upgradedMinionType); }
private void checkRandomMinionTime() { if (currentlySpawning) { nextRandomMinionTime -= Chronos.deltaTime; if (nextRandomMinionTime <= 0) { nextRandomMinionTime = RANDOM_MINION_TIME_BETWEEN_EACH_MINION; remainingRandomMinionCount--; // ne tur minionlar spawnlayabilecegine karar vermek lazim. suanda random, kullanicilarin yapmasi mumkun olmayanlar bile cikabiliyor. // mesela frankenscienist dev minion da cikabilir. Type nextType = TypeIdGenerator.getMinionType(RandomNumberProvider.random.Next(TypeIdGenerator.getMinionTypeCount())); Minion newSpawn; foreach (var player in players) { if (player.playerState == Player.PlayerState.ALIVE) { newSpawn = (Minion)Activator.CreateInstance(nextType, this, null); player.board.AddMinion(newSpawn); Messages.OutgoingMessages.Game.GCreateMinionResult.sendMessage(players, newSpawn); } } if (remainingRandomMinionCount == 0) { currentlySpawning = false; nextRandomMinionTime = RANDOM_MINION_TIME_DEFAULT; Messages.OutgoingMessages.Game.GRandomMinionTimeInfo.sendMessage(players); } } } else if (nextRandomMinionTime <= 0) { remainingRandomMinionCount = RandomNumberProvider.random.Next(3, 4); currentlySpawning = true; } }