private void LoadTxt() { Txt t = Txt.s; btnMMenu.Content = t._[(int)TxI.BACK_MMENU]; txtDt.Text = t._[(int)TxI.DATE_L]; txtHm.Text = t._[(int)TxI.TIME_L]; txtIU.Text = t._[(int)TxI.IUS]; tbi1.Header = t._[(int)TxI.PREP_NEE]; tbi2.Header = t._[(int)TxI.PREP_Q]; txtId.Text = t._[(int)TxI.NEEID_S]; txtName.Text = t._[(int)TxI.NEE_NAME]; txtBirdate.Text = t._[(int)TxI.BIRDATE]; txtBirpl.Text = t._[(int)TxI.BIRPL]; txtRoom.Text = t._[(int)TxI.ROOM]; btnImp.Content = t._[(int)TxI.PREP_IMP]; btnDelQ.Content = t._[(int)TxI.PREP_DEL_SEL]; btnImpQ.Content = t._[(int)TxI.PREP_IMP]; StringBuilder sb = new StringBuilder(); sb.AppendFormat(Txt.s._[(int)TxI.Q_DB], 0, QuestSheet.DBGetND(mSelQCat)); tbiDBQ.Header = sb.ToString(); sb.Clear(); sb.AppendFormat(Txt.s._[(int)TxI.Q_TMP], 0, mTmpQS.CountD); tbiTmpQ.Header = sb.ToString(); }
public QuestList(QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet, EquipmentItemSubRecipeSheet equipmentItemSubRecipeSheet ) { _quests = new List <Quest>(); foreach (var questData in questSheet.OrderedList) { var reward = GetQuestReward( questData.QuestRewardId, questRewardSheet, questItemRewardSheet ); var quest = CreateQuest(questData, reward, equipmentItemRecipeSheet); if (quest is null) { continue; } _quests.Add(quest); } }
public void InitQPanel() { ExamLv[] l = new ExamLv[2]; l[0] = ExamLv.A; l[1] = ExamLv.B; foreach (ExamLv lv in l) { int n = QuestSheet.GetIUs(lv).Count(); for (int i = 0; i < n; ++i) { TextBox t = vtxtNEsyDif[lv][i]; if (t != null) { t.MaxLength = 2; t.PreviewKeyDown += tbxIU_PrevwKeyDown; t.TextChanged += tbxIU_TextChanged; } t = vtxtNDiff[lv][i]; if (t != null) { t.MaxLength = 2; t.PreviewKeyDown += tbxIU_PrevwKeyDown; t.TextChanged += tbxIUdif_TextChanged; } } } }
private void Button_Click(object sender, RoutedEventArgs e) { QS = new QuestSheet(); QS.ReadDocx(System.IO.Directory.GetCurrentDirectory() + "\\QS.docx"); examPage = new ExamPage(); examPage.mNee = new ExamineeC("A0001"); examPage.mQSh = QS; NavigationService.Navigate(examPage); }
public Prep0() { InitializeComponent(); mSelQCat = IUx._0; mDBQS = new QuestSheet(); mTmpQS = new QuestSheet(); mBrd = new ExamBoard(); vChk = new List <CheckBox>(); }
public ExamineeA mNee;//reference to Auth.mNee public ExamPage() { InitializeComponent(); mState = NetCode.Dating; mClnt = new Client2(ClntBufHndl, ClntBufPrep, false); mCbMsg = new UICbMsg(); bRunning = true; mQSh = new QuestSheet(); }
private void Main_Loaded(object sender, RoutedEventArgs e) { Window w = Application.Current.MainWindow; w.Closing += W_Closing; w.FontSize = 16; vtxtNEsyDif = new Dictionary <ExamLv, TextBox[]>(); vtxtNEsyDif.Add(ExamLv.A, new TextBox[QuestSheet.GetIUs(ExamLv.A).Count()]); vtxtNEsyDif.Add(ExamLv.B, new TextBox[QuestSheet.GetIUs(ExamLv.B).Count()]); vtxtNDiff = new Dictionary <ExamLv, TextBox[]>(); vtxtNDiff.Add(ExamLv.A, new TextBox[QuestSheet.GetIUs(ExamLv.A).Count()]); vtxtNDiff.Add(ExamLv.B, new TextBox[QuestSheet.GetIUs(ExamLv.B).Count()]); int i = -1, j = -1; foreach (TextBox tbx in grdA.Children.OfType <TextBox>()) { if (Grid.GetColumn(tbx) == 1) { vtxtNEsyDif[ExamLv.A][++i] = tbx; tbx.Name = "n" + i; } else { vtxtNDiff[ExamLv.A][++j] = tbx; tbx.Name = "d" + j; } } i = j = -1; foreach (TextBox tbx in grdB.Children.OfType <TextBox>()) { if (Grid.GetColumn(tbx) == 1) { vtxtNEsyDif[ExamLv.B][++i] = tbx; tbx.Name = "n" + i; } else { vtxtNDiff[ExamLv.B][++j] = tbx; tbx.Name = "d" + j; } } LoadTxt(); InitQPanel(); LoadBrd(); System.Timers.Timer aTimer = new System.Timers.Timer(2000); // Hook up the Elapsed event for the timer. aTimer.Elapsed += UpdateSrvrMsg; aTimer.AutoReset = true; aTimer.Enabled = true; }
public void UpdateList( QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet) { UpdateListV1( _listVersion + 1, questSheet, questRewardSheet, questItemRewardSheet, equipmentItemRecipeSheet); }
private void lbxSl_Selected(object sender, RoutedEventArgs e) { ListBoxItem i = sender as ListBoxItem; if (i == null) { return; } if (mBrd.vSl.ContainsKey(i.Content as string)) { return; } ExamSlot sl = new ExamSlot(); DateTime dt; DT.To_(mBrd.mDt.ToString(DT._) + ' ' + i.Content as string, DT.H, out dt); sl.Dt = dt; string emsg; if ((emsg = sl.DBSelRoomId()) != null) { WPopup.s.ShowDialog(emsg); return; } sl.DBSelStt(); sl.DBSelQPkR(); sl.DBSelNee(); if (sl.DBSelArchieve(out emsg)) { WPopup.s.ShowDialog(emsg); return; } Op0SlotView tbi = new Op0SlotView(sl); tbi.DeepCopy(tbcRefSl); tbi.ShowExaminee(); tbi.ShowQSHeader(); tbcSl.Items.Add(tbi); QuestSheet.DBUpdateCurQSId(mBrd.mDt); mBrd.vSl.Add(i.Content as string, sl); if ((tbi = tbcSl.SelectedItem as Op0SlotView) != null && tbi.mSl.eStt == ExamStt.Prep) { EnableQSGen(); } else { DisableQSGen(); } }
public void QuestSheetInitialize() { QuestSheet ??= new QuestSheet(); QuestSheet.Set(WorldQuestSheet, false); QuestSheet.Set(CollectQuestSheet, false); QuestSheet.Set(CombinationQuestSheet, false); QuestSheet.Set(TradeQuestSheet, false); QuestSheet.Set(MonsterQuestSheet, false); QuestSheet.Set(ItemEnhancementQuestSheet, false); QuestSheet.Set(GeneralQuestSheet, false); QuestSheet.Set(ItemGradeQuestSheet, false); QuestSheet.Set(ItemTypeCollectQuestSheet, false); QuestSheet.Set(GoldQuestSheet, false); QuestSheet.Set(CombinationEquipmentQuestSheet); }
private void InitModels() { mState = NetPhase.Dating; mClnt = new Client2(ClntBufHndl, ClntBufPrep, false); mCbMsg = new UICbMsg(); bRunning = true; mExaminee = new ExamineeC(); QuestSheetModel = new QuestSheet(); bBtnBusy = false; InitRemainingTime(); }
public AvatarSheets( WorldSheet worldSheet, QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet, EquipmentItemSubRecipeSheet equipmentItemSubRecipeSheet ) { WorldSheet = worldSheet; QuestSheet = questSheet; QuestRewardSheet = questRewardSheet; QuestItemRewardSheet = questItemRewardSheet; EquipmentItemRecipeSheet = equipmentItemRecipeSheet; EquipmentItemSubRecipeSheet = equipmentItemSubRecipeSheet; }
public static QuestSheet GetQuestSheet(this IAccountStateDelta states) { var questSheet = new QuestSheet(); questSheet.Set(GetSheet <WorldQuestSheet>(states), false); questSheet.Set(GetSheet <CollectQuestSheet>(states), false); questSheet.Set(GetSheet <CombinationQuestSheet>(states), false); questSheet.Set(GetSheet <TradeQuestSheet>(states), false); questSheet.Set(GetSheet <MonsterQuestSheet>(states), false); questSheet.Set(GetSheet <ItemEnhancementQuestSheet>(states), false); questSheet.Set(GetSheet <GeneralQuestSheet>(states), false); questSheet.Set(GetSheet <ItemGradeQuestSheet>(states), false); questSheet.Set(GetSheet <ItemTypeCollectQuestSheet>(states), false); questSheet.Set(GetSheet <GoldQuestSheet>(states), false); questSheet.Set(GetSheet <CombinationEquipmentQuestSheet>(states)); return(questSheet); }
public void UpdateListV1( int listVersion, QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet) { if (listVersion != _listVersion + 1) { throw new UpdateListVersionException(_listVersion + 1, listVersion); } if (questSheet.Count <= _quests.Count) { throw new UpdateListQuestsCountException(_quests.Count, questSheet.Count); } _listVersion = listVersion; ImmutableHashSet <int> questIds = _quests.Select(q => q.Id).ToImmutableHashSet(); foreach (var questRow in questSheet.OrderedList) { if (questIds.Contains(questRow.Id)) { continue; } var reward = GetQuestReward( questRow.QuestRewardId, questRewardSheet, questItemRewardSheet); Quest quest = CreateQuest(questRow, reward, equipmentItemRecipeSheet); if (quest is null) { continue; } _quests.Add(quest); } }
public void InitQPanel() { ExamLv[] l = new ExamLv[2]; l[0] = ExamLv.A; l[1] = ExamLv.B; foreach (ExamLv lv in l) { int n = QuestSheet.GetIUs(lv).Count(); for (int i = 0; i < n; ++i) { TextBox t = vtxtNEsyDif[lv][i]; if (t != null) { t.MaxLength = 2; } t = vtxtNDiff[lv][i]; if (t != null) { t.MaxLength = 2; } } } }
private void lbxNee_Selected(object sender, RoutedEventArgs e) { ListBoxItem i = sender as ListBoxItem; if (i == null) { return; } ExamineeS0 nee = new ExamineeS0(); List <TabItem> l = new List <TabItem>(); foreach (TabItem ti in tbcSl.Items) { if (!nee.ParseLvId(ti.Header as string)) { l.Add(ti); } } foreach (TabItem ti in l) { tbcSl.Items.Remove(ti); } if (nee.ParseLvId(i.Content as string)) { return; } TabItem tbi = new TabItem(); tbi.Header = i.Content; // nee.mDt = mBrd.mDt; int qsid = nee.DBGetQSId(); if (qsid < 0) { return; } QuestSheet qs = null; foreach (ExamSlot sl in mBrd.vSl.Values) { if (sl.vQPack[nee.eLv].vSheet.ContainsKey(qsid)) { qs = sl.vQPack[nee.eLv].vSheet[qsid]; break; } else if (sl.vQPackAlt[nee.eLv].vSheet.ContainsKey(qsid)) { qs = sl.vQPackAlt[nee.eLv].vSheet[qsid]; break; } } if (qs == null) { string t = nee.DBGetT(); if (!mBrd.vSl.ContainsKey(t)) { ExamSlot sl = new ExamSlot(); DateTime dati; DT.To_(mBrd.mDt.ToString(DT._) + ' ' + t, DT.HS, out dati); sl.Dt = dati; string emsg; if ((emsg = sl.DBSelRoomId()) != null) { WPopup.s.ShowDialog(emsg); return; } sl.DBSelStt(); sl.DBSelQPkR(); sl.DBSelNee(); if (sl.DBSelArchieve(out emsg)) { WPopup.s.ShowDialog(emsg); return; } mBrd.vSl.Add(t.Substring(0, 5), sl); // if (sl.vQPack[nee.eLv].vSheet.ContainsKey(qsid)) { qs = sl.vQPack[nee.eLv].vSheet[qsid]; } else if (sl.vQPackAlt[nee.eLv].vSheet.ContainsKey(qsid)) { qs = sl.vQPackAlt[nee.eLv].vSheet[qsid]; } } } if (qs == null) { return; } nee.DBSelGrade(); StackPanel spl = new StackPanel(); TextBlock tx = new TextBlock(); tx.Text = Txt.s._[(int)TxI.QS_ID] + ' ' + qs.tId + ", "; spl.Children.Add(tx); tx = new TextBlock(); tx.Text = Txt.s._[(int)TxI.MARK] + ' ' + nee.Grade; spl.Children.Add(tx); ScrollViewer svwr = new ScrollViewer(); svwr.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; StackPanel sp = new StackPanel(); int x = 0; SolidColorBrush evenbg = Theme.s._[(int)BrushId.BG]; SolidColorBrush oddbg = Theme.s._[(int)BrushId.Q_BG]; SolidColorBrush difbg = Theme.s._[(int)BrushId.Ans_TopLine]; SolidColorBrush bg; bool even = false; char[] ans = nee.DBGetAns(); int k = -1; foreach (Question q in qs.ShallowCopy()) { /*if (q.bDiff) * bg = difbg; * else*/if (even) { bg = evenbg; } else { bg = oddbg; } even = !even; TextBlock j = new TextBlock(); j.Width = tbcSl.Width - SystemParameters.ScrollWidth; j.TextWrapping = TextWrapping.Wrap; j.Text = ++x + ". " + q.Stmt; j.Background = bg; sp.Children.Add(j); for (int idx = 0; idx < Question.N_ANS; ++idx) { j = new TextBlock(); j.Width = tbcSl.Width - SystemParameters.ScrollWidth; j.TextWrapping = TextWrapping.Wrap; j.Text = ((char)('A' + idx)).ToString() + ") " + q.vAns[idx]; j.Background = bg; if (q.vKeys[idx]) { j.FontWeight = FontWeights.Bold; } if (ans[++k] == Question.C1) { j.Background = Theme.s._[(int)BrushId.Ans_Highlight]; } sp.Children.Add(j); } } svwr.Content = sp; svwr.Height = 560; spl.Children.Add(svwr); tbi.Content = spl; // tbcSl.Items.Add(tbi); }
private void ShowDBQ() { SolidColorBrush evenbg = Theme.s._[(int)BrushId.BG]; SolidColorBrush oddbg = Theme.s._[(int)BrushId.Q_BG]; SolidColorBrush difbg = Theme.s._[(int)BrushId.Ans_TopLine]; SolidColorBrush bg; bool even = false; int x = -1; gDBQuest.Children.Clear(); gDBQuest.RowDefinitions.Clear(); vChk.Clear(); double w = gDBQuest.ColumnDefinitions.First().Width.Value; foreach (Question q in mDBQS.ShallowCopy()) { TextBlock i = new TextBlock(); i.Text = (++x + 1) + ". " + q.Stmt; i.Width = w; i.TextWrapping = TextWrapping.Wrap; StackPanel sp = new StackPanel(); sp.Children.Add(i); for (int idx = 0; idx < Question.N_ANS; ++idx) { TextBlock j = new TextBlock(); j.Text = ((char)('A' + idx)).ToString() + ") " + q.vAns[idx]; j.Width = w; j.TextWrapping = TextWrapping.Wrap; if (q.vKeys[idx]) { j.FontWeight = FontWeights.Bold; } sp.Children.Add(j); } /*if (q.bDiff) * bg = difbg; * else*/if (even) { bg = evenbg; } else { bg = oddbg; } even = !even; sp.Background = bg; RowDefinition rd = new RowDefinition(); gDBQuest.RowDefinitions.Add(rd); Grid.SetRow(sp, x); gDBQuest.Children.Add(sp); CheckBox chk = new CheckBox(); chk.Name = "c" + q.uId; chk.VerticalAlignment = VerticalAlignment.Center; Grid.SetColumn(chk, 1); Grid.SetRow(chk, x); gDBQuest.Children.Add(chk); vChk.Add(chk); } StringBuilder sb = new StringBuilder(); sb.AppendFormat(Txt.s._[(int)TxI.Q_DB], mDBQS.Count, QuestSheet.DBGetND(mSelQCat)); tbiDBQ.Header = sb.ToString(); }
private void tbiQ_GotFocus(object sender, RoutedEventArgs e) { TabItem tbi = sender as TabItem; if (tbi == null || tbi.Content != null) { return; } TabControl tbc = tbi.Parent as TabControl; if (tbc == null) { return; } ExamLv lv; int id; if (QuestSheet.ParseLvId((tbi.Header as TextBlock).Text, out lv, out id)) { return; } QuestSheet qs = null; if (mSl.vQPack[lv].vSheet.ContainsKey(id)) { qs = mSl.vQPack[lv].vSheet[id]; } else if (mSl.vQPackAlt[lv].vSheet.ContainsKey(id)) { qs = mSl.vQPackAlt[lv].vSheet[id]; } if (qs == null) { return; } ScrollViewer svwr = new ScrollViewer(); svwr.VerticalScrollBarVisibility = ScrollBarVisibility.Auto; StackPanel sp = new StackPanel(); int x = 0; SolidColorBrush evenbg = Theme.s._[(int)BrushId.BG]; SolidColorBrush oddbg = Theme.s._[(int)BrushId.Q_BG]; SolidColorBrush difbg = Theme.s._[(int)BrushId.Ans_TopLine]; SolidColorBrush bg; bool even = false; foreach (Question q in qs.ShallowCopy()) { /*if (q.bDiff) * bg = difbg; * else*/if (even) { bg = evenbg; } else { bg = oddbg; } even = !even; TextBlock i = new TextBlock(); i.Width = tbc.Width - SystemParameters.ScrollWidth; i.TextWrapping = TextWrapping.Wrap; i.Text = ++x + ". " + q.Stmt; i.Background = bg; sp.Children.Add(i); for (int idx = 0; idx < Question.N_ANS; ++idx) { TextBlock j = new TextBlock(); j.Width = tbc.Width - SystemParameters.ScrollWidth; j.TextWrapping = TextWrapping.Wrap; j.Text = ((char)('A' + idx)).ToString() + ") " + q.vAns[idx]; j.Background = bg; if (q.vKeys[idx]) { j.FontWeight = FontWeights.Bold; } sp.Children.Add(j); } } svwr.Content = sp; svwr.Height = 560; tbi.Content = svwr; }
public bool ClntBufHndl(byte[] buf) { int offs = 0; int l, errc; switch (mState) { case NetPhase.Dating: if (!DT.ReadByte(buf, ref offs, out mDt) && bRunning) { Dispatcher.Invoke(() => { txtDate.Text = Txt.s._[(int)TxI.DATE] + mDt.ToString(DT.RR); EnableControls(); btnReconn.IsEnabled = false; }); mState = NetPhase.Authenticating; } break; case NetPhase.Authenticating: l = buf.Length - offs; if (l < 4) { break; } errc = BitConverter.ToInt32(buf, offs); offs += 4; if (errc == 0) { ExamineeC e = new ExamineeC(); e.bLog = User.bLog; bool b = e.ReadByte(buf, ref offs); l = buf.Length - offs; if (!b) { User.Merge(e); mState = NetPhase.ExamRetrieving; return(true); //continue } } else { string msg = null; if (errc == (int)TxI.SIGNIN_AL) { if (l < 4) { break; } int sz = BitConverter.ToInt32(buf, offs); l -= 4; offs += 4; if (l < sz) { break; } string comp = ""; if (0 < sz) { comp = Encoding.UTF8.GetString(buf, offs, sz); l -= sz; offs += sz; } if (l < 8) { break; } int h = BitConverter.ToInt32(buf, offs); offs += 4; int m = BitConverter.ToInt32(buf, offs); offs += 4; l -= 8; StringBuilder sb = new StringBuilder(); sb.AppendFormat(Txt.s._[(int)TxI.SIGNIN_AL], h.ToString() + ':' + m); sb.Append(comp + '.'); msg = sb.ToString(); } else if (errc == (int)TxI.SIGNIN_NOK) { msg = Txt.s._[(int)TxI.SIGNIN_NOK]; } else if (errc == (int)TxI.NEEID_NF) { msg = Txt.s._[(int)TxI.NEEID_NF]; } else if (errc == (int)TxI.RECV_DAT_ER) { msg = Txt.s._[(int)TxI.RECV_DAT_ER]; } if (bRunning && msg != null) { Dispatcher.Invoke(() => { AppView.Opacity = 0.5; PopupMgr.Singleton.ShowDialog(msg); AppView.Opacity = 1; EnableControls(); }); } } break; case NetPhase.ExamRetrieving: errc = BitConverter.ToInt32(buf, offs); offs += 4; if (errc == (int)TxI.QS_NFOUND) { mState = NetPhase.Authenticating; int qsid = BitConverter.ToInt32(buf, offs); offs += 4; if (bRunning) { Dispatcher.Invoke(() => { AppView.Opacity = 0.5; PopupMgr.Singleton.ShowDialog(Txt.s._[(int)TxI.QS_NFOUND] + qsid); AppView.Opacity = 1; EnableControls(); }); } break; } QuestSheet qs = new QuestSheet(); if (qs.ReadByte(buf, ref offs)) { mState = NetPhase.Authenticating; if (bRunning) { Dispatcher.Invoke(() => { AppView.Opacity = 0.5; PopupMgr.Singleton.ShowDialog(Txt.s._[(int)TxI.QS_READ_ER]); AppView.Opacity = 1; EnableControls(); }); } break; } if (bRunning) { Dispatcher.Invoke(() => { pgTkExm = new TakeExam(); pgTkExm.mExaminee = User; pgTkExm.QuestSheetModel = qs; NavigationService.Navigate(pgTkExm); }); } break; } return(false); }
public QuestList(QuestSheet questSheet, QuestRewardSheet questRewardSheet, QuestItemRewardSheet questItemRewardSheet, EquipmentItemRecipeSheet equipmentItemRecipeSheet, EquipmentItemSubRecipeSheet equipmentItemSubRecipeSheet ) { _quests = new List <Quest>(); foreach (var questData in questSheet.OrderedList) { Quest quest; QuestReward reward = GetQuestReward( questData.QuestRewardId, questRewardSheet, questItemRewardSheet ); switch (questData) { case CollectQuestSheet.Row row: quest = new CollectQuest(row, reward); _quests.Add(quest); break; case CombinationQuestSheet.Row row1: quest = new CombinationQuest(row1, reward); _quests.Add(quest); break; case GeneralQuestSheet.Row row2: quest = new GeneralQuest(row2, reward); _quests.Add(quest); break; case ItemEnhancementQuestSheet.Row row3: quest = new ItemEnhancementQuest(row3, reward); _quests.Add(quest); break; case ItemGradeQuestSheet.Row row4: quest = new ItemGradeQuest(row4, reward); _quests.Add(quest); break; case MonsterQuestSheet.Row row5: quest = new MonsterQuest(row5, reward); _quests.Add(quest); break; case TradeQuestSheet.Row row6: quest = new TradeQuest(row6, reward); _quests.Add(quest); break; case WorldQuestSheet.Row row7: quest = new WorldQuest(row7, reward); _quests.Add(quest); break; case ItemTypeCollectQuestSheet.Row row8: quest = new ItemTypeCollectQuest(row8, reward); _quests.Add(quest); break; case GoldQuestSheet.Row row9: quest = new GoldQuest(row9, reward); _quests.Add(quest); break; case CombinationEquipmentQuestSheet.Row row10: int stageId; var recipeRow = equipmentItemRecipeSheet.Values .FirstOrDefault(r => r.Id == row10.RecipeId); if (recipeRow is null) { throw new ArgumentException($"Invalid Recipe Id : {row10.RecipeId}"); } stageId = recipeRow.UnlockStage; if (row10.SubRecipeId.HasValue) { var subRow = equipmentItemSubRecipeSheet.Values .FirstOrDefault(r => r.Id == row10.SubRecipeId); if (subRow is null) { throw new ArgumentException($"Invalid Sub Recipe Id : {row10.SubRecipeId}"); } stageId = Math.Max(stageId, subRow.UnlockStage); } quest = new CombinationEquipmentQuest(row10, reward, stageId); _quests.Add(quest); break; } } }