Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
    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);
        }
    }
Exemple #3
0
 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();
 }
Exemple #4
0
        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;
                }
            }
        }
Exemple #5
0
 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();
 }