// Use this for initialization void Start() { upgradesObj = new EmptyTowerUpgrade(); TowerUpgradeType upgradesCopy = upgrades; ITowerUpgrade buffer; while (upgradesCopy != 0) { buffer = TowerUpgrade.AddUpgrade(upgradesObj, ref upgradesCopy); upgradesObj = buffer; } if (tower != null) { upgradesObj.Effect(tower); } }
public static ITowerUpgrade AddUpgrade(ITowerUpgrade prev, ref TowerUpgradeType type) { if ((type & TowerUpgradeType.DAMAGE) != 0) { type &= ~TowerUpgradeType.DAMAGE; return(new DamageUpgrade(prev)); } if ((type & TowerUpgradeType.ATTACK_SPEED) != 0) { type &= ~TowerUpgradeType.ATTACK_SPEED; return(new AttackSpeedUpgrade(prev)); } if ((type & TowerUpgradeType.REWARD) != 0) { type &= ~TowerUpgradeType.REWARD; return(new RewardUpgrade(prev)); } return(new EmptyTowerUpgrade()); }
public TowerUpgrade(ITowerUpgrade prev) { prevUpgrade = prev; }
public AttackSpeedUpgrade(ITowerUpgrade prev) : base(prev) { }
public RewardUpgrade(ITowerUpgrade prev) : base(prev) { }
public DamageUpgrade(ITowerUpgrade prev) : base(prev) { }