// Event handler: Worker_DoWork

        private void Worker_DoWork_Handler(object sender, DoWorkEventArgs evt)
        {
            BackgroundWorker worker = (BackgroundWorker)sender;
            int progress            = 0;

            foreach (Device device in queryDevices)
            {
                string errorMessage = device.FindFirmwareUpdate(Dispatcher);

                if (errorMessage != null)
                {
                    int result = -1;
                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                        result = MessageBoxEx2.Show(new MessageBoxEx2Params {
                            CaptionText = JCstring.MessageCaptionError,
                            MessageText = errorMessage.Unescape(),
                            Image       = MessageBoxEx2Image.Error,
                            ButtonText  = new string[] { JCstring.DialogButtonTextSkip, JCstring.DialogButtonTextCancel },
                            Owner       = this
                        });
                    }));

                    if (result != 0)                            // Cancel button, close box
                    {
                        break;
                    }
                }

                worker.ReportProgress(++progress);
                if (worker.CancellationPending)
                {
                    break;
                }
            }
        }
Esempio n. 2
0
        private void WorldMapViewForm_Click(object sender, EventArgs e)
        {
            if (selectName == "")
            {
                return;
            }

            foreach (var mapIconConfig in ConfigData.SceneDict.Values)
            {
                if (mapIconConfig.Icon == selectName && mapIconConfig.Id != UserProfile.InfoBasic.MapId)
                {
                    //if (UserProfile.InfoBasic.Level < mapIconConfig.Level)
                    //{
                    //    return;
                    //}

                    if (MessageBoxEx2.Show("是否花10钻石立刻移动到该地区?") == DialogResult.OK)
                    {
                        if (UserProfile.InfoBag.PayDiamond(10))
                        {
                            UserProfile.InfoBasic.Position = 0;//如果是0,后面流程会随机一个位置
                            Scene.Instance.ChangeMap(mapIconConfig.Id, true);
                            Close();
                        }
                    }
                    return;
                }
            }
        }
Esempio n. 3
0
        // Event handler: WebClient_DownloadFileCompleted

        void WebClient_DownloadFileCompleted_Handler(object sender, AsyncCompletedEventArgs evt)
        {
            if (evt.Cancelled)
            {
                try {
                    File.Delete(downloadFilePath);
                } catch {
                }
            }
            else
            {
                if (evt.Error is Exception ex)
                {
                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                        MessageBoxEx2.Show(new MessageBoxEx2Params {
                            CaptionText = JCstring.MessageCaptionError,
                            MessageText = ex.Message,
                            Image       = MessageBoxEx2Image.Error,
                            ButtonText  = new string[] { JCstring.DialogButtonTextOk },
                            Owner       = this
                        });
                    }));
                }
            }

            completed = true;
            Close();
        }
Esempio n. 4
0
        private bool SaveUnsavedData()
        {
            if (!Devices.IsModified)
            {
                return(true);
            }

            while (true)
            {
                int result = MessageBoxEx2.Show(new MessageBoxEx2Params {
                    CaptionText = JCstring.MessageCaptionUnsavedData,
                    MessageText = JCstring.MessageTextUnsavedData.Unescape(),
                    Image       = MessageBoxEx2Image.Warning,
                    ButtonText  = new string[] { JCstring.DialogButtonTextYes, JCstring.DialogButtonTextNo, JCstring.DialogButtonTextCancel },
                    Owner       = this
                });

                switch (result)
                {
                case 0:                                 // Yes button
                    if (SaveDeviceCollection())
                    {
                        return(true);
                    }
                    break;

                case 1:                                 // No button
                    return(true);

                default:                                // Cancel button, close box
                    return(false);
                }
            }
        }
Esempio n. 5
0
        // Event handler: Settings_PropertyChanged

        private void Settings_PropertyChanged_Handler(object sender, PropertyChangedEventArgs evt)
        {
            Settings settings = Settings.Default;

            switch (evt.PropertyName)
            {
            case nameof(settings.JuisReleaseShowBuildNumber):
                Devices_RefreshView();
                break;

            case nameof(settings.RecentFilesMax):
                Backstage_PopulateRecentFiles();
                break;

            case nameof(settings.UserInterfaceLanguage):
                // Display message _after_ the setting has been updated on screen regardless of event handler order.
                Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => {
                    int result = MessageBoxEx2.Show(new MessageBoxEx2Params()
                    {
                        MessageText = JCstring.MessageTextRestartLanguageChange.Unescape(),
                        CaptionText = JCstring.MessageCaptionProgramRestartRequired,
                        Image       = MessageBoxEx2Image.Warning,
                        ButtonText  = new string[] { JCstring.DialogButtonTextYes, JCstring.DialogButtonTextNo },
                        Owner       = this
                    });

                    if (result == 0)                                    // Yes button
                    {
                        App.Restart();
                    }
                }));
                break;
            }
        }
Esempio n. 6
0
 private void ShowErrorMessage(string message)
 {
     MessageBoxEx2.Show(new MessageBoxEx2Params {
         CaptionText = JCstring.MessageCaptionError,
         MessageText = message,
         Image       = MessageBoxEx2Image.Error,
         ButtonText  = new string[] { JCstring.DialogButtonTextOk },
         Owner       = this
     });
 }
Esempio n. 7
0
 private void bitmapButtonFresh_Click(object sender, EventArgs e)
 {
     if (MessageBoxEx2.Show("是否花10钻石刷新所有素材?") == DialogResult.OK)
     {
         if (UserProfile.InfoBag.PayDiamond(10))
         {
             RefreshAllPieceData();
             RefreshInfo();
         }
     }
 }
Esempio n. 8
0
 private void bitmapButtonRefresh_Click(object sender, EventArgs e)
 {
     if (MessageBoxEx2.Show("是否花5钻石增加一条素材?") == DialogResult.OK)
     {
         if (UserProfile.InfoBag.PayDiamond(5))
         {
             AddPieceData();
             RefreshInfo();
         }
     }
 }
Esempio n. 9
0
 private void bitmapButtonDouble_Click(object sender, EventArgs e)
 {
     if (MessageBoxEx2.Show("是否花5钻石翻倍所有素材数量?") == DialogResult.OK)
     {
         if (UserProfile.InfoBag.PayDiamond(5))
         {
             DoubleAllPieceData();
             RefreshInfo();
         }
     }
 }
Esempio n. 10
0
 private void bitmapButtonC3_Click(object sender, EventArgs e)
 {
     if (MessageBoxEx2.Show("是否花10钻石随机增加经验瓶50-100点经验?") == DialogResult.OK)
     {
         if (UserProfile.InfoBag.PayDiamond(10))
         {
             UserProfile.InfoRecord.AddRecordById((int)MemPlayerRecordTypes.HeroExpPoint, NarlonLib.Math.MathTool.GetRandom(50, 100));
             panelBack.Invalidate();
         }
     }
 }
Esempio n. 11
0
 private void Backstage_CmdAbout_Executed(object sender, ExecutedRoutedEventArgs evt)
 {
     Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => {
         MessageBoxEx2.Show(new MessageBoxEx2Params {
             CaptionText = JCstring.MessageCaptionAbout,
             MessageText = $"{App.GetProgramInfo()}\n\n{App.GetCopyright()}",
             Image       = MessageBoxEx2Image.Information,
             ButtonText  = new string[] { JCstring.DialogButtonTextOk },
             Owner       = this
         });
     }));
 }
Esempio n. 12
0
 private void bitmapButtonRefresh_Click(object sender, EventArgs e)
 {
     if (MessageBoxEx2.Show("是否花10钻石立刻刷新卡片?") == DialogResult.OK)
     {
         if (UserProfile.InfoBag.PayDiamond(10))
         {
             UserProfile.InfoRecord.SetRecordById((int)MemPlayerRecordTypes.LastCardShopTime, 0);
             ChangeShop(shelf);
             AddFlowCenter("卡片商店数据刷新", "Lime");
         }
     }
 }
Esempio n. 13
0
 private void buttonDelD_Click(object sender, EventArgs e)
 {
     if (MessageBoxEx2.Show("确定要清除卡组内所有卡片?") == DialogResult.OK)
     {
         for (int i = 0; i < GameConstants.DeckCardCount; i++)
         {
             UserProfile.InfoCard.SelectedDeck.SetCardAt(i, -1);
         }
     }
     InstallDeckCard();
     cardRegion.MenuRefresh();
     Invalidate();
 }
 private void CmdQuery_Executed(object sender, ExecutedRoutedEventArgs evt)
 {
     try {
         DeviceData.QueryDevice();
     }
     catch (Exception ex) {
         MessageBoxEx2.Show(new MessageBoxEx2Params {
             CaptionText = JCstring.MessageCaptionError,
             MessageText = string.Format(CultureInfo.CurrentCulture, JCstring.MessageTextDeviceQueryFailed.Unescape(), ex.Message),
             Image       = MessageBoxEx2Image.Error,
             ButtonText  = new string[] { JCstring.DialogButtonTextOk },
             Owner       = this
         });
     }
 }
Esempio n. 15
0
        private void bitmapButtonC1_Click(object sender, EventArgs e)
        {
            if (fuelAim > 0)
            {
                return;
            }

            if (MessageBoxEx2.Show("是否花10钻石开始转转盘?") == DialogResult.OK)
            {
                if (UserProfile.InfoBag.PayDiamond(10))
                {
                    fuel    = 0;
                    fuelAim = NarlonLib.Math.MathTool.GetRandom(48, 66);
                }
            }
        }
Esempio n. 16
0
 protected override void OnClick(MenuItemData target)
 {
     if (target.Type == "activate")
     {
         int result = UserProfile.InfoCard.SelectedDeck.AddCard(TargetCard);
         if (result != HSErrorTypes.OK)
         {
             Form.AddFlowCenter(HSErrorTypes.GetDescript(result), "Red");
         }
         else
         {
             Form.ActivateCard();
         }
     }
     else if (target.Type == "remove")
     {
         UserProfile.InfoCard.SelectedDeck.RemoveCardById(TargetCard.BaseId);
         Form.ActivateCard();
     }
     else if (target.Type == "delete")
     {
         if (UserProfile.InfoCard.GetCardExp(TargetCard.BaseId) <= 0)
         {
             Form.AddFlowCenter(HSErrorTypes.GetDescript(HSErrorTypes.CardExpNotEnough), "Red");
         }
         else if (MessageBoxEx2.Show("确定要分解多余的碎片?") == DialogResult.OK)
         {
             UserProfile.InfoCard.RemoveCardPiece(TargetCard.BaseId, true);
         }
     }
     else if (target.Type == "levelup")
     {
         if (!UserProfile.InfoCard.CanLevelUp(TargetCard.BaseId))
         {
             Form.AddFlowCenter(HSErrorTypes.GetDescript(HSErrorTypes.CardExpNotEnough), "Red");
         }
         else if (MessageBoxEx2.Show("确定消耗所有碎片提升等级?") == DialogResult.OK)
         {
             UserProfile.InfoCard.CardLevelUp(TargetCard.BaseId);
         }
     }
     else
     {
         return;
     }
     Form.MenuRefresh(false);
 }
Esempio n. 17
0
        // Event handler: DispatcherUnhandledException

        private void DispatcherUnhandledException_Handler(object sender, DispatcherUnhandledExceptionEventArgs evt)
        {
            string exceptionText = string.Empty;

            for (Exception exception = evt.Exception; exception != null; exception = exception.InnerException)
            {
                exceptionText += $"Type      = {exception.GetType().Name}\r\n";
                exceptionText += $"Message   = {exception.Message}\r\n";

                if (exception is ExternalException externalException)
                {
                    exceptionText += $"HResult   = 0x{externalException.ErrorCode:X8}";
                }

                if (exception is XamlParseException xamlParseException)
                {
                    exceptionText += $"XAML URI  = {xamlParseException.BaseUri}\r\n";
                    exceptionText += $"XAML line = {xamlParseException.LineNumber}\r\n";
                    exceptionText += $"XAML pos  = {xamlParseException.LinePosition}\r\n";
                    exceptionText += $"XAML key  = {xamlParseException.KeyContext}\r\n";
                    exceptionText += $"XAML name = {xamlParseException.NameContext}\r\n";
                }

                exceptionText += $"HasInner  = {exception.InnerException != null}\r\n";
                exceptionText += $"{exception.StackTrace}\r\n\r\n";
            }

            string message;

            if (SafeClipboardSetText(exceptionText))
            {
                message = JCstring.MessageTextUnhandledExceptionCopySuccess.Unescape();
            }
            else
            {
                message = JCstring.MessageTextUnhandledExceptionCopyFailure.Unescape();
            }

            MessageBoxEx2.Show(new MessageBoxEx2Params {
                CaptionText = JCstring.MessageCaptionFatalError,
                MessageText = string.Format(CultureInfo.CurrentCulture, message, evt.Exception.GetType().Name),
                Image       = MessageBoxEx2Image.Error,
                ButtonText  = new string[] { JCstring.DialogButtonTextOk }
            });

            Environment.Exit(1);
        }
Esempio n. 18
0
        private void FarmForm_MouseClick(object sender, MouseEventArgs e)
        {
            int newsel = GetSelectedCell(e.X, e.Y);

            if (newsel != -1)
            {
                DbFarmState timeState = UserProfile.Profile.InfoFarm.GetFarmState(newsel);
                if (timeState.Type == -1)
                {
                    var pricecount = GameResourceBook.OutWoodBuildFarm(
                        (uint)UserProfile.Profile.InfoFarm.GetFarmAvailCount() * 20);
                    if (MessageBoxEx2.Show(string.Format("是否花{0}木材开启额外农田?", pricecount)) == DialogResult.OK)
                    {
                        if (UserProfile.InfoBag.HasResource(GameResourceType.Lumber, pricecount))
                        {
                            UserProfile.InfoBag.SubResource(GameResourceType.Lumber, pricecount);
                            UserProfile.Profile.InfoFarm.SetFarmState(newsel, new DbFarmState(0, 0));
                        }
                        else
                        {
                            AddFlowCenter("资源不足", "Red");
                        }
                    }
                }
                else if (timeState.Type > 0)
                {
                    if (timeState.Time < TimeTool.DateTimeToUnixTime(DateTime.Now))
                    {
                        UserProfile.InfoBag.AddItem(timeState.Type, 1);
                        UserProfile.Profile.InfoFarm.SetFarmState(newsel, new DbFarmState(0, 0));
                    }
                    else
                    {
                        int pricecount = (timeState.Time - TimeTool.DateTimeToUnixTime(DateTime.Now)) / 600 + 1;
                        if (MessageBoxEx2.Show(string.Format("是否花{0}钻石催熟作物?", pricecount)) == DialogResult.OK)
                        {
                            if (UserProfile.InfoBag.PayDiamond(pricecount))
                            {
                                UserProfile.Profile.InfoFarm.SetFarmState(newsel, new DbFarmState(timeState.Type, 0));
                            }
                        }
                    }
                }
            }
        }
Esempio n. 19
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            var deck = UserProfile.InfoCard.Decks[selectPage];

            if (deck.Count < GameConstants.DeckCardCount)
            {
                MessageBoxEx2.Show("卡组内卡片数不足");
                return;
            }

            foreach (var cardId in deck.CardIds)
            {
                var card = CardAssistant.GetCard(cardId);
                if (card.JobId > 0 && card.JobId != UserProfile.InfoBasic.Job)
                {
                    MessageBoxEx2.Show("部分卡牌职业不匹配");
                    return;
                }
            }

            comfirm = true;
            UserProfile.InfoCard.DeckId = selectPage;
            Close();
        }
Esempio n. 20
0
        private void Devices_CmdDelete_Executed(object sender, ExecutedRoutedEventArgs evt)
        {
            int    count   = Devices.Count(d => IsSelectedDevice(d));
            string message = count == 1 ? JCstring.MessageTextDeleteOneDevice : string.Format(CultureInfo.CurrentCulture, JCstring.MessageTextDeleteMultipleDevices, count);

            int result = MessageBoxEx2.Show(new MessageBoxEx2Params {
                CaptionText = JCstring.MessageCaptionDelete,
                MessageText = message,
                Image       = MessageBoxEx2Image.Question,
                ButtonText  = new string[] { JCstring.DialogButtonTextYes, JCstring.DialogButtonTextNo },
                Owner       = this
            });

            if (result == 0)                    // Yes button
            {
                List <Device> deleteDevices = Devices.Where(d => IsSelectedDevice(d)).ToList();
                foreach (Device device in deleteDevices)
                {
                    List <Device> meshClients = Devices.Where(d => IsMeshClient(d, device.ID)).ToList();
                    foreach (Device meshClient in meshClients)
                    {
                        ((JuisDevice)meshClient).MeshMaster = string.Empty;
                    }

                    List <Device> dectClients = Devices.Where(d => IsDectClient(d, device.ID)).ToList();
                    foreach (Device dectClient in dectClients)
                    {
                        ((DectDevice)dectClient).DectBase = string.Empty;
                    }

                    Devices.Remove(device);
                }
            }

            Devices_SetDataGridFocus();
        }
Esempio n. 21
0
        private void ItemView_MouseClick(object sender, MouseEventArgs e)
        {
            if (tar == -1)
            {
                return;
            }

            if (e.Button == MouseButtons.Left)
            {
                if (leftSelectTar == -1)
                {
                    if (baseid + tar < UserProfile.InfoBag.BagCount)
                    {
                        if (UserProfile.InfoBag.Items[baseid + tar].Type != 0)
                        {
                            HItemConfig itemConfig = ConfigData.GetHItemConfig(UserProfile.InfoBag.Items[baseid + tar].Type);
                            myCursor.ChangeCursor("Item", string.Format("{0}.jpg", itemConfig.Url), 40, 40);
                            leftSelectTar = tar;
                            tooltip.Hide(this);
                        }
                    }
                    else
                    {
                        int  diff       = baseid + tar - UserProfile.InfoBag.BagCount + 1;
                        uint pricecount = 0;
                        for (int i = 0; i < diff; i++)
                        {
                            pricecount += (uint)((UserProfile.InfoBag.BagCount + i) / 5 + 10);
                        }
                        if (MessageBoxEx2.Show(string.Format("是否花{0}金币开启额外的{1}格物品格?", pricecount, diff)) == DialogResult.OK)
                        {
                            if (UserProfile.InfoBag.HasResource(GameResourceType.Gold, pricecount))
                            {
                                UserProfile.InfoBag.SubResource(GameResourceType.Gold, pricecount);
                                UserProfile.InfoBag.ResizeBag(UserProfile.InfoBag.BagCount + diff);

                                nlPageSelector1.TotalPage = Math.Min((UserProfile.InfoBag.BagCount - 1) / CellCountPerPage + 2, 9);
                                AddFlowCenter("背包扩容完成", "LimeGreen");
                            }
                        }
                    }
                }
                else
                {
                    myCursor.ChangeCursor("default");
                    if (baseid + tar < UserProfile.InfoBag.BagCount)
                    {
                        if (UserProfile.InfoBag.Items[baseid + tar].Type == 0)
                        {
                            UserProfile.InfoBag.Items[baseid + tar].Type            = UserProfile.InfoBag.Items[baseid + leftSelectTar].Type;
                            UserProfile.InfoBag.Items[baseid + leftSelectTar].Type  = 0;
                            UserProfile.InfoBag.Items[baseid + tar].Value           = UserProfile.InfoBag.Items[baseid + leftSelectTar].Value;
                            UserProfile.InfoBag.Items[baseid + leftSelectTar].Value = 0;
                        }
                        else
                        {
                            int oldid = UserProfile.InfoBag.Items[baseid + tar].Type;
                            UserProfile.InfoBag.Items[baseid + tar].Type           = UserProfile.InfoBag.Items[baseid + leftSelectTar].Type;
                            UserProfile.InfoBag.Items[baseid + leftSelectTar].Type = oldid;
                            int oldcount = UserProfile.InfoBag.Items[baseid + tar].Value;
                            UserProfile.InfoBag.Items[baseid + tar].Value           = UserProfile.InfoBag.Items[baseid + leftSelectTar].Value;
                            UserProfile.InfoBag.Items[baseid + leftSelectTar].Value = oldcount;
                        }
                    }
                    leftSelectTar = -1;
                }
                isDirty = true;
                Invalidate(new Rectangle(6, 36, 324, 324));
            }
            else if (e.Button == MouseButtons.Right)
            {
                rightSelectTar = tar;
                tooltip.Hide(this);

                if (rightSelectTar == -1)
                {
                    return;
                }

                popMenuItem.Clear();
                HItemConfig itemConfig = ConfigData.GetHItemConfig(UserProfile.InfoBag.Items[baseid + rightSelectTar].Type);

                #region 构建菜单
                if (itemConfig.IsUsable)
                {
                    popMenuItem.AddItem("use", "使用");
                }
                if (itemConfig.Id == 0 || (itemConfig.Id != 0 && itemConfig.IsThrowable))
                {
                    popMenuItem.AddItem("throw", "丢弃", "Red");
                    popMenuItem.AddItem("sold", "卖出", "Red");
                }
                popMenuItem.AddItem("exit", "退出");
                #endregion

                popMenuItem.AutoResize();
                popMenuItem.ItemIndex = baseid + rightSelectTar;
                popContainer.Show(this, e.Location.X, e.Location.Y);
            }
        }
        // Event handler: Worker_DoWork

        private void Worker_DoWork_Handler(object sender, DoWorkEventArgs evt)
        {
            BackgroundWorker worker = (BackgroundWorker)sender;
            int progress            = 0;

            foreach (Device device in queryDevices)
            {
                if (device is DectDevice dectDevice)
                {
                    JuisDevice dectBase = null;
                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                        dectBase = App.GetMainWindow().Devices.FindByID(dectDevice.DectBase) as JuisDevice;
                    }));

                    string message = null;
                    if (string.IsNullOrWhiteSpace(dectDevice.DectBase))
                    {
                        message = string.Format(CultureInfo.CurrentCulture, JCstring.MessageTextDectBaseNotSet, dectDevice.DeviceName);
                    }
                    else
                    if (dectBase == null)
                    {
                        message = string.Format(CultureInfo.CurrentCulture, JCstring.MessageTextDectBaseNotFound, dectDevice.DeviceName);
                    }

                    if (message != null)
                    {
                        int result = -1;
                        Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                            result = MessageBoxEx2.Show(new MessageBoxEx2Params {
                                CaptionText = JCstring.MessageCaptionError,
                                MessageText = message.Unescape(),
                                Image       = MessageBoxEx2Image.Error,
                                ButtonText  = new string[] { JCstring.DialogButtonTextSkip, JCstring.DialogButtonTextCancel },
                                Owner       = this
                            });
                        }));

                        if (result == 0)                                // Skip button
                        {
                            continue;
                        }
                        else                                                    // Cancel button, close box
                        {
                            break;
                        }
                    }

                    string queryUpdateResponse = dectDevice.QueryFirmwareUpdate(dectBase);

                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                        dectDevice.SetFirmwareUpdate(queryUpdateResponse);
                    }));
                }

                if (device is JuisDevice juisDevice)
                {
                    JuisDevice meshMaster = null;
                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                        meshMaster = App.GetMainWindow().Devices.FindByID(juisDevice.MeshMaster) as JuisDevice;
                    }));

                    try {
                        JUIS.UpdateInfo queryUpdateResponse = juisDevice.QueryFirmwareUpdate(meshMaster);
                        Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                            juisDevice.SetFirmwareUpdate(queryUpdateResponse);
                        }));
                    }
                    catch {
                        Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
                            juisDevice.SetFirmwareUpdate(null);
                        }));
                    }
                }

                worker.ReportProgress(++progress);
                if (worker.CancellationPending)
                {
                    break;
                }
            }
        }