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); } } }; }); }
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); }
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); }