public void UpdateUI(UpdateParam param) { Application.Current.Dispatcher.Invoke(() => { if (param == UpdateParam.InstallStart) { ((MainWindow)Application.Current.MainWindow).NextBtn.IsEnabled = false; ((MainWindow)Application.Current.MainWindow).BackBtn.IsEnabled = false; ((MainWindow)Application.Current.MainWindow).MainFrame.Navigate(this.InstallationProgressPage); } else if (param == UpdateParam.ExtractionComplete) { ((MainWindow)Application.Current.MainWindow).CancelBtn.Content = "Finish"; ((MainWindow)Application.Current.MainWindow).NextBtn.Visibility = Visibility.Hidden; ((MainWindow)Application.Current.MainWindow).BackBtn.Visibility = Visibility.Hidden; this.InstallationProgressPage.progressBar.IsIndeterminate = false; this.InstallationProgressPage.InstallPanel.Visibility = Visibility.Collapsed; } else if (param == UpdateParam.InstallComplete) { ((MainWindow)Application.Current.MainWindow).FinishBtn.Visibility = Visibility.Visible; ((MainWindow)Application.Current.MainWindow).FinishBtn.Click += Install_Finish; ((MainWindow)Application.Current.MainWindow).CancelBtn.Visibility = Visibility.Hidden; } else if (param == UpdateParam.ProgressIndeterminate) { this.InstallationProgressPage.progressBar.IsIndeterminate = true; } }); }
public void UpdateUI(UpdateParam param) { Application.Current.Dispatcher.Invoke(() => { if (param == UpdateParam.InstallStart) { ((MainWindow)Application.Current.MainWindow).Closed += OnWindowClosed; if (Silent) { ((MainWindow)Application.Current.MainWindow).Show(); ProgressPage.launchOnExitCheckbox.IsEnabled = false; ProgressPage.launchOnExitCheckbox.Visibility = Visibility.Hidden; } ((MainWindow)Application.Current.MainWindow).NextBtn.IsEnabled = false; ((MainWindow)Application.Current.MainWindow).BackBtn.IsEnabled = false; ((MainWindow)Application.Current.MainWindow).MainFrame.Navigate(this.ProgressPage); UpdateProgressBar(GetResourceString("Installer_ProgressBar_Initalizing"), 0, 0, true); } else if (param == UpdateParam.InstallComplete) { ((MainWindow)Application.Current.MainWindow).Closed -= OnWindowClosed; if (Silent) { ((MainWindow)Application.Current.MainWindow).Hide(); } else { ((MainWindow)Application.Current.MainWindow).CancelBtn.Content = "Finish"; ((MainWindow)Application.Current.MainWindow).NextBtn.Visibility = Visibility.Hidden; ((MainWindow)Application.Current.MainWindow).BackBtn.Visibility = Visibility.Hidden; ((MainWindow)Application.Current.MainWindow).CancelBtn.Visibility = Visibility.Hidden; ((MainWindow)Application.Current.MainWindow).FinishBtn.Visibility = Visibility.Visible; ((MainWindow)Application.Current.MainWindow).FinishBtn.Click += (sender, e) => Install_Finish(); this.ProgressPage.InstallPanel.Visibility = Visibility.Collapsed; UpdateProgressBar(GetResourceString("Installer_ProgressBar_Finalizing"), 0, 0, false); } } }); }
public bool Update(GridData grid, GridData.Row row, ref int colIndex, int pathIndex, UpdateParam param) { // ColumnCount maybe change in loop for (; colIndex < grid.ColumnCount; ++colIndex) { ColumnTag tag = grid.GetColumn(colIndex).ColumnTag; switch (tag.Tag) { case ColumnTag.ETag.AddVariable: // end of bean. // 删除Define变化时没有同步的数据。 HashSet <string> removed = new HashSet <string>(); foreach (var k in VariableMap.Keys) { if (tag.PathLast.Define.Parent.GetVariable(k) == null) { removed.Add(k); } } foreach (var k in removed) { DeleteVarData(k); } return(false); } ColumnTag.VarInfo varInfo = tag.Path[pathIndex]; if (false == VariableMap.TryGetValue(varInfo.Define.Name, out var varData)) { switch (param.UpdateType) { case EUpdate.Data: break; // will new data case EUpdate.CallAction: case EUpdate.Grid: if (varInfo.Define.Type == VarDefine.EType.List) { if (tag.Tag == ColumnTag.ETag.ListStart) { ++colIndex; } colIndex = GridData.FindColumnListEnd(grid, colIndex); } continue; // data not found. continue load. case EUpdate.DeleteData: return(true); // data not found. nothing need to delete. default: throw new Exception("unknown update type"); } varData = new VarData(this, varInfo.Define.Name); VariableMap.Add(varInfo.Define.Name, varData); } else if (param.UpdateType == EUpdate.CallAction) { param.UpdateAction(grid, colIndex, varInfo, varData); } if (varInfo.Define.Type == VarDefine.EType.List) { if (param.UpdateType == EUpdate.DeleteData) { if (pathIndex + 1 < tag.Path.Count) { if (varInfo.ListIndex < varData.Beans.Count) { Bean bean1 = varData.Beans[varInfo.ListIndex]; if (null != bean1) { bean1.Update(grid, row, ref colIndex, pathIndex + 1, param); } // always return true; } } else { if (ColumnTag.ETag.ListStart != tag.Tag) { throw new Exception("应该仅在Tag为ListStart时移除数据. see FormMain.deleteVariable..."); } DeleteVarData(varInfo.Define.Name); } return(true); } if (ColumnTag.ETag.ListStart == tag.Tag) { continue; // 此时没有进入下一级Bean,就在当前Bean再次判断,因为这里没有ListIndex。 } if (tag.Tag == ColumnTag.ETag.ListEnd) { int curListCount = -varInfo.ListIndex; int add = 0; for (int i = curListCount; i < varData.Beans.Count; ++i) { ColumnTag tagSeed = tag.Copy(ColumnTag.ETag.Normal); tagSeed.PathLast.ListIndex = i; add += tag.PathLast.Define.Reference.BuildGridColumns(grid, colIndex + add, tagSeed, -1); } if (curListCount < varData.Beans.Count) // curListCount 至少为1. { varInfo.ListIndex = -varData.Beans.Count; } if (add > 0) { --colIndex; // 新增加了列,回退一列,继续装载数据。 } continue; } if (varInfo.ListIndex >= varData.Beans.Count) { if (EUpdate.Data == param.UpdateType) { for (int i = varData.Beans.Count; i < varInfo.ListIndex; ++i) { varData.AddBean(new Bean(Document, varInfo.Define.Value)); } Bean create = new Bean(Document, varInfo.Define.Value); varData.AddBean(create); if (create.Update(grid, row, ref colIndex, pathIndex + 1, param)) { return(true); } } // 忽略剩下的没有数据的item直到ListEnd。 colIndex = GridData.FindColumnListEnd(grid, colIndex); continue; } Bean bean = varData.Beans[varInfo.ListIndex]; if (null != bean) { if (bean.Update(grid, row, ref colIndex, pathIndex + 1, param)) { return(true); } continue; } if (EUpdate.Data == param.UpdateType) { Bean create = new Bean(Document, varInfo.Define.Value); varData.SetBeanAt(varInfo.ListIndex, create); if (create.Update(grid, row, ref colIndex, pathIndex + 1, param)) { return(true); } } continue; } if (pathIndex + 1 != tag.Path.Count) { throw new Exception("Remain Path, But Is Not A List"); } switch (param.UpdateType) { case EUpdate.Data: // OnGridCellEndEdit update data varData.Value = row.Cells[colIndex].Value; return(true); case EUpdate.CallAction: // 上面已经做完了。 break; case EUpdate.Grid: row.Cells[colIndex].Value = varData.Value; // upate to grid break; // Update Grid 等到 ColumnTag.ETag.AddVariable 才返回。在这个函数开头。 case EUpdate.DeleteData: DeleteVarData(varInfo.Define.Name); return(true); default: throw new Exception("unkown update type. end."); } } return(true); }
private async Task UpdateSpiders() { try { XReg.SetParameter(TASK_START, CustomAnchor.TimeKey); XReg.Save(); IEnumerable <XParameter> Updates; List <string> Exists = new List <string>(); if (Retrying) { Updates = XReg.Parameters(AppKeys.BTASK_SPIDER).Where(x => { int r = x.GetSaveInt(AppKeys.BTASK_RETRY); return(0 < r && r < MaxRetry); }); } else { Updates = XReg.Parameters(AppKeys.BTASK_SPIDER).Where(x => { int r = x.GetSaveInt(AppKeys.BTASK_RETRY); if (r == 0 || MaxRetry <= r) { return(true); } else { // Consider Retry Timer dead if LastUpdate is 20 < minutes DateTime LastRun = DateTime.FromFileTimeUtc(x.GetSaveLong(AppKeys.LBS_TIME)); return(30 < DateTime.Now.Subtract(LastRun).TotalMinutes); } }); } foreach (XParameter UpdateParam in Updates) { string TileId = UpdateParam.GetValue("tileId"); if (!SecondaryTile.Exists(TileId)) { UpdateParam.SetValue(new XKey[] { new XKey(AppKeys.SYS_EXCEPTION, "App Tile is missing") , CustomAnchor.TimeKey }); XReg.SetParameter(UpdateParam); continue; } string[] Keys = UpdateParam.Id.Split('.'); if (Keys.Length != 3) { XReg.RemoveParameter(UpdateParam.Id); continue; } SpiderBook SBook = await SpiderBook.CreateSAsync(Keys[0], Keys[2], null); if (!SBook.CanProcess) { XReg.RemoveParameter(UpdateParam.Id); continue; } SBook.MarkUnprocessed(); string OHash = null, NHash = null; SBook.GetBook()?.Entry.Meta.TryGetValue("TOCHash", out OHash); await ItemProcessor.ProcessLocal(SBook); if (SBook.ProcessSuccess) { BookInstruction NBook = SBook.GetBook(); NBook?.Entry.Meta.TryGetValue("TOCHash", out NHash); if (NBook.Packed == true && (NBook.NeedUpdate || OHash != NHash)) { await LiveTileService.UpdateTile(CanvasDevice, NBook, TileId); } UpdateParam.SetValue(new XKey[] { new XKey(AppKeys.SYS_EXCEPTION, false) , new XKey(AppKeys.BTASK_RETRY, 0) , CustomAnchor.TimeKey }); } else { CreateRetryTimer(); int NRetries = UpdateParam.GetSaveInt(AppKeys.BTASK_RETRY); UpdateParam.SetValue(new XKey[] { new XKey(AppKeys.SYS_EXCEPTION, true) , new XKey(AppKeys.BTASK_RETRY, NRetries + 1) , CustomAnchor.TimeKey }); } XReg.SetParameter(UpdateParam); XReg.Save(); } XReg.SetParameter(TASK_END, CustomAnchor.TimeKey); XReg.Save(); } catch (Exception ex) { try { XReg.SetParameter(AppKeys.SYS_EXCEPTION, new XKey(AppKeys.SYS_MESSAGE, ex.Message)); XReg.Save(); } catch (Exception) { } } }
public bool UpdateMarker(UpdateParam param) { //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Expected O, but got Unknown //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Expected O, but got Unknown //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Unknown result type (might be due to invalid IL or missing references) //IL_0482: Unknown result type (might be due to invalid IL or missing references) //IL_048d: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_04c9: Unknown result type (might be due to invalid IL or missing references) //IL_04d9: Unknown result type (might be due to invalid IL or missing references) //IL_04e4: Unknown result type (might be due to invalid IL or missing references) if (param == null) { return(false); } bool result = false; EFFECT_TYPE eFFECT_TYPE = EFFECT_TYPE.NONE; switch (param.weakState) { case Enemy.WEAK_STATE.WEAK: eFFECT_TYPE = EFFECT_TYPE.WEAK; break; case Enemy.WEAK_STATE.DOWN: eFFECT_TYPE = EFFECT_TYPE.DOWN; break; case Enemy.WEAK_STATE.WEAK_SP_ATTACK: case Enemy.WEAK_STATE.WEAK_SP_DOWN_MAX: eFFECT_TYPE = (EFFECT_TYPE)((!param.isAimMode || !param.targeting || param.weakSubParam == 5) ? (7 + param.weakSubParam - 1) : 0); break; case Enemy.WEAK_STATE.WEAK_ELEMENT_ATTACK: eFFECT_TYPE = EFFECT_TYPE.WEAK_ELEMENT_ATTACK; break; case Enemy.WEAK_STATE.WEAK_ELEMENT_SKILL_ATTACK: eFFECT_TYPE = EFFECT_TYPE.WEAK_ELEMENT_SKILL_ATTACK; break; case Enemy.WEAK_STATE.WEAK_SKILL_ATTACK: eFFECT_TYPE = EFFECT_TYPE.WEAK_SKILL_ATTACK; break; case Enemy.WEAK_STATE.WEAK_HEAL_ATTACK: eFFECT_TYPE = EFFECT_TYPE.WEAK_HEAL_ATTACK; break; case Enemy.WEAK_STATE.WEAK_CANNON: eFFECT_TYPE = EFFECT_TYPE.WEAK_CANNON; break; default: if (param.targeting) { eFFECT_TYPE = EFFECT_TYPE.NORMAL; } break; } if (param.isAimMode && (eFFECT_TYPE == EFFECT_TYPE.NONE || eFFECT_TYPE == EFFECT_TYPE.NORMAL)) { switch (param.spAttackType) { case SP_ATTACK_TYPE.HEAT: eFFECT_TYPE = ((!param.isAimChargeMax) ? EFFECT_TYPE.AIM_HEAT : EFFECT_TYPE.AIM_HEAT_CHARGE_MAX); break; default: eFFECT_TYPE = ((!param.isAimChargeMax) ? EFFECT_TYPE.AIM : EFFECT_TYPE.AIM_CHARGE_MAX); break; case SP_ATTACK_TYPE.SOUL: break; } } bool flag = false; if (param.isAimArrow && param.spAttackType == SP_ATTACK_TYPE.SOUL) { if (eFFECT_TYPE != EFFECT_TYPE.WEAK && eFFECT_TYPE != EFFECT_TYPE.WEAK_SP_ARROW) { eFFECT_TYPE = EFFECT_TYPE.NONE; } flag = true; } if (effectType != eFFECT_TYPE || point != param.targetPoint || !param.targetPoint.param.isShowRange) { if (effectTransform != null) { EffectManager.ReleaseEffect(effectTransform.get_gameObject(), true, false); } effectTransform = null; } if (effectTransform == null && eFFECT_TYPE != EFFECT_TYPE.NONE && param.targetPoint.param.isShowRange) { string text = MonoBehaviourSingleton <InGameSettingsManager> .I.targetMarkerSettings.effectNames[(int)eFFECT_TYPE]; EFFECT_TYPE eFFECT_TYPE2 = eFFECT_TYPE; if (eFFECT_TYPE2 == EFFECT_TYPE.WEAK_ELEMENT_ATTACK || eFFECT_TYPE2 == EFFECT_TYPE.WEAK_ELEMENT_SKILL_ATTACK) { text = ((param.validElementType >= 0) ? (text + param.validElementType.ToString()) : string.Empty); } if (!string.IsNullOrEmpty(text)) { effectTransform = EffectManager.GetEffect(text, transform); } result = true; } if (param.playSign && param.targetPoint.param.isShowRange) { EFFECT_TYPE eFFECT_TYPE3 = EFFECT_TYPE.NONE; switch (param.weakState) { case Enemy.WEAK_STATE.WEAK: eFFECT_TYPE3 = EFFECT_TYPE.WEAK_SIGN; break; case Enemy.WEAK_STATE.DOWN: eFFECT_TYPE3 = EFFECT_TYPE.DOWN_SIGN; break; case Enemy.WEAK_STATE.WEAK_SP_ATTACK: case Enemy.WEAK_STATE.WEAK_SP_DOWN_MAX: eFFECT_TYPE3 = (EFFECT_TYPE)(12 + param.weakSubParam - 1); break; } if (eFFECT_TYPE3 != EFFECT_TYPE.NONE) { string text2 = MonoBehaviourSingleton <InGameSettingsManager> .I.targetMarkerSettings.effectNames[(int)eFFECT_TYPE3]; if (!string.IsNullOrEmpty(text2)) { Transform effect = EffectManager.GetEffect(text2, transform); if (effect != null) { effect.Set(param.targetPoint.param.markerPos, param.targetPoint.param.markerRot); } result = true; } } } if (flag && param.targetPoint.param.isShowRange) { if (!param.isMultiLockMax && multiLockTransform == null) { string text3 = MonoBehaviourSingleton <InGameSettingsManager> .I.targetMarkerSettings.effectNames[24]; if (!text3.IsNullOrWhiteSpace()) { multiLockTransform = EffectManager.GetEffect(text3, transform); multiLock = multiLockTransform.GetComponentInChildren <MultiLockMarker>(); if (multiLock != null) { multiLock.Init(); } result = true; } } } else { if (multiLockTransform != null) { EffectManager.ReleaseEffect(multiLockTransform.get_gameObject(), true, false); } multiLockTransform = null; multiLock = null; } effectType = eFFECT_TYPE; point = param.targetPoint; if (effectTransform != null) { effectTransform.Set(point.param.markerPos, point.param.markerRot); effectTransform.set_localScale(Vector3.get_one() * param.markerScale); } if (multiLockTransform != null) { multiLockTransform.Set(point.param.markerPos, point.param.markerRot); multiLockTransform.set_localScale(Vector3.get_one() * param.markerScale); } return(result); }