private void NextEncount() { if (isOperatingNextEncount) { return; } isOperatingNextEncount = true; Model model = Model as Model; Encount e = NextAvailableEncounts[SelectedEncountItem.Value]; model.Next(e.ID); SetEncounts(); isOperatingNextEncount = false; }
private void SetEncounts() { Model model = Model as Model; if (model == null) { return; } bool[] currentAvailables = model.CurrentAvailableMonsterPartyIndeces(); AvilableTable.Value = string.Join(",", model.CurrentAvailableTableIndex()); NextAvailableEncounts.Clear(); foreach (var i in Enumerable.Range(0, 8)) { if (currentAvailables[i]) { Encount newEncount = new Encount(); newEncount.ID = i; FieldData fd = PlaceListItems[SelectedPlaceItem.Value]; newEncount.EncountName = $"{model.encountTable.pattern[fd.ID].party[i]}"; NextAvailableEncounts.Add(newEncount); } } EncountLog.Value = ""; foreach (var i in Enumerable.Range(0, model.currentEncountIndex)) { var tableIndices = model.CurrentAvailableTableIndex(); int partyIndex = model.encountTable.table[i, tableIndices[0]]; FieldData fd = PlaceListItems[SelectedPlaceItem.Value]; string partyPattern = model.encountTable.pattern[fd.ID].party[partyIndex]; EncountLog.Value += $"{i} : {partyPattern}\n"; } //update forcast EncountForecast.Value = ""; foreach (var i in Enumerable.Range(0, 32)) { int encountCounter = model.currentEncountIndex + i; EncountForecast.Value += $"{encountCounter}\n"; var tableIndices = model.CurrentAvailableTableIndex(); List <EncountPattern> lstEncountPatterns = new List <EncountPattern>(); foreach (var tableIndex in tableIndices) { int partyIndex = model.encountTable.table[encountCounter, tableIndex]; FieldData fd = PlaceListItems[SelectedPlaceItem.Value]; string partyPattern = model.encountTable.pattern[fd.ID].party[partyIndex]; var array = (from x in lstEncountPatterns where x.partyPattern == partyPattern select x).ToArray(); if (array.Length == 0) { EncountPattern ep = new EncountPattern(); ep.indices.Add(tableIndex); ep.partyPattern = partyPattern; lstEncountPatterns.Add(ep); } else { array[0].indices.Add(tableIndex); } } foreach (var pattern in lstEncountPatterns) { EncountForecast.Value += $"\t{string.Join(",", pattern.indices)} : {pattern.partyPattern}\n"; } EncountForecast.Value += "\n"; } CurrentEncount.Value = model.currentEncountIndex; }