private void MapFieldItem_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) { //Title = DB.NotifyCounter.ToString(); //DB.NotifyCounter = 0; //if (VM.SelectedMapField != null) // VM.SelectedMapField.Update(); Border border = (Border)sender; MapField field = (MapField)border.Tag; if (AutoBtnChkBx.IsChecked.Value && AutoBtnList.SelectedItem != null) { Country country = (Country)AutoBtnList.SelectedItem; if (AutoFieldBtnChkBx.IsChecked.Value) { field.Owner = country.Number; VM.UpdateCityOwner(field.Idx, country.Number); field.Update(); } else { foreach (var fieldTemp in VM.WorldFields) { if (fieldTemp.ProvinceId == field.ProvinceId && fieldTemp.IsSea == field.IsSea) { fieldTemp.Owner = country.Number; if (fieldTemp.IsSea == false) { VM.UpdateCityOwner(fieldTemp.Idx, country.Number); } fieldTemp.Update(); } } } } else { if (VM.SelectedMapField != null) { VM.SelectedMapField.IsSelected = false; } VM.SelectedMapField = field; //VM.SelectedMapField.RawData[22] = 5; //VM.SelectedMapField.Update(); VM.RowItem.Clear(); VM.RowItem.Add(VM.SelectedMapField); if (FieldDetailsDataGrid.Columns.Count == 0) { int columnIndex = 0; foreach (var data in VM.SelectedMapField.RawData) { FieldDetailsDataGrid.Columns.Add( new DataGridTextColumn { Header = DB.HEADERS[columnIndex], MinWidth = 30, Binding = new Binding(string.Format("RawData[{0}]", columnIndex)) { NotifyOnTargetUpdated = true } }); columnIndex++; } } //FieldDetailsDataGrid.ItemsSource = VM.RowItem; VM.SelectedMapField.IsSelected = true; } }
private static bool HasPreciousResource(MapField field) { return(field.RawData[DB.LAND_TYPE_RES] >= 24 && field.RawData[DB.LAND_TYPE_RES] <= 27); }
private void LoadWorldMap() { while (true) { loadIdx++; if (RawData[loadIdx] == 26) { //world map data starts 14 bytes after 1A 03 00 0C 03 if (RawData[loadIdx + 1] == 3 && RawData[loadIdx + 2] == 0 && RawData[loadIdx + 3] == 12 && RawData[loadIdx + 4] == 3) { mapKeyIdx = loadIdx + 20; MapKey = GetValueString(mapKeyIdx, RawData[loadIdx + 19]); loadIdx += 20 + RawData[loadIdx + 19]; mapFieldsStartIdx = loadIdx; break; //Can we verify map key anyhow? //if (Regex.IsMatch(MapKey, @"^[a-zA-Z0-9]{3,29}$")) break; } } } WorldFields = new MapField[6480]; MapField field; int fieldsInRowCount = 1; int currentRow = 1; int worldIndex = 0; while (true) { field = new MapField { RawData = GetXBytes(loadIdx, 40), Idx = (short)worldIndex }; if (HasValue(field.RawData, 255) == false) { loadIdx++; break; } field.Row = currentRow; field.Col = fieldsInRowCount; field.ProvinceId = field.RawData[23] == 255 ? field.RawData[5] : field.RawData[23]; if (worldIndex > 1) { if (WorldFields[worldIndex - 1].ProvinceId != field.ProvinceId) { Thickness newBorder = field.Border; newBorder.Left = 1; field.Border = newBorder; } if (worldIndex > 108) { if (field.Row % 2 == 0) { if (WorldFields[worldIndex - 108].ProvinceId != field.ProvinceId) { field.TopLeftBorder = Visibility.Visible; } if (WorldFields[worldIndex - 107].ProvinceId != field.ProvinceId) { field.TopRightBorder = Visibility.Visible; } } else { if (WorldFields[worldIndex - 108].ProvinceId != field.ProvinceId) { field.TopRightBorder = Visibility.Visible; } if (WorldFields[worldIndex - 109].ProvinceId != field.ProvinceId) { field.TopLeftBorder = Visibility.Visible; } } } } field.Update(); WorldFields[worldIndex] = field; worldIndex++; fieldsInRowCount++; if (fieldsInRowCount == 109) { currentRow++; fieldsInRowCount = 1; } loadIdx += 40; field = null; } WorldSize = WorldFields.Length; }
private static bool IsNotExplorable(MapField field) { return(field.RawData[DB.LAND_TYPE_GFX] < 8 || field.RawData[DB.LAND_TYPE_GFX] > 11); }