예제 #1
0
 private async void Info_Clicked(object sender, EventArgs e)
 {
     if ((sender as MenuItem).BindingContext is NamesViewModel f)
     {
         await Navigation.PushAsync(InfoPage.Show(new Feature(f.Text, f.Detail)));
     }
 }
 public PlayerShopViewModel(PlayerModel parent) : base(parent, "Shop")
 {
     Image      = ImageSource.FromResource("CB_5e.images.shop.png");
     OnOpenShop = new Command(async(par) =>
     {
         if (par is ShopViewModel svm)
         {
             await Navigation.PushAsync(new ShopSubPage(svm));
         }
     });
     ShowItemInfo = new Command(async(par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item is Possession p)
             {
                 await Navigation.PushAsync(InfoPage.Show(new DisplayPossession(ivm.Item, Context.Player)));
             }
             else
             {
                 await Navigation.PushAsync(InfoPage.Show(ivm.Boon));
             }
         }
     });
     UpdateShops();
 }
 private async void SkillInfo(object sender, EventArgs e)
 {
     if ((sender as Xamarin.Forms.MenuItem).BindingContext is SkillInfo obj)
     {
         await Navigation.PushAsync(InfoPage.Show(obj.Skill));
     }
 }
예제 #4
0
        public ItemViewModel(PlayerInventoryViewModel context, Possession possession)
        {
            Context      = context;
            Value        = possession;
            BaseItemInfo = new Command(async() =>
            {
                await Context.Navigation.PushAsync(InfoPage.Show(Value.Item));
            }, () => Value.BaseItem != null);

            ShowInfo = new Command(async(par) =>
            {
                if (par is MagicViewModel m)
                {
                    await Context.Navigation.PushAsync(InfoPage.Show(m.Magic));
                }
            });
            OnDelete = new Command((par) =>
            {
                if (par is MagicViewModel m)
                {
                    Value.MagicProperties.RemoveAll(s => ConfigManager.SourceInvariantComparer.Equals(s, m.Magic.Name + " " + ConfigManager.SourceSeperator + " " + m.Magic.Source));
                    Magic.ReplaceRange(new List <MagicViewModel>());
                    UpdateMagic();
                    IsChanged = true;
                    Context.FirePlayerChanged();
                }
            });
            UpdateMagic();
        }
 private async void MenuItem_Clicked_1(object sender, EventArgs e)
 {
     if ((sender as MenuItem).BindingContext is ChoiceOption obj && obj.Feature is IXML)
     {
         await Navigation.PushAsync(InfoPage.Show(obj.Feature));
     }
 }
예제 #6
0
 private async void MenuItem_Clicked(object sender, EventArgs e)
 {
     if ((sender as Xamarin.Forms.MenuItem).BindingContext is ChoiceOption obj)
     {
         await Navigation.PushAsync(InfoPage.Show(obj.Value));
     }
 }
예제 #7
0
 public PlayerInventoryViewModel(PlayerModel parent) : base(parent, "Inventory")
 {
     Image = ImageSource.FromResource("CB_5e.images.inventory.png");
     parent.PlayerChanged += Parent_PlayerChanged;
     EditItem              = new Command(async(par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item != null)
             {
                 await Navigation.PushAsync(new ItemPage(new ItemViewModel(this, ivm.Item)));
             }
             else
             {
                 await Navigation.PushAsync(InfoPage.Show(ivm.Boon));
             }
         }
     });
     ShowItemInfo = new Command(async(par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item is Possession p)
             {
                 await Navigation.PushAsync(InfoPage.Show(new DisplayPossession(ivm.Item, Context.Player)));
             }
             else
             {
                 await Navigation.PushAsync(InfoPage.Show(ivm.Boon));
             }
         }
     });
     DeleteItem = new Command((par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item is Possession p)
             {
                 Context.MakeHistory("");
                 Context.Player.RemovePossessionAndItems(p);
                 Save();
             }
             else if (ivm.Boon is Feature f)
             {
                 Context.MakeHistory("");
                 Context.Player.RemoveBoon(f);
                 Save();
             }
             FirePlayerChanged();
         }
     });
     RefreshItems = new Command(() =>
     {
         ItemsBusy = true;
         UpdateItems();
         OnPropertyChanged("Carried");
         ItemsBusy = false;
     });
     UpdateItems();
 }
 private async void InfoSelected(object sender, SelectedItemChangedEventArgs e)
 {
     if (e.SelectedItem is MonsterInfo obj)
     {
         await Navigation.PushAsync(InfoPage.Show(obj.Monster));
     }
     ((ListView)sender).SelectedItem = null;
 }
예제 #9
0
 private void InfomationWindowVisible_Click(object sender, EventArgs e)
 {
     if (InfomationWindow.Checked)
     {
         InfoPage.Hide();
     }
     else
     {
         InfoPage.Show(MainDockPanel, DockState.DockBottomAutoHide);
     }
     InfomationWindow.Checked = !InfomationWindow.Checked;
 }
예제 #10
0
 public EditMagic(MagicEditModel model, Task items)
 {
     BindingContext = Model = model;
     Model.Matches  = new Command(async() =>
     {
         IsBusy = true;
         await items;
         Feature f = new Feature("Matching", "\n" + String.Join("\n", from i in Model.Context.FilterPreview(Model.Base) select i.Name + " " + ConfigManager.SourceSeperator + " " + i.Source), 0, true);
         await Navigation.PushAsync(InfoPage.Show(f));
         IsBusy = false;
     });
     InitializeComponent();
     Model.TrackChanges = true;
 }
예제 #11
0
        private void LoadViewSetting()
        {
            if (System.IO.File.Exists(Config.ViewSettingFileName))
            {
                var setting = XmlHelper.XmlDeserialize(
                    Config.ViewSettingFileName,
                    typeof(ViewSetting)) as ViewSetting;

                if (setting != null)
                {
                    Config.LocalSetting.NeedDebug = Debug.Checked = setting.EnableDebug;

                    InfomationWindow.Checked = setting.InformationWindow;
                    if (InfomationWindow.Checked)
                    {
                        InfoPage.Show();
                    }
                    else
                    {
                        InfoPage.Hide();
                    }

                    ProxyWindow.Checked = setting.ProxyWindow;
                    if (ProxyWindow.Checked)
                    {
                        ProxyPage.Show();
                    }
                    else
                    {
                        ProxyPage.Hide();
                    }

                    MainStatusBar.Visible = RightStatusBar.Checked = StatusBar.Checked = setting.StatusBar;

                    MainToolbar.Visible = RightToolBar.Checked = ToolBar.Checked = setting.ToolBar;
                    MainMenu.Visible    = RightMenuBar.Checked = MenuBar.Checked = setting.MenuBar;
                }
                else
                {
                    System.IO.File.Delete(Config.ViewSettingFileName);
                    SplashScreen.CloseSplashScreen();
                    _hasViewSettingException = true;
                    MsgBox.ShowErrorMessage("ViewSetting.xml not found!");
                    Close();
                }
            }
        }
예제 #12
0
 private async void ResourceInfo(object sender, EventArgs e)
 {
     if ((sender as MenuItem).BindingContext is ResourceViewModel rs)
     {
         if (rs.Value is ModifiedSpell ms)
         {
             ms.Info = Model.Context.Player.GetAttack(ms, ms.differentAbility);
             ms.Modifikations.AddRange(from f in Model.Context.Player.GetFeatures() where f is SpellModifyFeature && Utils.Matches(Model.Context, ms, ((SpellModifyFeature)f).Spells, null) select f);
             ms.Modifikations = ms.Modifikations.Distinct().ToList();
             await Navigation.PushAsync(InfoPage.Show(ms));
         }
         if (rs.Value is ResourceInfo r)
         {
             await Navigation.PushAsync(InfoPage.Show(Model.Context.Player.GetResourceFeatures(r.ResourceID)));
         }
     }
 }
예제 #13
0
        public SpellbookSpellsViewModel(PlayerViewModel model, SpellcastingFeature spellcastingFeature) : base(model, spellcastingFeature)
        {
            Title = spellcastingFeature.DisplayName;
            if (Title == null || Title == "")
            {
                Title = SpellcastingID;
            }
            Spellcasting = Model.Context.Player.GetSpellcasting(SpellcastingID);
            OnHighlight  = new Command((par) =>
            {
                Model.MakeHistory("Highlight");
                Spellcasting.Highlight = (par as SpellViewModel)?.Name;
                foreach (SpellViewModel s in Spells)
                {
                    s.IsHightlighted = false;
                }
                if (par is SpellViewModel svm)
                {
                    svm.IsHightlighted = true;
                }
                OnPropertyChanged("Highlight");
                Model.Save();
            });
            RemoveHighlight = new Command(() =>
            {
                Model.MakeHistory("Highlight");
                Spellcasting.Highlight = null;
                foreach (SpellViewModel s in Spells)
                {
                    s.IsHightlighted = false;
                }
                OnPropertyChanged("Highlight");
                Model.Save();
            });
            OnReduce = new Command((par) =>
            {
                if (par is SpellSlotInfo s && s.Used < s.Slots)
                {
                    if (last == s.Level)
                    {
                        s.Used++;
                        Model.MakeHistory(s.SpellcastingID + "Slots" + s.Level);
                        Model.Context.Player.SetSpellSlot(s.SpellcastingID, s.Level, s.Used);
                        Model.Save();
                        (s as SpellSlotViewModel)?.UpdateUsed();
                        if (selected == s)
                        {
                            used = s.Used;
                            OnPropertyChanged("Used");
                        }
                        Model.UpdateSlots(this);
                    }
                    last = s.Level;
                }
            });
            OnReset = new Command((par) =>
            {
                if (par is SpellSlotInfo s)
                {
                    s.Used = 0;
                    Model.MakeHistory(s.SpellcastingID + "Slots" + s.Level);
                    Model.Context.Player.SetSpellSlot(s.SpellcastingID, s.Level, s.Used);
                    Model.Save();
                    (s as SpellSlotViewModel)?.UpdateUsed();
                    if (selected == s)
                    {
                        used = s.Used;
                        OnPropertyChanged("Used");
                    }
                    Model.UpdateSlots(this);
                }
            });
            ResetAll = new Command(() =>
            {
                IsBusy = true;
                Model.MakeHistory();
                Model.Context.Player.ResetSpellSlots(SpellcastingID);
                Model.Save();
                UpdateSlots();
                used = 0;
                OnPropertyChanged("Used");
                Model.UpdateSlots(this);
                IsBusy = false;
            });
            ShowInfo = new Command(async(par) =>
            {
                if (par is SpellViewModel svm)
                {
                    if (svm.Spell is ModifiedSpell ms)
                    {
                        ms.Info = Model.Context.Player.GetAttack(ms, ms.differentAbility == OGL.Base.Ability.None ? SpellcastingFeature.SpellcastingAbility : ms.differentAbility);
                        ms.Modifikations.AddRange(from f in Model.Context.Player.GetFeatures() where f is SpellModifyFeature && Utils.Matches(Model.Context, ms, ((SpellModifyFeature)f).Spells, null) select f);
                        ms.Modifikations = ms.Modifikations.Distinct().ToList();
                    }
                    await Navigation.PushAsync(InfoPage.Show(svm.Spell));
                }
            });
            spells = new List <SpellViewModel>();
            spells.AddRange(from s in Spellcasting.GetLearned(Model.Context.Player, Model.Context) select new SpellViewModel(s)
            {
                Highlight = OnHighlight,
                ShowInfo  = ShowInfo,
                AddAlwaysPreparedToName = false
            });
            spells.AddRange(from s in Spellcasting.GetPrepared(Model.Context.Player, Model.Context) select new SpellViewModel(s)
            {
                Highlight = OnHighlight,
                ShowInfo  = ShowInfo,
                AddAlwaysPreparedToName = false
            });
            spells.Sort();
            if (SpellcastingFeature.Preparation == OGL.Base.PreparationMode.ClassList)
            {
                spells.AddRange(from s in Spellcasting.GetCLassListRituals(SpellcastingFeature.PrepareableSpells ?? "false", Model.Context.Player, Model.Context) select new SpellViewModel(s)
                {
                    Highlight = OnHighlight,
                    ShowInfo  = ShowInfo,
                    AddAlwaysPreparedToName = false
                });
            }
            else if (SpellcastingFeature.Preparation == OGL.Base.PreparationMode.Spellbook)
            {
                spells.AddRange(from s in Spellcasting.GetSpellbookRituals(Model.Context.Player, Model.Context) select new SpellViewModel(s)
                {
                    Highlight = OnHighlight,
                    ShowInfo  = ShowInfo,
                    AddAlwaysPreparedToName = false
                });
            }

            UpdateSlots();
            UpdateSpells();
        }
예제 #14
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            try
            {
                #region 测试版

#if DEBUG
                try
                {
                    var      apiHelper = new ApiHelper();
                    DateTime now       = apiHelper.GetDate(DateType.SysDate);
                    if (now > AboutBox.PublishDate.AddMonths(1)) //发布一个月失效
                    {
                        SplashScreen.CloseSplashScreen();
                        MsgBox.ShowErrorMessage("该测试版已失效,请下在最新版!");
                        OpenIE(Config.ProxyHeroCloudSetting.UpdateUrl);
                        Exit_Click(Exit, new EventArgs());
                    }
                }
                catch (WebException)
                {
                    Config.InitErrorInfo = Config.LocalLanguage.Messages.InitializeFailed + "," +
                                           Config.LocalLanguage.Messages.PleaseCheckNetworkSettingsAreCorrect;
                }
#endif

                #endregion

                #region

                _languageLoader         = new LanguageLoader();
                TimerAutoSwitchingProxy = new Timer();
                TimerAutoChangeIcon     = new Timer();

                //SplashScreen.UpdateStatusText(Config.LocalLanguage.Messages.InitializeDatabase);
                //Config.InitDatabase();

                _deserializeDockContent = GetContentFromPersistString;

                SplashScreen.UpdateStatusText(Config.LocalLanguage.Messages.LoadingLanguages);
                Config.LanguageFileName = Config.LocalSetting.LanguageFileName;
                if (System.IO.File.Exists(Config.LanguageFileName))
                {
                    Config.LocalLanguage = XmlHelper.XmlDeserialize(
                        Config.LanguageFileName,
                        typeof(Language)) as Language;
                }
                LoadLanguage();

                #endregion

                #region 初始化配置

                GetNetConfigAndCheckVersion();

                #endregion

                #region 连接云引擎

                try
                {
                    DelegateVoid dv    = ConnectCloud;
                    var          thred = new Thread(new ThreadStart(dv));
                    thred.Start();
                }
                catch
                {
                    if (Config.LocalLanguage != null)
                    {
                        CloudStatus.Text = Config.LocalLanguage.Messages.ConnectCloudEngineFailed;
                    }
                    CloudStatus.Image = Resources.cloudno;
                }

                #endregion

                #region Hotkey

                //Hotkey hotkey = new Hotkey(this.Handle);
                //Hotkey1 = hotkey.RegisterHotkey(System.Windows.Forms.Keys.T, Hotkey.KeyFlags.MOD_CONTROL);
                //hotkey.OnHotkey += new HotkeyEventHandler(OnHotkey);

                #endregion

                #region UI

                MainToolbar.Visible = false;
                MainStatusBar.Items.Insert(2, new ToolStripSeparator());
                MainStatusBar.Items.Insert(4, new ToolStripSeparator());
                MainStatusBar.Items.Insert(6, new ToolStripSeparator());
                MainStatusBar.Items.Insert(8, new ToolStripSeparator());
                MainStatusBar.Items.Insert(10, new ToolStripSeparator());
                tsslVersion.Text = @"Version:" + Assembly.GetExecutingAssembly().GetName().Version;
                if (Config.LocalLanguage != null)
                {
                    CloudStatus.Text = Config.LocalLanguage.Messages.ConnectingCloudEngine;
                }

                _httpHelper.HttpOption.Timeout = 60 * 1000;

                SetProxyStatusLabel();
                if (Config.LocalLanguage != null)
                {
                    AutoSwitchProxyStatus.Text = Config.LocalLanguage.Messages.AutomaticSwitchingOff;
                }
                Status.Text   = Config.InitErrorInfo;
                Status.Spring = true;

                #endregion

                #region timer

                TimerAutoSwitchingProxy.Enabled  = false;
                TimerAutoSwitchingProxy.Interval = 1000;
                TimerAutoSwitchingProxy.Elapsed += timerAutoSwitchingProxy_Elapsed;

                TimerAutoChangeIcon.Enabled  = false;
                TimerAutoChangeIcon.Interval = 1000;
                TimerAutoChangeIcon.Elapsed += timerAutoChangeIcon_Elapsed;

                #endregion

                #region DockPanel

                if (Config.LocalLanguage != null)
                {
                    SplashScreen.UpdateStatusText(Config.LocalLanguage.Messages.InitializeDockPanel);
                    if (System.IO.File.Exists(Config.DockSettingFileName))
                    {
                        try
                        {
                            MainDockPanel.LoadFromXml(Config.DockSettingFileName, _deserializeDockContent);
                        }
                        catch
                        {
                            _hasDockSettingExceptioin = true;
                            if (System.IO.File.Exists(Config.DockSettingFileName))
                            {
                                SplashScreen.CloseSplashScreen();
                                System.IO.File.Delete(Config.DockSettingFileName);
                                MsgBox.ShowErrorMessage(Config.LocalLanguage.Messages.InitializeFailed);
                                Application.Exit();
                            }
                        }
                    }
                    else
                    {
                        #region dock

                        StartPage.Show(MainDockPanel, DockState.Document);
                        InfoPage.Show(MainDockPanel, DockState.DockBottomAutoHide);
                        InfoPage.Hide();
                        ProxyPage.Show(MainDockPanel, DockState.Document);

                        #endregion
                    }
                }

                #endregion

                #region

                LoadViewSetting();

                if (Config.LocalLanguage != null)
                {
                    SplashScreen.UpdateStatusText(Config.LocalLanguage.Messages.CheckUpdate);
                }
                CheckVersionAndDownLoad();

                #region 读取上次代理

                if (System.IO.File.Exists(Config.LastProxyFileName))
                {
                    ProxyData.ProxyList =
                        (List <ProxyServer>)
                        XmlHelper.XmlDeserialize(Config.LastProxyFileName, typeof(List <ProxyServer>));
                    ProxyPage.BindData();
                }

                #endregion

                if (Config.LocalLanguage != null)
                {
                    SplashScreen.UpdateStatusText(Config.LocalLanguage.Messages.LoadingPlugins);
                }
                PluginManager.LoadAllPlugins();
                //如果没有获取代理网页列表,则禁止使用
#if !DEBUG
                if (Config.ProxySiteUrlList.Count == 0)
                {
                    this.ProxyPage.Enabled = false;
                }
#endif

                SplashScreen.CloseSplashScreen();
                StartPage.Activate();
                Activate();
                if (Config.ProxyHeroCloudSetting.EnableCommercialPage == "1") //如果显示弹出广告
                {
#if !DEBUG
                    if (Config.IsChineseOs)
                    {
                        this.OpenNewTab(Config.ProxyHeroCloudSetting.CommercialUrl);
                    }
                    else
                    {
                        this.OpenNewTab(Config.ProxyHeroCloudSetting.EnglishCommercialUrl);
                    }
#else
                    OpenNewTab(Config.IsChineseLanguage
                                   ? Config.ProxyHeroCloudSetting.CommercialUrl
                                   : Config.ProxyHeroCloudSetting.EnglishCommercialUrl);
#endif
                }

                #endregion
            }
            catch (Exception ex)
            {
                SplashScreen.CloseSplashScreen();
                MsgBox.ShowExceptionMessage(ex);
            }
        }
예제 #15
0
 public void ShowInfoPage()
 {
     InfoPage.Show();
 }
예제 #16
0
 public PlayerModel(BuilderContext context)
 {
     Context  = context;
     EditItem = new Command(async(par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item != null)
             {
                 await ShopNavigation.PushAsync(new ItemPage(new ItemViewModel(this, ivm.Item)));
             }
             else
             {
                 await ShopNavigation.PushAsync(InfoPage.Show(ivm.Boon));
             }
         }
     });
     ShowItemInfo = new Command(async(par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item is Possession p)
             {
                 await ShopNavigation.PushAsync(InfoPage.Show(new DisplayPossession(ivm.Item, Context.Player)));
             }
             else
             {
                 await ShopNavigation.PushAsync(InfoPage.Show(ivm.Boon));
             }
         }
     });
     DeleteItem = new Command((par) =>
     {
         if (par is InventoryViewModel ivm)
         {
             if (ivm.Item is Possession p)
             {
                 Context.MakeHistory("");
                 Context.Player.RemovePossessionAndItems(p);
                 Save();
             }
             else if (ivm.Boon is Feature f)
             {
                 Context.MakeHistory("");
                 Context.Player.RemoveBoon(f);
                 Save();
             }
             FirePlayerChanged();
         }
     });
     RefreshItems = new Command(() =>
     {
         ItemsBusy = true;
         UpdateItems();
         OnPropertyChanged("Carried");
         ItemsBusy = false;
     });
     UpdateItems();
     OnOpenShop = new Command(async(par) =>
     {
         if (par is ShopViewModel svm)
         {
             await ShopNavigation.PushAsync(new ShopSubPage(svm));
         }
     });
     UpdateShops();
     UpdateInventoryChoices();
 }
 public SpellPrepareViewModel(PlayerModel model, SpellcastingFeature spellcasting) : base(model, spellcasting, "Prepare " + (spellcasting.DisplayName ?? spellcasting.SpellcastingID) + " Spells")
 {
     Image        = ImageSource.FromResource("CB_5e.images.prepare.png");
     Spellcasting = Model.Context.Player.GetSpellcasting(SpellcastingID);
     OnPrepare    = new Command((par) =>
     {
         if (par is SpellViewModel svm && SpellcastingFeature != null && !svm.AddAlwaysPreparedToName)
         {
             if (!svm.Prepared)
             {
                 if (Count < Able)
                 {
                     svm.Prepared = true;
                     Model.MakeHistory();
                     Spellcasting.GetPreparedList(Model.Context.Player, Model.Context).Add(svm.Name + " " + ConfigManager.SourceSeperator + " " + svm.Source);
                     Model.Save();
                 }
             }
             else
             {
                 svm.Prepared = false;
                 Model.MakeHistory();
                 string r = svm.Name + " " + ConfigManager.SourceSeperator + " " + svm.Source;
                 Spellcasting.GetPreparedList(Model.Context.Player, Model.Context).RemoveAll(s => ConfigManager.SourceInvariantComparer.Equals(s, r));
                 Model.Save();
                 if (svm.BadChoice)
                 {
                     Spells.Remove(svm);
                 }
                 if (svm.BadChoice)
                 {
                     spells.Remove(svm);
                 }
             }
             OnPropertyChanged("Count");
             OnPropertyChanged("Prepared");
             (model as PlayerViewModel)?.ChangedPreparedSpells(SpellcastingID);
         }
     }, (par) => par is SpellViewModel svm && !svm.AddAlwaysPreparedToName);
     ShowInfo = new Command(async(par) =>
     {
         if (par is SpellViewModel svm)
         {
             if (svm.Spell is ModifiedSpell ms)
             {
                 ms.Info = Model.Context.Player.GetAttack(ms, ms.differentAbility == Ability.None ? SpellcastingFeature.SpellcastingAbility : ms.differentAbility);
                 ms.Modifikations.AddRange(from f in Model.Context.Player.GetFeatures() where f is SpellModifyFeature && Utils.Matches(Model.Context, ms, ((SpellModifyFeature)f).Spells, null) select f);
                 ms.Modifikations = ms.Modifikations.Distinct().ToList();
             }
             await Navigation.PushAsync(InfoPage.Show(svm.Spell));
         }
     });
     ResetPrepared = new Command(() =>
     {
         IsBusy = true;
         Model.MakeHistory();
         Spellcasting.GetPreparedList(Model.Context.Player, Model.Context).Clear();
         Model.Save();
         foreach (SpellViewModel s in spells)
         {
             s.Prepared = s.AddAlwaysPreparedToName;
         }
         spells.RemoveAll(s => s.BadChoice);
         UpdateSpells();
         OnPropertyChanged("Count");
         OnPropertyChanged("Prepared");
         (model as PlayerViewModel)?.ChangedPreparedSpells(SpellcastingID);
         IsBusy = false;
     });
     AddSpells();
 }
예제 #18
0
 private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
 {
     Navigation.PushAsync(InfoPage.Show((IXML)e.SelectedItem, Model.Select, Model.CommandName));
 }
예제 #19
0
 public SpellChoiceViewModel(PlayerModel model, SpellcastingFeature spellcasting, SpellChoiceFeature choice) : base(model, spellcasting, (spellcasting.DisplayName ?? spellcasting.SpellcastingID) + " - " + choice?.Name ?? choice?.UniqueID ?? "Additional")
 {
     Choice    = choice;
     OnPrepare = new Command((par) =>
     {
         if (par is SpellViewModel svm && SpellcastingFeature != null && Choice != null)
         {
             if (!svm.Prepared)
             {
                 if (Count < Able)
                 {
                     svm.Prepared = true;
                     Model.MakeHistory();
                     Model.Context.Player.GetSpellChoice(SpellcastingID, UniqueID).Choices.Add(svm.Name + " " + ConfigManager.SourceSeperator + " " + svm.Source);
                     Model.Save();
                 }
             }
             else
             {
                 svm.Prepared = false;
                 Model.MakeHistory();
                 string r = svm.Name + " " + ConfigManager.SourceSeperator + " " + svm.Source;
                 Model.Context.Player.GetSpellChoice(SpellcastingID, UniqueID).Choices.RemoveAll(s => ConfigManager.SourceInvariantComparer.Equals(s, r));
                 Model.Save();
                 if (svm.BadChoice)
                 {
                     Spells.Remove(svm);
                 }
                 if (svm.BadChoice)
                 {
                     spells.Remove(svm);
                 }
             }
             OnPropertyChanged("Count");
             OnPropertyChanged("Prepared");
             ChangedSelectedSpells(SpellcastingID);
         }
     }, (par) => par is SpellViewModel svm && choice != null);
     ShowInfo = new Command(async(par) =>
     {
         if (par is SpellViewModel svm)
         {
             if (svm.Spell is ModifiedSpell ms)
             {
                 ms.Info = Model.Context.Player.GetAttack(ms, ms.differentAbility == Ability.None ? SpellcastingFeature.SpellcastingAbility : ms.differentAbility);
                 ms.Modifikations.AddRange(from f in Model.Context.Player.GetFeatures() where f is SpellModifyFeature && Utils.Matches(Model.Context, ms, ((SpellModifyFeature)f).Spells, null) select f);
                 ms.Modifikations = ms.Modifikations.Distinct().ToList();
             }
             await Navigation.PushAsync(InfoPage.Show(svm.Spell));
         }
     });
     ResetPrepared = new Command(() =>
     {
         IsBusy = true;
         Model.MakeHistory();
         Model.Context.Player.GetSpellChoice(SpellcastingID, UniqueID).Choices.Clear();
         Model.Save();
         foreach (SpellViewModel s in spells)
         {
             s.Prepared = false;
         }
         spells.RemoveAll(s => s.BadChoice);
         UpdateSpells();
         OnPropertyChanged("Count");
         OnPropertyChanged("Selected");
         ChangedSelectedSpells(SpellcastingID);
         IsBusy = false;
     });
     AddSpells();
 }
예제 #20
0
        public void Show(int key)
        {
            switch (key)
            {
            case 1:
                RecepcionWindow recepcion = new RecepcionWindow();
                recepcion.Show();
                break;

            case 2:
                RegisterPage register = new RegisterPage();
                register.Show();
                break;

            case 3:
                UserPage user = new UserPage();
                user.Show();
                break;

            case 4:
                CookReportPage cookReport = new CookReportPage();
                cookReport.Show();
                break;

            case 5:
                CookInfoPage cookInfo = new CookInfoPage();
                cookInfo.Show();
                break;

            case 6:
                UserMenuPage menu = new UserMenuPage();
                menu.Show();
                break;

            case 7:
                UrgencyPage urgency = new UrgencyPage();
                urgency.Show();
                break;

            case 8:
                UserReportPage report = new UserReportPage();
                report.Show();
                break;

            case 9:
                InfoPage info = new InfoPage();
                info.Show();
                break;

            case 10:
                OptionDr option = new OptionDr();
                option.Show();
                break;

            case 11:
                PaymentPage pay = new PaymentPage();
                pay.Show();
                break;

            default:
                MessageBox.Show("Error");
                break;
            }
        }