private void AddMapFromServerString(string serverString) { var m = serverStringMatch.Match(serverString); if (!m.Success) { throw new Exception("Unrecognized server map string: " + serverString); } var shortname = m.Groups["shortname"].Value; var nametype = m.Groups["nametype"].Value; var name = m.Groups["name"].Value; var type = (ServerInfo.GameType)Enum.Parse(typeof(ServerInfo.GameType), m.Groups["type"].Value);; var players = int.Parse(m.Groups["players"].Value); lock (MapInfo) { var mapInfo = GetMapInfoFromName(name); if (mapInfo == null) { mapInfo = new MapInfo() { ShortName = shortname, Name = name, MaxPlayers = players, }; MapInfo.Add(name, mapInfo); } if (!mapInfo.GameTypes.Contains(type)) { mapInfo.GameTypes.Add(type); } } }
static MapInfo ReadMap(string path) { string data = File.ReadAllText(path); using (StringReader reader = new StringReader(data)) { string[] tokens = reader.ReadLine().Split(' '); int rows = int.Parse(tokens[0]); int cols = int.Parse(tokens[1]); MapInfo map = new MapInfo(rows, cols); for (int i = 0; i < rows; ++i) { tokens = reader.ReadLine().Split(' '); for (int j = 0; j < cols; ++j) { map[rows - 1 - i, j] = int.Parse(tokens[j]) - 1; } } int enemyCount = int.Parse(reader.ReadLine()); for (int i = 0; i < enemyCount; ++i) { tokens = reader.ReadLine().Split(' '); string name = tokens[0]; float x = float.Parse(tokens[1]); float y = float.Parse(tokens[2]); map.Add(new EnemyInfo(name, new Vector2(x, y))); } return(map); } }
private void btnProcess_Click(object sender, EventArgs e) { var dlg = new OpenFileDialog { CheckFileExists = true, Multiselect = false, Filter = "png|*.png|gif|*.gif|jpg|*.jpg|images|*.png;*.jpg;*.gif", DefaultExt = "images|*.png;*.jpg;*.gif" }; dlg.ShowDialog(); Point size = new Point(); Image img = Image.FromStream( dlg.OpenFile() ); size.X = ( img.Width + 511 ) / 512; size.Y = ( img.Height + 511 ) / 512; Bitmap output = new Bitmap( 512, 512 ); Graphics g = Graphics.FromImage( output ); var list = new MapInfo(); MapItem item; var dlg1 = new FolderBrowserDialog(); dlg1.ShowDialog(); string path = dlg1.SelectedPath; for( int i = 0; i < size.X; i++ ) { for( int j = 0; j < size.Y; j++ ) { item = new MapItem();// i, j, txtDir.Text + "\\" + txtPrefix.Text + "_" + j + "_" + i ); list.Add( item ); g.Clear( Color.Transparent ); g.DrawImage(img, new Rectangle(-512 * i, -512 * j, img.Width, img.Height)); //output.Save( path + "\\" + txtPrefix.Text + "_" + j + "_" + i + ".png", ImageFormat.Png ); } } var xmlSerializer = new XmlSerializer( typeof( MapInfo ) ); Stream stream = new FileStream( path + "\\" + ".xml", FileMode.Create ); xmlSerializer.Serialize( stream, list ); stream.Close(); }
public void InitializeApiStart2(dynamic data) { string APIName = "api_start2"; if (data.api_data != null && data.api_result == 1) { data = data.api_data; } //特別置換処理 data.api_mst_stype[7].api_name = "巡洋戦艦"; ClearUpdated(); //api_mst_ship foreach (var elem in data.api_mst_ship) { int id = (int)elem.api_id; if (MasterShips[id] == null) { var ship = new ShipDataMaster(); ship.LoadFromResponse(APIName, elem); MasterShips.Add(ship); } else { MasterShips[id].LoadFromResponse(APIName, elem); } } //改装関連のデータ設定 foreach (var ship in MasterShips) { var remodelID = ship.Value.RemodelAfterShipID; if (remodelID != 0) { MasterShips[remodelID].RemodelBeforeShipID = ship.Key; } } //api_mst_shipgraph foreach (var elem in data.api_mst_shipgraph) { int id = (int)elem.api_id; ShipDataMaster ship = MasterShips[id]; if (ship != null) { ship.ResourceName = elem.api_filename; dynamic versions = elem.api_version; ship.ResourceGraphicVersion = versions[0]; ship.ResourceVoiceVersion = versions[1]; ship.ResourcePortVoiceVersion = versions[2]; } } //api_mst_slotitem_equiptype foreach (var elem in data.api_mst_slotitem_equiptype) { int id = (int)elem.api_id; if (EquipmentTypes[id] == null) { var eqt = new EquipmentType(); eqt.LoadFromResponse(APIName, elem); EquipmentTypes.Add(eqt); } else { EquipmentTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_stype foreach (var elem in data.api_mst_stype) { int id = (int)elem.api_id; if (ShipTypes[id] == null) { var spt = new ShipType(); spt.LoadFromResponse(APIName, elem); ShipTypes.Add(spt); } else { ShipTypes[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitem foreach (var elem in data.api_mst_slotitem) { int id = (int)elem.api_id; if (MasterEquipments[id] == null) { var eq = new EquipmentDataMaster(); eq.LoadFromResponse(APIName, elem); MasterEquipments.Add(eq); } else { MasterEquipments[id].LoadFromResponse(APIName, elem); } } //api_mst_slotitemgraph /* * foreach ( var elem in data.api_mst_slotitemgraph ) { * * int id = (int)elem.api_id; * EquipmentDataMaster eq = db.MasterEquipments[id]; * if ( eq != null ) { * eq.ResourceVersion = elem.api_version; * } * } */ //api_mst_useitem foreach (var elem in data.api_mst_useitem) { int id = (int)elem.api_id; if (MasterUseItems[id] == null) { var item = new UseItemMaster(); item.LoadFromResponse(APIName, elem); MasterUseItems.Add(item); } else { MasterUseItems[id].LoadFromResponse(APIName, elem); } } //api_mst_maparea foreach (var elem in data.api_mst_maparea) { int id = (int)elem.api_id; if (MapArea[id] == null) { var item = new MapAreaData(); item.LoadFromResponse(APIName, elem); MapArea.Add(item); } else { MapArea[id].LoadFromResponse(APIName, elem); } } //api_mst_mapinfo foreach (var elem in data.api_mst_mapinfo) { int id = (int)elem.api_id; if (MapInfo[id] == null) { var item = new MapInfoData(); item.LoadFromResponse(APIName, elem); MapInfo.Add(item); } else { MapInfo[id].LoadFromResponse(APIName, elem); } } //api_mst_mission foreach (var elem in data.api_mst_mission) { int id = (int)elem.api_id; if (Mission[id] == null) { var item = new MissionData(); item.LoadFromResponse(APIName, elem); Mission.Add(item); } else { Mission[id].LoadFromResponse(APIName, elem); } } //api_mst_shipupgrade Dictionary <int, int> upgradeLevels = new Dictionary <int, int>(); foreach (var elem in data.api_mst_shipupgrade) { int idbefore = (int)elem.api_current_ship_id; int idafter = (int)elem.api_id; var shipbefore = MasterShips[idbefore]; var shipafter = MasterShips[idafter]; int level = (int)elem.api_upgrade_level; if (upgradeLevels.ContainsKey(idafter)) { if (level < upgradeLevels[idafter]) { shipafter.RemodelBeforeShipID = idbefore; upgradeLevels[idafter] = level; } } else { shipafter.RemodelBeforeShipID = idbefore; upgradeLevels.Add(idafter, level); } if (shipbefore != null) { shipbefore.NeedBlueprint = (int)elem.api_drawing_count; shipbefore.NeedCatapult = (int)elem.api_catapult_count; } } }
private void SplitImage(string filePrefix, IList<Image> data, MapInfo list) { Image img = data[0]; list.X = (img.Width + 511) / 512; list.Y = (img.Height + 511) / 512; Bitmap output = new Bitmap(512, 512); Graphics g = Graphics.FromImage(output); MapItem item; Image image; var dlg1 = new FolderBrowserDialog(); dlg1.ShowDialog(); string path = dlg1.SelectedPath; list.LayerCount = data.Count; for (int i = 0; i < list.X; i++) { for (int j = 0; j < list.Y; j++) { item = new MapItem() {X = i, Y = j}; for (int k = 0; k < list.LayerCount; k++) { image = data[k]; g.Clear( Color.Transparent ); g.DrawImage( image, new Rectangle( -512 * i, -512 * j, img.Width, img.Height ) ); output.Save( path + "\\" + filePrefix + "_" + k + "_" + j + "_" + i + ".png", ImageFormat.Png ); item.List.Add( new MapItem.TextureInfo() {Layer = k, Texture = filePrefix + "_" + k + "_" + j + "_" + i} ); } list.Add(item); } } list.CollusionLayer = Convert.ToInt32( textBox2.Text ); FileStream fs = new FileStream( path + "\\" + filePrefix + ".xml", FileMode.Create ); StreamWriter writer = new StreamWriter( fs ); writer.Write( list.ToString() ); writer.Close(); fs.Close(); }