コード例 #1
0
        void LoadPressed(LinearLayout cl, bool monsters)
        {
            FileDialog.CheckFilePermission(Activity, () =>
            {
                FileDialog fd = new FileDialog(cl.Context, _Extensions, true);
                fd.Show();

                fd.DialogComplete += (object s, FileDialog.FileDialogEventArgs ea) =>
                {
                    string name     = ea.Filename;
                    string fullname = Path.Combine(fd.Folder, name);

                    FileInfo file = new FileInfo(fullname);

                    if (String.Compare(".por", file.Extension, true) == 0 || String.Compare(".rpgrp", file.Extension, true) == 0)
                    {
                        List <Monster> importmonsters = Monster.FromFile(fullname);

                        if (importmonsters != null)
                        {
                            foreach (Monster m in importmonsters)
                            {
                                Character ch = new Character(m, false);
                                ch.IsMonster = monsters;
                                _CombatState.AddCharacter(ch);
                            }
                        }
                    }
                    else
                    {
                        List <Character> l = XmlListLoader <Character> .Load(fullname);
                        foreach (var c in l)
                        {
                            c.IsMonster = monsters;
                            _CombatState.AddCharacter(c);
                        }
                    }
                };
            });
        }
コード例 #2
0
        public static CharacterActionResult TakeAction(CombatState state, CharacterActionType action, Character primaryChar, List <Character> allChars, object param)
        {
            CharacterActionResult res = CharacterActionResult.None;

            switch (action)
            {
            case CharacterActionType.MakeIdle:
                foreach (Character ch in allChars)
                {
                    ch.IsIdle = true;
                }
                state.FilterList();
                break;

            case CharacterActionType.RemoveIdle:
                foreach (Character ch in allChars)
                {
                    ch.IsIdle = false;
                }
                state.FilterList();
                break;

            case CharacterActionType.Clone:
                foreach (Character ch in allChars)
                {
                    state.CloneCharacter(ch);
                }
                break;

            case CharacterActionType.Delete:
                foreach (Character ch in allChars)
                {
                    state.RemoveCharacter(ch);
                }
                break;

            case CharacterActionType.MoveToMonsters:
                foreach (Character ch in allChars)
                {
                    if (!ch.IsMonster)
                    {
                        state.RemoveCharacter(ch);
                        ch.IsMonster = true;
                        state.AddCharacter(ch);
                    }
                }
                state.FilterList();
                break;

            case CharacterActionType.MoveToParty:
                foreach (Character ch in allChars)
                {
                    if (ch.IsMonster)
                    {
                        state.RemoveCharacter(ch);
                        ch.IsMonster = false;
                        state.AddCharacter(ch);
                    }
                }
                state.FilterList();
                break;

            case CharacterActionType.MoveUpInitiative:
                state.MoveUpCharacter(primaryChar);
                break;

            case CharacterActionType.MoveDownInitiative:
                state.MoveDownCharacter(primaryChar);
                break;

            case CharacterActionType.MoveAfterInitiative:
                state.MoveCharacterAfter(primaryChar, (Character)param);
                break;

            case CharacterActionType.MoveBeforeInitiative:
                state.MoveCharacterBefore(primaryChar, (Character)param);
                break;

            case CharacterActionType.RollInitiative:
                state.RollIndividualInitiative(primaryChar);
                state.SortCombatList(false, false);
                break;

            case CharacterActionType.Ready:
                primaryChar.IsReadying = !primaryChar.IsReadying;
                if (primaryChar.IsReadying && primaryChar.IsDelaying)
                {
                    primaryChar.IsDelaying = false;
                }
                break;

            case CharacterActionType.Delay:
                primaryChar.IsDelaying = !primaryChar.IsDelaying;
                if (primaryChar.IsReadying && primaryChar.IsDelaying)
                {
                    primaryChar.IsReadying = false;
                }
                break;

            case CharacterActionType.ActNow:
                if (primaryChar.IsIdle)
                {
                    primaryChar.IsIdle = false;
                }
                state.CharacterActNow(primaryChar);
                break;

            case CharacterActionType.LinkInitiative:
                Character targetChar = (Character)param;
                if (primaryChar != targetChar && targetChar.InitiativeLeader == null)
                {
                    state.LinkInitiative(primaryChar, (Character)param);
                }
                break;

            case CharacterActionType.UnlinkInitiative:
                state.UnlinkLeader(primaryChar);
                break;

            case CharacterActionType.AddConditon:
                if (param != null)
                {
                    Condition c = (Condition)param;
                    foreach (Character ch in allChars)
                    {
                        ActiveCondition a = new ActiveCondition();
                        a.Condition = c;
                        ch.Stats.AddCondition(a);
                        Condition.PushRecentCondition(a.Condition);
                    }
                }
                else
                {
                    res = CharacterActionResult.NeedConditionDialog;
                }
                break;

            case CharacterActionType.EditNotes:
                res = CharacterActionResult.NeedNotesDialog;
                break;

            case CharacterActionType.EditMonster:
                res = CharacterActionResult.NeedMonsterEditorDialog;
                break;

            case CharacterActionType.RollAttack:
                res = CharacterActionResult.RollAttack;
                break;

            case CharacterActionType.RollAttackSet:
                res = CharacterActionResult.RollAttackSet;
                break;

            case CharacterActionType.RollSave:
                res = CharacterActionResult.RollSave;
                break;

            case CharacterActionType.RollSkill:
                res = CharacterActionResult.RollSkill;
                break;
            }
            return(res);
        }
コード例 #3
0
        private void AddCharacterList(LayoutInflater inflater, ViewGroup container, View v, int id, bool monsters)
        {
            LinearLayout cl = (LinearLayout)inflater.Inflate(Resource.Layout.CharacterList, container, false);

            cl.LayoutParameters = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.MatchParent, 1f);

            ListView lv = cl.FindViewById <ListView>(Resource.Id.characterList);

            lv.Adapter       = (new CharacterListAdapter(_CombatState, monsters));
            lv.ItemSelected += (sender, e) => {
                Character c = ((BaseAdapter <Character>)lv.Adapter)[e.Position];
                ShowCharacter(v, c);
            };
            lv.ItemClick += (sender, e) => {
                Character c = ((BaseAdapter <Character>)lv.Adapter)[e.Position];
                ShowCharacter(v, c);
            };
            if (!monsters)
            {
                _PlayerList = lv;
            }
            else
            {
                _MonsterList = lv;
            }

            lv.SetOnDragListener(new ListOnDragListener(monsters, v));

            cl.FindViewById <ImageButton>(Resource.Id.blankButton).Click +=
                (object sender, EventArgs e) =>
            {
                _CombatState.AddBlank(monsters);
            };


            cl.FindViewById <ImageButton>(Resource.Id.monsterButton).Click +=
                (object sender, EventArgs e) =>
            {
                MonsterPickerDialog dl = new MonsterPickerDialog(v.Context, monsters, _CombatState);
                dl.Show();
            };

            cl.FindViewById <ImageButton>(Resource.Id.loadButton).Click +=
                (object sender, EventArgs e) =>
            {
                FileDialog fd = new FileDialog(cl.Context, _Extensions, true);
                fd.Show();

                fd.DialogComplete += (object s, FileDialog.FileDialogEventArgs ea) =>
                {
                    string name     = ea.Filename;
                    string fullname = Path.Combine(fd.Folder, name);

                    FileInfo file = new FileInfo(fullname);

                    if (String.Compare(".por", file.Extension, true) == 0 || String.Compare(".rpgrp", file.Extension, true) == 0)
                    {
                        List <Monster> importmonsters = Monster.FromFile(fullname);

                        if (importmonsters != null)
                        {
                            foreach (Monster m in importmonsters)
                            {
                                Character ch = new Character(m, false);
                                ch.IsMonster = monsters;
                                _CombatState.AddCharacter(ch);
                            }
                        }
                    }
                    else
                    {
                        List <Character> l = XmlListLoader <Character> .Load(fullname);

                        foreach (var c in l)
                        {
                            c.IsMonster = monsters;
                            _CombatState.AddCharacter(c);
                        }
                    }
                };
            };

            cl.FindViewById <ImageButton>(Resource.Id.saveButton).Click +=
                (object sender, EventArgs e) =>
            {
                FileDialog fd = new FileDialog(v.Context, _Extensions, false);
                fd.DialogComplete += (object s, FileDialog.FileDialogEventArgs ea) =>
                {
                    string name = ea.Filename;
                    if (!name.EndsWith(".cmpt", StringComparison.CurrentCultureIgnoreCase))
                    {
                        name = name + ".cmpt";
                    }
                    string fullname = Path.Combine(fd.Folder, name);

                    XmlListLoader <Character> .Save(new List <Character>(_CombatState.Characters.Where((a) => a.IsMonster == monsters)), fullname);
                };
                fd.Show();
            };

            cl.FindViewById <Button>(Resource.Id.clearButton).Click +=
                (object sender, EventArgs e) =>
            {
                AlertDialog.Builder bui = new AlertDialog.Builder(v.Context);
                bui.SetMessage("Clear " + (monsters?"Monsters":"Players") + " List?");
                bui.SetPositiveButton("OK", (a, x) => {
                    List <Character> removeList = new List <Character>(from c in _CombatState.Characters where c.IsMonster == monsters select c);
                    foreach (Character c in removeList)
                    {
                        _CombatState.RemoveCharacter(c);
                    }
                });
                bui.SetNegativeButton("Cancel", (a, x) => {});
                bui.Show();
            };

            if (monsters)
            {
                _XPText = cl.FindViewById <TextView>(Resource.Id.xpText);
                ReloadXPText();
            }



            v.FindViewById <LinearLayout>(id).AddView(cl);
        }