Example #1
0
 public override void Initialize()
 {
     _player = Player.GetInstance();
     _shops = new List<Tower_in_NCU.Shop.Shop>();
     // TODO: Set Text
     _shops.Add(new Tower_in_NCU.Shop.GoldShop("迷途的旅行者啊\n我這可以消費金幣來強化你的能力", new string[] { "HP + 500", "ATk + 4", "Def + 4" , "Exit" }, _player, this));
     _currentShop = 0;
 }
Example #2
0
 public void SetBattle(Player player, Monster monster, Floor floor)
 {
     _player = player;
     _monster = monster;
     _floor = floor;
     _counter = 0;
     _enemyAttackTime = 0;
     _playerAttackTime = 0;
     _playerTurn = true;
 }
Example #3
0
 public Shop(string titleText, string[] menuText, Player player, Applet.Shop shop)
 {
     _shop = shop;
     _player = player;
     _menuText = menuText;
     _titleText = titleText;
     _background = new ImageUnit(BackgroundImageName);
     _choiceBackground = new ImageUnit(ChoiceBackgroundImageName);
     _currentChoice = 0;
 }
Example #4
0
 public override bool Event(Player player, Floor floor)
 {
     switch (_type)
     {
         case MapObjectType.ShopBody1:
         case MapObjectType.ShopBody2:
             break;
         case MapObjectType.GoldShop:
             _shop.SetShop(0);
             _shop.Active = true;
             player.Active = false;
             break;
     }
     return false;
 }
Example #5
0
 public override bool Event(Player player, Floor floor)
 {
     _battle.SetBattle(player, (Monster)MemberwiseClone(), floor);
     _battle.Active = true;
     player.StopMove();
     player.Active = false;
     return false;
 }
Example #6
0
 public override bool Event(Player player, Floor floor)
 {
     bool access = true;
     switch (_type)
     {
         case MapObjectType.Floor1:
             break;
         case MapObjectType.Block1:
             access = false;
             break;
         case MapObjectType.DownStair1:
         case MapObjectType.DownStair2:
             player.CurrentFloor--;
             break;
         case MapObjectType.UpStair1:
         case MapObjectType.UpStair2:
             player.CurrentFloor++;
             break;
         case MapObjectType.YellowKey:
             player.YellowKey++;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "獲得一把黃鑰匙", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.BlueKey:
             player.BlueKey++;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "獲得一把藍鑰匙", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.RedKey:
             player.RedKey++;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "獲得一把紅鑰匙", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.MonsterBook:
             return true;
         case MapObjectType.RedPotion:
             player.Hp += 150;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "生命增加 150 點", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.BluePotion:
             player.Hp += 500;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "生命增加 500 點", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.RedCrystal:
             player.Atk += 2;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "攻擊增加 2 點", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.BlueCrystal:
             player.Def += 2;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "防禦增加 2 點", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.YellowDoor:
             if(player.YellowKey > 0)
             {
                 player.YellowKey--;
                 floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
                 _audioPlayer.Play(AudioPlayer.SoundEffect.OpenDoor);
                 break;
             }
             else
             {
                 access = false;
                 break;
             }
         case MapObjectType.BlueDoor:
             if (player.BlueKey > 0)
             {
                 player.BlueKey--;
                 floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
                 _audioPlayer.Play(AudioPlayer.SoundEffect.OpenDoor);
                 break;
             }
             else
             {
                 access = false;
                 break;
             }
         case MapObjectType.RedDoor:
             if (player.RedKey > 0)
             {
                 player.RedKey--;
                 floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
                 _audioPlayer.Play(AudioPlayer.SoundEffect.OpenDoor);
                 break;
             }
             else
             {
                 access = false;
                 break;
             }
         case MapObjectType.TeleportStaf:
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             break;
         case MapObjectType.Sword1:
             player.Atk += 10;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "取得鐵劍,攻擊增加 10 點", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.Sword2:
         case MapObjectType.Sword3:
         case MapObjectType.Sword4:
         case MapObjectType.Sword5:
         case MapObjectType.Shield1:
             player.Def += 8;
             floor.SetMapObject(player.NextPosition, MapObjectType.Floor1);
             _dialogue.AddDialogue(Dialogue.DialogueLocation.Middle, "系統資訊", "取得鐵盾,防禦增加 8 點", Dialogue.FaceLoaction.None, null);
             _audioPlayer.Play(AudioPlayer.SoundEffect.GetItem);
             break;
         case MapObjectType.Shield2:
         case MapObjectType.Shield3:
         case MapObjectType.Shield4:
         case MapObjectType.Shield5:
             break;
     }
     return access;
 }
Example #7
0
 public bool Event(Player player) => _map[player.NextPosition.Y, player.NextPosition.X].Event(player, this);
Example #8
0
 public GoldShop(string titleText, string[] menuText, Player player, Applet.Shop shop)
     : base(titleText, menuText, player, shop)
 {
 }
        private int ComputeApproximateDamage(Player player, Monster monster)
        {
            int ret;
            int dealDamageToMonster;
            int dealDamageToPlayer;

            dealDamageToMonster = player.Atk - monster.Def;
            if (dealDamageToMonster <= 0)
            {
                return 99999999;
            }

            if (monster.Ability.Contains(Monster.MonsterFeature.Penetrate))
            {
                dealDamageToPlayer = monster.Atk;
            }
            else
            {
                dealDamageToPlayer = monster.Atk - player.Def;
            }

            if (dealDamageToPlayer <= 0)
            {
                return 0;
            }

            dealDamageToPlayer *= monster.AttackTime;
            dealDamageToMonster *= player.AttackTime;

            ret = (int)(Math.Ceiling((double)monster.Hp / dealDamageToMonster) - 1) * dealDamageToPlayer;

            return ret;
        } 
 public override void Initialize()
 {
     _tower = Tower.Tower.GetInstance();
     _player = Player.GetInstance();
 }
Example #11
0
 public abstract bool Event(Player player, Floor floor);
Example #12
0
 public bool Event(Player player) => _floors[player.CurrentFloor].Event(player);