// Player Unit Creation Functions public PlayerUnit CreatePlayerUnit(PlayerUnitRank rank, UnitClass unitClass) { // Create player unit object Transform playerUnitPrefab = GetPlayerUnitPrefabFromUnitClass(unitClass); PlayerUnit playerUnit = Instantiate(playerUnitPrefab, playerUnitSpawnLocation).GetComponent <PlayerUnit>(); // Initialize player unit data PlayerUnitData playerUnitData = unitFactory.CreatePlayerUnitData(rank, unitClass); playerUnit.InitializePlayerUnitGameObject(playerUnitData); // Prevent Stacking on Spawn MovePlayerUnitToOffset(playerUnit); // Check Achievement on every player unit creation GameEngine.GetInstance().achievementManager.CheckAchievementsForPlayerUnitCreation(); // Display message MessageType msgType = MessageType.INFO; if (playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.S || playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.X) { msgType = MessageType.POSITIVE; } GameEngine.GetInstance().messageQueue.PushMessage("[" + playerUnit.GetPlayerUnitData().GetRank() + " Rank Unit] " + Utils.CleanEnumString(playerUnit.GetPlayerUnitData().GetUnitClass().ToString()), msgType); // Sound Effect GameEngine.GetInstance().audioManager.PlayAudio(AudioManager.PLAYER_UNIT_CREATION_SOUND); return(playerUnit); }
/* * If this projectile collides with an enemy unit, inflict damage to it. */ private void OnTriggerEnter2D(Collider2D collision) { if (targetUnit == null) { return; // throw new GameplayException("Target unit is NULL!"); } if (collision.gameObject == targetUnit.gameObject) { EnemyUnit enemyUnit = targetUnit.GetComponent <EnemyUnit>(); // Projectile landing audio GameEngine.GetInstance().audioManager.PlayProjectileLandingSound(origin.GetPlayerUnitData().GetUnitClass(), origin.GetPlayerUnitData().GetRank()); if (origin.GetPlayerUnitData().GetAttackType() == AttackType.SPLASH) { InflictSplashDamage(enemyUnit, this.attackDamage, splashDamageCircle); // this won't deal damage to the actual target, so deal with the actual target as normal StartCoroutine(WaitTimeBeforeInflictingDamage(enemyUnit, this.attackDamage, SPLASH_CIRCLE_APPEARANCE_TIME)); } else if (origin.GetPlayerUnitData().GetAttackType() == AttackType.LARGE_SPLASH) { InflictSplashDamage(enemyUnit, this.attackDamage, largeSplashDamageCircle); StartCoroutine(WaitTimeBeforeInflictingDamage(enemyUnit, this.attackDamage, SPLASH_CIRCLE_APPEARANCE_TIME)); } else { InflictDamage(enemyUnit, this.attackDamage); Destroy(this.gameObject); } } }
public override bool CheckCondition() { int numInfantry = 0; int numMech = 0; int numLaser = 0; int numPsionic = 0; int numAcid = 0; int numBlade = 0; int numMagic = 0; int numFlame = 0; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); if (playerUnit.GetPlayerUnitData().GetRank() != PlayerUnitRank.A) { continue; } UnitClass playerUnitclass = playerUnit.GetPlayerUnitData().GetUnitClass(); if (playerUnitclass == UnitClass.INFANTRY) { numInfantry += 1; } else if (playerUnitclass == UnitClass.MECH) { numMech += 1; } else if (playerUnitclass == UnitClass.LASER) { numLaser += 1; } else if (playerUnitclass == UnitClass.PSIONIC) { numPsionic += 1; } else if (playerUnitclass == UnitClass.ACID) { numAcid += 1; } else if (playerUnitclass == UnitClass.BLADE) { numBlade += 1; } else if (playerUnitclass == UnitClass.MAGIC) { numMagic += 1; } else if (playerUnitclass == UnitClass.FLAME) { numFlame += 1; } } return((numInfantry >= 5) || (numMech >= 5) || (numLaser >= 5) || (numPsionic >= 5) || (numAcid >= 5) || (numBlade >= 5) || (numMagic >= 5) || (numFlame >= 5)); }
public override bool CheckCondition() { bool hasInfantry = false; bool hasMech = false; bool hasLaser = false; bool hasPsionic = false; bool hasAcid = false; bool hasBlade = false; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); if (playerUnit.GetPlayerUnitData().GetRank() != PlayerUnitRank.D) { continue; } UnitClass unitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); if (unitClass == UnitClass.INFANTRY) { hasInfantry = true; } else if (unitClass == UnitClass.MECH) { hasMech = true; } else if (unitClass == UnitClass.LASER) { hasLaser = true; } else if (unitClass == UnitClass.PSIONIC) { hasPsionic = true; } else if (unitClass == UnitClass.ACID) { hasAcid = true; } else if (unitClass == UnitClass.BLADE) { hasBlade = true; } } return(hasInfantry && hasMech && hasLaser && hasPsionic && hasAcid && hasBlade); }
public override bool CheckCondition() { int targetCount = 0; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); if (playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.B && playerUnit.GetPlayerUnitData().GetUnitClass() == this.targetClass) { targetCount += 1; } } return(targetCount >= 3); }
private bool CheckXCombo(PlayerUnit playerUnit) { if (GameEngine.GetInstance().hasXUnit) { return(false); } if (playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.D || playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.C || playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.X) { return(false); } UnitClass targetUnitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); PlayerUnit bUnit = null; PlayerUnit aUnit = null; PlayerUnit sUnit = null; foreach (PlayerUnit p in unitsOnMixer) { PlayerUnitRank playerUnitRank = p.GetPlayerUnitData().GetRank(); UnitClass playerUnitClass = p.GetPlayerUnitData().GetUnitClass(); if (bUnit == null && playerUnitRank == PlayerUnitRank.B && playerUnitClass == targetUnitClass) { bUnit = p; } else if (aUnit == null && playerUnitRank == PlayerUnitRank.A && playerUnitClass == targetUnitClass) { aUnit = p; } else if (sUnit == null && playerUnitRank == PlayerUnitRank.S && playerUnitClass == targetUnitClass) { sUnit = p; } } if (bUnit != null && aUnit != null && sUnit != null) { RemoveUnitSafely(bUnit); RemoveUnitSafely(aUnit); RemoveUnitSafely(sUnit); PlayerUnit newPlayerUnit = GameEngine.GetInstance().unitSpawner.CreatePlayerUnit(PlayerUnitRank.X, targetUnitClass); GameEngine.GetInstance().hasXUnit = true; return(true); } return(false); }
private bool CheckAllCCombo(PlayerUnit playerUnit) { if (playerUnit.GetPlayerUnitData().GetRank() != PlayerUnitRank.C) { return(false); } return(CheckAllCCombo()); }
private PlayerUnit GetMatchingUnitType(PlayerUnit playerUnit) { if (playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.S || playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.X) { return(null); } foreach (PlayerUnit p in unitsOnMixer) { if (playerUnit.name != p.name && playerUnit.GetPlayerUnitData().GetUnitClass() == p.GetPlayerUnitData().GetUnitClass() && playerUnit.GetPlayerUnitData().GetRank() == p.GetPlayerUnitData().GetRank()) { return(p); } } return(null); }
// ---------- Unit Selling ---------- public void SellUnitButton() { sellUnitModal.gameObject.SetActive(true); PlayerUnit unitToSell = GameEngine.GetInstance().playerUnitSelected; if (IsRareUnit(unitToSell)) { int tokenRefund = ComputeTokenRefund(unitToSell.GetPlayerUnitData().GetRank()); sellUnitModalText.text = "Are you sure you want to sell this unit ?\n (You will receive " + tokenRefund + " tokens for selling a Rare " + unitToSell.GetPlayerUnitData().GetRank() + " rank unit)"; } else { int gasRefund = ComputeGasRefund(unitToSell.GetPlayerUnitData().GetRank()); sellUnitModalText.text = "Are you sure you want to sell this unit ?\n (You will receive " + gasRefund + " gas for selling a " + unitToSell.GetPlayerUnitData().GetRank() + " rank unit)"; } GameEngine.GetInstance().audioManager.PlayAudio(AudioManager.BUTTON_CLICK_SOUND); }
/* * Sell unit sequence. * If rare unit sold, check rare unit seller achievement. * Selling regular units gives gas, selling rare units gives tokens. * Destroy the player unit at the end and close its unit selection panel. */ private void SellUnit(PlayerUnit unitToSell) { if (IsRareUnit(unitToSell)) { int tokenRefund = ComputeTokenRefund(unitToSell.GetPlayerUnitData().GetRank()); GameEngine.GetInstance().IncreaseTokenCount(tokenRefund); GameEngine.GetInstance().achievementManager.rareUnitsSold += 1; GameEngine.GetInstance().achievementManager.CheckAchievementsForUnitSelling(); } else { int gasRefund = ComputeGasRefund(unitToSell.GetPlayerUnitData().GetRank()); GameEngine.GetInstance().IncreaseGas(gasRefund); } Destroy(unitToSell.gameObject); GameEngine.GetInstance().unitSelectionPanel.CloseUnitSelectionPanelButton(); }
private bool CheckABCDForClass(UnitClass unitClassToCheck) { bool hasA = false; bool hasB = false; bool hasC = false; bool hasD = false; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); PlayerUnitRank playerUnitRank = playerUnit.GetPlayerUnitData().GetRank(); UnitClass playerUnitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); if (playerUnitRank == PlayerUnitRank.S || playerUnitRank == PlayerUnitRank.X || playerUnitClass != unitClassToCheck) { continue; } if (playerUnitClass == UnitClass.MAGIC || playerUnitClass == UnitClass.FLAME) { continue; } if (playerUnitRank == PlayerUnitRank.D) { hasD = true; } else if (playerUnitRank == PlayerUnitRank.C) { hasC = true; } else if (playerUnitRank == PlayerUnitRank.B) { hasB = true; } else if (playerUnitRank == PlayerUnitRank.A) { hasA = true; } } return(hasA && hasB && hasC && hasD); }
private bool CheckBCDCombo(PlayerUnit playerUnit) { if (playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.A || playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.S || playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.X) { return(false); } UnitClass targetUnitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); PlayerUnit dUnit = null; PlayerUnit cUnit = null; PlayerUnit bUnit = null; foreach (PlayerUnit p in unitsOnMixer) { PlayerUnitRank playerUnitRank = p.GetPlayerUnitData().GetRank(); UnitClass playerUnitClass = p.GetPlayerUnitData().GetUnitClass(); if (dUnit == null && playerUnitRank == PlayerUnitRank.D && playerUnitClass == targetUnitClass) { dUnit = p; } else if (cUnit == null && playerUnitRank == PlayerUnitRank.C && playerUnitClass == targetUnitClass) { cUnit = p; } else if (bUnit == null && playerUnitRank == PlayerUnitRank.B && playerUnitClass == targetUnitClass) { bUnit = p; } } if (dUnit != null && cUnit != null && bUnit != null) { RemoveUnitSafely(dUnit); RemoveUnitSafely(cUnit); RemoveUnitSafely(bUnit); PlayerUnit newPlayerUnit = GameEngine.GetInstance().unitSpawner.CreateRandomAUnit(); return(true); } return(false); }
//---------- Unit Mixing Methods ---------- private bool CheckMatchingUnit(PlayerUnit playerUnit) { PlayerUnit matchingPlayerUnit = null; matchingPlayerUnit = GetMatchingUnitType(playerUnit); if (matchingPlayerUnit != null) { PlayerUnitRank newUnitRank = GetNextTierRank(playerUnit.GetPlayerUnitData().GetRank()); RemoveUnitSafely(playerUnit); RemoveUnitSafely(matchingPlayerUnit); PlayerUnit newPlayerUnit = GameEngine.GetInstance().unitSpawner.CreateRandomUnitOfRank(newUnitRank); return(true); } return(false); }
public override bool CheckCondition() { int numRares = 0; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); UnitClass playerUnitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); if (playerUnitClass == UnitClass.MAGIC || playerUnitClass == UnitClass.FLAME) { numRares++; } } return(numRares >= 5); }
private bool CheckRareACombo(PlayerUnit playerUnit) { if (playerUnit.GetPlayerUnitData().GetRank() != PlayerUnitRank.A) { return(false); } PlayerUnit magicUnit = null; PlayerUnit flameUnit = null; foreach (PlayerUnit p in unitsOnMixer) { PlayerUnitRank playerUnitRank = p.GetPlayerUnitData().GetRank(); UnitClass playerUnitClass = p.GetPlayerUnitData().GetUnitClass(); if (playerUnitRank == PlayerUnitRank.A && playerUnitClass == UnitClass.MAGIC) { magicUnit = p; } else if (playerUnitRank == PlayerUnitRank.A && playerUnitClass == UnitClass.FLAME) { flameUnit = p; } } if (magicUnit != null && flameUnit != null) { RemoveUnitSafely(magicUnit); RemoveUnitSafely(flameUnit); GameEngine.GetInstance().messageQueue.PushMessage("2 A Rank Choosers", MessageType.INFO); GameEngine.GetInstance().AddABonusTokens(2); return(true); } return(false); }
public override bool CheckCondition() { if (GameEngine.GetInstance().hasXUnit) { return(false); } // TODO should we conside rare units? // Since can only have 1 X unit, we know which class we are looking for UnitClass classToLookFor = UnitClass.NONE; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); if (playerUnit.GetPlayerUnitData().GetRank() == PlayerUnitRank.X) { classToLookFor = playerUnit.GetPlayerUnitData().GetUnitClass(); break; } } bool hasS = false; bool hasA = false; bool hasB = false; bool hasC = false; bool hasD = false; foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); PlayerUnitRank playerUnitRank = playerUnit.GetPlayerUnitData().GetRank(); UnitClass playerUnitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); if (playerUnitClass != classToLookFor) { continue; } if (playerUnitRank == PlayerUnitRank.D) { hasD = true; } else if (playerUnitRank == PlayerUnitRank.C) { hasC = true; } else if (playerUnitRank == PlayerUnitRank.B) { hasB = true; } else if (playerUnitRank == PlayerUnitRank.A) { hasA = true; } else if (playerUnitRank == PlayerUnitRank.S) { hasS = true; } } return(hasS && hasA && hasB && hasC && hasD); }
public override bool CheckCondition() { bool hasInfantry = false; bool hasMech = false; bool hasLaser = false; bool hasPsionic = false; bool hasAcid = false; bool hasBlade = false; bool hasMagic = false; bool hasFlame = false; GameObject[] playerUnits = GameObject.FindGameObjectsWithTag("PlayerUnit"); foreach (GameObject g in playerUnits) { PlayerUnit playerUnit = g.GetComponent <PlayerUnit>(); if (playerUnit.GetPlayerUnitData().GetRank() != PlayerUnitRank.B) { continue; } UnitClass unitClass = playerUnit.GetPlayerUnitData().GetUnitClass(); if (unitClass == UnitClass.INFANTRY) { hasInfantry = true; } else if (unitClass == UnitClass.MECH) { hasMech = true; } else if (unitClass == UnitClass.LASER) { hasLaser = true; } else if (unitClass == UnitClass.PSIONIC) { hasPsionic = true; } else if (unitClass == UnitClass.ACID) { hasAcid = true; } else if (unitClass == UnitClass.BLADE) { hasBlade = true; } else if (unitClass == UnitClass.MAGIC) { hasMagic = true; } else if (unitClass == UnitClass.FLAME) { hasFlame = true; } } int uniqueBTypes = (hasInfantry ? 1 : 0) + (hasMech ? 1 : 0) + (hasLaser ? 1 : 0) + (hasPsionic ? 1 : 0) + (hasAcid ? 1 : 0) + (hasBlade ? 1 : 0) + (hasMagic ? 1 : 0) + (hasFlame ? 1 : 0); return(uniqueBTypes >= 7); }
private bool IsRareUnit(PlayerUnit playerUnit) { return(playerUnit.GetPlayerUnitData().GetUnitClass() == UnitClass.MAGIC || playerUnit.GetPlayerUnitData().GetUnitClass() == UnitClass.FLAME); }