public void LoadSkillList()
        {
            UserCommand_View view = View as UserCommand_View;
            var skillList         = MainFrame.GetSkillList();

            view.InitSkillset(skillList);
        }
        public void Delete()
        {
            UserCommand_View view = View as UserCommand_View;

            if (IsDeleting == true)
            {
                var           names   = " ";
                List <Player> players = new List <Player>();
                foreach (string name in _SelectedPlayers)
                {
                    players.Add(_PlayerList.First(x => x.Name.Equals(name)));
                    names += name + ", ";
                }
                names = names.Equals(" ") ? "선택 없음" : names;
                if (MessageBox.Show($"선택한 플레이어들을 삭제하시겠습니까?\r\n[{names}]", "삭제", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    view.DeletePlayers(_SelectedPlayers);
                    foreach (Player p in players)
                    {
                        _PlayerList.Remove(p);
                    }
                }
            }
            IsDeleting           = !IsDeleting;
            view.IsPlayerEditing = IsDeleting;
            view.PlayerCounter   = _PlayerList.Count;
            _SelectedPlayers.Clear();
        }
        public void SetSkillList()
        {
            UserCommand_View view = View as UserCommand_View;

            if (IsSkillSelecting == true)
            {
                string skills = " ";
                foreach (ISkillBase sname in _SelectedSkills)
                {
                    skills += sname.Name + ", ";
                }
                if (_SelectedPlayers.Count > 0)
                {
                    if (MessageBox.Show($"{_SelectedPlayers[0]}의 스킬을 확정하시겠습니까?\r\n[{skills}]",
                                        "확정", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        SetPlayerSkill(_SelectedSkills);
                    }
                }
            }
            IsSkillSelecting    = !IsSkillSelecting;
            view.IsSkillEditing = IsSkillSelecting;
            _SelectedPlayers.Clear();
            _SelectedSkills.Clear();
            view.CostCounter = 0;
        }
        private void HighlightSkills()
        {
            UserCommand_View view   = View as UserCommand_View;
            Player           player = _PlayerList.First(x => x.Name.Equals(_SelectedPlayers[0]));

            view.HighlightSkills(player.CommonSkills);
            int cost = 0;

            foreach (var item in player.CommonSkills)
            {
                if (_SelectedSkills.Contains(item) == false)
                {
                    _SelectedSkills.Add(item);
                }
                if (item.Type.HasFlag(SkillType.Basic))
                {
                    cost++;
                }
                else if (item.Type.HasFlag(SkillType.Ultimate))
                {
                    cost += 3;
                }
                else
                {
                    cost += 2;
                }
            }
            view.CostCounter = cost;
        }
        public void AddPlayer()
        {
            UserCommand_View view   = View as UserCommand_View;
            Player           player = new Player($"Player{_PlayerNameCounter++}", new Stats(0, 0, 0), 0, 0, 1, -1, -1);

            _PlayerList.Add(player);
            view.AddPlayer(player);
            view.PlayerCounter = _PlayerList.Count;
        }
        public void SkillClicked(SkillItem sitem)
        {
            UserCommand_View view = View as UserCommand_View;

            if (_SelectedPlayers.Count <= 0)
            {
                MessageBox.Show("플레이어를 먼저 선택하세요.", "실패");
                sitem.IsSelected = false;
                return;
            }
            int cost = view.CostCounter;

            int sitemCost;

            if (sitem.Skill.Type.HasFlag(SkillType.Basic))
            {
                sitemCost = 1;
            }
            else if (sitem.Skill.Type.HasFlag(SkillType.Ultimate))
            {
                sitemCost = 3;
            }
            else
            {
                sitemCost = 2;
            }
            if (_SelectedSkills.Contains(sitem.Skill))
            {
                _SelectedSkills.Remove(sitem.Skill);
                sitem.IsSelected = false;
                view.CostCounter = cost - sitemCost;
            }
            else
            {
                if (sitem.Skill.Type.HasFlag(SkillType.Ultimate))
                {
                    ISkillBase ultimate = _SelectedSkills.FirstOrDefault(x => x.Type.HasFlag(SkillType.Ultimate));
                    if (ultimate != null)
                    {
                        MessageBox.Show($"해당 플레이어는 이미 궁극기를 선택했습니다.({ultimate.Name})", "실패");
                        sitem.IsSelected = false;
                        return;
                    }
                }
                if (cost + sitemCost > 10)
                {
                    MessageBox.Show($"코스트 초과함. ({cost + sitemCost}/10)");
                    sitem.IsSelected = false;
                }
                else
                {
                    sitem.IsSelected = true;
                    _SelectedSkills.Add(sitem.Skill);
                    view.CostCounter = cost + sitemCost;
                }
            }
        }
        public void AddPlayers(List <Player> players)
        {
            UserCommand_View view = View as UserCommand_View;

            _PlayerList = players;
            foreach (Player player in _PlayerList)
            {
                view.AddPlayer(player);
            }
            view.PlayerCounter = _PlayerList.Count;
        }
        private void LoadBossData(object sender, EventArgs e)
        {
            UserCommand_View view = View as UserCommand_View;

            if (view.GetBossItem.Combo_BossList.SelectedItem != null)
            {
                var  bossName = view.GetBossItem.Combo_BossList.SelectedItem.ToString();
                Boss boss     = MainFrame.GetBossByName(bossName);
                view.GetBossItem.Player_MaxHealth = boss.MaxHp;
            }
        }
        public void PlayerClicked(string name)
        {
            UserCommand_View view = View as UserCommand_View;

            if (IsSkillSelecting == true)
            {
                if (_SelectedPlayers.Count < 1)
                {
                    _SelectedPlayers.Add(name);
                }
                else
                {
                    var    skillList = _SelectedSkills;
                    string skills    = " ";
                    foreach (ISkillBase sname in skillList)
                    {
                        skills += sname.Name + ", ";
                    }
                    if (MessageBox.Show($"{_SelectedPlayers[0]}의 스킬을 확정하시겠습니까?\r\n[{skills}]",
                                        "확정", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        SetPlayerSkill(_SelectedSkills);
                        view.ClearSkillSelection();
                        if (_SelectedPlayers.Contains(name) == true)
                        {
                            view.ClearPlayerSelection("");
                            _SelectedPlayers.Clear();
                        }
                        else
                        {
                            view.ClearPlayerSelection(name);
                            _SelectedPlayers.Clear();
                            _SelectedPlayers.Add(name);
                        }
                    }
                }
                if (_SelectedPlayers.Count > 0)
                {
                    HighlightSkills();
                }
            }
            else if (IsDeleting == true)
            {
                if (_SelectedPlayers.Contains(name) == false)
                {
                    _SelectedPlayers.Add(name);
                }
                else
                {
                    _SelectedPlayers.Remove(name);
                }
            }
        }
        private void SetBossData(List <Boss> boss)
        {
            UserCommand_View view = View as UserCommand_View;

            view.GetBossItem.Combo_BossList.Items.AddRange(boss.Select(x => x.Name).ToArray());
            view.GetBossItem.Combo_BossList.SelectionChangeCommitted += LoadBossData;
            view.GetBossItem.Button_Info.Click += (object sender, EventArgs e) =>
            {
                if (view.GetBossItem.Combo_BossList.Text.Length > 0)
                {
                    new RaidCalcInfoWindow(MainFrame.GetBossByName(view.GetBossItem.Combo_BossList.Text)).ShowDialog();
                }
            };
        }
示例#11
0
        private void InitializeViewController()
        {
            IView       view;
            IController controller;

            Dic_ViewController = new Dictionary <string, ViewController>();

            // Index
            view       = new Index_View();
            controller = new Index_Controller(this, view);
            view.SetController(controller);
            Dic_ViewController.Add(view.ViewName, new ViewController(view, controller));

            // UserCommand
            view       = new UserCommand_View();
            controller = new UserCommand_Controller(this, view);
            view.SetController(controller);
            Dic_ViewController.Add(view.ViewName, new ViewController(view, controller));

            // PlayerCommand
            view       = new PlayerCommand_View();
            controller = new PlayerCommand_Controller(this, view);
            view.SetController(controller);
            Dic_ViewController.Add(view.ViewName, new ViewController(view, controller));

            // BossCommand
            view       = new BossCommand_View();
            controller = new BossCommand_Controller(this, view);
            view.SetController(controller);
            Dic_ViewController.Add(view.ViewName, new ViewController(view, controller));

            // BossAction
            view       = new BossAction_View();
            controller = new BossAction_Controller(this, view);
            view.SetController(controller);
            Dic_ViewController.Add(view.ViewName, new ViewController(view, controller));
        }
        private void SyncronizeData()
        {
            UserCommand_View view = View as UserCommand_View;

            foreach (PlayerItem pitem in view.PlayerItems)
            {
                Player player = _PlayerList.First(x => x.Name.Equals(pitem.Name));
                player.Name      = pitem.Player_Name;
                player.MaxHp     = pitem.Player_MaxHealth;
                player.CurrentHp = pitem.Player_CurrentHealth;
                player.Stat      = new Stats(pitem.Player_Stat1, pitem.Player_Stat2, pitem.Player_Stat3);
            }
            PlayerItem bossItem = (PlayerItem)view.Controls["BossItem"];

            try
            {
                _Boss           = MainFrame.GetBossByName(view.GetBossItem.Combo_BossList.SelectedItem.ToString());
                _Boss.CurrentHp = bossItem.Player_CurrentHealth;
                _Boss.MaxHp     = bossItem.Player_MaxHealth;
                _Boss.PosX      = -1;
                _Boss.PosY      = -1;
            }
            catch { }
        }