//怪物通过事件处理 private void OnMonsterPass(Game aGame, Monster aMonster) { FLife--; if (FLife == 0) { FinishGame(false); FBornCount = 0; } RefreshCaption(); }
protected override Tower GetTower(Game aGame) { return new TrapTower(aGame); }
//击杀怪物事件处理 private void OnMonsterKilled(Game aGame, Monster aMonster) { MonsterBase m = (MonsterBase)aMonster; AddMoneyClip(aMonster.Position, m.Money); FMoney += m.Money; FKilled += 1; RefreshCaption(); }
protected abstract Tower GetTower(Game aGame);
public TrapTower(Game aGame) : base(aGame, new int[] { 1000, 2000 }, new int[] { 100, 200 }) { }
protected override Tower GetTower(Game aGame) { return new SpeedTower(aGame); }
public Tower GetTower(ref int Money, Game aGame) { Money -= GetMoney(); return GetTower(aGame); }
public SpeedTower(Game aGame) : base(aGame, new int[] { 32, 162, 512, 1250, 2592 }, new int[] { 20, 40, 60, 80, 100 }) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="LevelMoney">升级必备金钱设置</param> /// <param name="LevelMoney">升级时间</param> public ShootingTower(Game aGame, int[] LevelMoney, int[] LevelUpTime) { FLevelMoney = LevelMoney; FLevelUpTime = LevelUpTime; FGame = aGame; int MaxShot = GetMaxShot(FLevelMoney.Length); FShots = new Shot[MaxShot]; for (int i = 0; i < MaxShot; i++) { FShots[i] = new Shot(); } }
public MultiTower(Game aGame) : base(aGame, new int[] { 16, 81, 256, 625, 1296 }, new int[] { 15, 30, 45, 60, 75 }) { }
public RangeTower(Game aGame) : base(aGame, new int[] { 150, 300, 600, 1200, 2000 }, new int[] { 30, 60, 90, 120, 150 }) { }
protected override Tower GetTower(Game aGame) { return new MultiTower(aGame); }