Example #1
0
 //プロジェクトを読み込みしたときの処理
 private void LoadProject(MapInfoFromText mift, string path)
 {
     DXEX.TextureCache.AllTextureDelete();
     mcrm = mcrm.LoadProject(mift, path + @"\MapChip.png");
     sif.LoadProject(mcrm);
     mapEdit = mapEdit.LoadProject(mift, mapWritePanel, mcrm, sif, hScrollBar1, vScrollBar1);
 }
Example #2
0
        public MapChipResourceManager LoadProject(MapInfoFromText mift, string filePath)
        {
            var newMcrm = new MapChipResourceManager(mift.MapChipSize);

            newMcrm.LoadBitmapSheet(mift.LastId, filePath);
            return(newMcrm);
        }
Example #3
0
 public MapPalletScene(Panel panel, MapChipResourceManager mcrm, SelectMapChipScene sms) : base(panel)
 {
     mouseSwap        = new MouseSwap();
     this.mcrm        = mcrm;
     panel.MouseDown += MouseClickAction;
     panel.MouseMove += MouseDrag;
     this.sms         = sms;
     mapPalletData    = new MapPalletData();
     localPos.SetVect(0, 0);
     AddChild(new MapGrid(this, 40), 1);
 }
        //指定座標のマップチップを入れ替える
        public void SwapMapChip(int x1, int y1, int x2, int y2, MapChipResourceManager mcrm)
        {
            mcrm.SwapImageFile(mapChips[x1, y1].Id.value, mapChips[x2, y2].Id.value);
            var temp = mapChips[x1, y1].LocalPos;

            mapChips[x1, y1].LocalPos = mapChips[x2, y2].LocalPos;
            mapChips[x2, y2].LocalPos = temp;
            var tempChips = mapChips[x1, y1];

            mapChips[x1, y1] = mapChips[x2, y2];
            mapChips[x2, y2] = tempChips;
        }
Example #5
0
 //プロジェクトからマップチップパレットをロードする
 public void LoadProject(MapChipResourceManager mcrm)
 {
     this.mcrm = mcrm;
     mapPalletData.ClearMapChip();
     for (int id = 0; id <= mcrm.LastID(); id++)
     {
         MapChip mapChip = new MapChip(40);
         mapChip.SetTexture(mcrm.GetTexture(id));
         mapChip.SetId(mcrm.GetId(id));
         mapPalletData.AddMapChip(mapChip);
         AddChild(mapChip);
     }
 }
        //マップpalletにからマップチップを削除する
        public void RemoveMapChip(int x, int y, MapChipResourceManager mcrm)
        {
            mcrm.PopImageFile(mapChips[x, y].Id.value);
            mapChips[x, y].Dispose();
            int lastx = (index - 1) % 6;
            int lasty = (index - 1) / 6;

            if (x != lastx || y != lasty)
            {
                mapChips[lastx, lasty].LocalPos = mapChips[x, y].LocalPos;
                mapChips[x, y] = mapChips[lastx, lasty];
            }
            mapChips[lastx, lasty] = null;
            index--;
        }
Example #7
0
        //マップ全体をBitmapに変換する
        public Bitmap GetBitmap(MapChipResourceManager mcrm)
        {
            Bitmap   unitedImg = new Bitmap(mapData.MapChipSize * mapData.MapSizeX, mapData.MapChipSize * mapData.MapSizeY);
            Graphics g         = Graphics.FromImage(unitedImg);

            for (int countY = 0; countY < mapData.MapSizeY; ++countY)
            {
                for (int countX = 0; countX < mapData.MapSizeX; ++countX)
                {
                    Bitmap bitmap = mapData.List[countX, countY].GetBitmap(mcrm);
                    g.DrawImage(bitmap, mapData.MapChipSize * countX, mapData.MapChipSize * countY);
                }
            }
            return(unitedImg);
        }
 //Startで登録したマス座標にあるmapChipを任意のマス座標にあるmapChipと入れ替え
 public void Move(Point point, MapPalletData mapPalletData, MapChipResourceManager mcrm)
 {
     if (tempPoint2 == point)
     {
         return;
     }
     if (tempPoint == point)
     {
         mapPalletData.SwapMapChip(tempPoint2.X, tempPoint2.Y, tempPoint.X, tempPoint.Y, mcrm);
         tempPoint2 = point;
         return;
     }
     mapPalletData.SwapMapChip(point.X, point.Y, tempPoint2.X, tempPoint2.Y, mcrm);
     mapPalletData.SwapMapChip(tempPoint2.X, tempPoint2.Y, tempPoint.X, tempPoint.Y, mcrm);
     tempPoint2 = point;
 }
Example #9
0
        /* コンストラクタ */
        //  :イベントの設定(ドラッグ時とか)
        //  :マップのパレットと,選択中マップチップのやつ
        public SelectImageForm(MapChipResourceManager mcrm)
        {
            InitializeComponent();
            sms = new SelectMapChipScene(selectPicture);
            mps = new MapPalletScene(palletPanel, mcrm, sms);

            DXEX.DirectorForForm.AddSubScene(mps);
            DXEX.DirectorForForm.AddSubScene(sms);

            vScrollBar1.SmallChange = 40;
            vScrollBar1.LargeChange = 40;

            vScrollBar1.Scroll += (o, e)
                                  => vScrollBar1.Focus();

            vScrollBar1.Maximum = 50 * 40 - palletPanel.Size.Height;

            vScrollBar1.ValueChanged   +=
                (o, e) => mps.LocalPosY = -vScrollBar1.Value;
        }
Example #10
0
        //初期化
        public MapEditForm(int mapChipSize)
        {
            InitializeComponent();
            //DXEX初期化
            DXEX.DirectorForForm.init(this);
            DX.SetAlwaysRunFlag(DX.TRUE);

            //描画領域をセット
            //(見切れないように、画面いっぱいに設定する)
            DxLibDLL.DX.SetGraphMode(
                Screen.PrimaryScreen.Bounds.Width,
                Screen.PrimaryScreen.Bounds.Height,
                32
                );

            //DXライブラリの描画先の背景色を設定する
            DxLibDLL.DX.SetBackgroundColor(100, 240, 130);

            mcrm    = new MapChipResourceManager(mapChipSize);
            sif     = new SelectImageForm(mcrm);
            mapEdit = new MapEditControl(mapWritePanel, hScrollBar1, vScrollBar1, new Size(20, 20), mapChipSize);
            pm      = new ProjectManager();
            //メインウインドウのロードが終わったら、
            //パレッドウインドウを表示する。
            Load += (o, e) => sif.Show();

            //メインウインドウに終了命令が出たら
            //パレッドウインドウを速やかに閉じる
            FormClosing += (o, e) => sif.Dispose();


            //comboボックスのデフォルト値設定
            layerComboBox.SelectedIndex    = 0;
            drawModeComboBox.SelectedIndex = 0;

            //メインウインドウ表示
            Show();
            //DXライブラリループ開始
            DXEX.DirectorForForm.StartLoop(this);
        }
Example #11
0
        //テキストデータからmapData.listをロードする
        public void LoadFromText(MapInfoFromText mift, MapChipResourceManager mcrm)
        {
            int count = 0;

            for (int y = 0; y < mapData.MapSizeY; y++)
            {
                for (int x = 0; x < mapData.MapSizeX; x++)
                {
                    for (int layer = 0; layer < MapEditForm.maxLayer; layer++)
                    {
                        if (mift.Id[count] != -1)
                        {
                            mapData.List[x, y].mapChips[layer].SetTexture(mcrm.GetTexture(mift.Id[count]));
                            mapData.List[x, y].mapChips[layer].SetId(mcrm.GetId(mift.Id[count]));
                            mapData.List[x, y].mapChips[layer].Angle    = mift.Angle[count];
                            mapData.List[x, y].mapChips[layer].turnFlag = mift.Turn[count];
                        }
                        count++;
                    }
                }
            }
        }
        //Bitmapとして得る
        public Bitmap GetBitmap(MapChipResourceManager mcrm)
        {
            //返す用のBitmap
            Bitmap resultBitmap = new Bitmap(mapChipSize, mapChipSize);

            //重ねるBitmapを生成
            Bitmap[] bitmap = new Bitmap[MapEditForm.maxLayer];
            for (int i = 0; i < MapEditForm.maxLayer; i++)
            {
                if (mapChips[i].Id == null)
                {
                    bitmap[i] = new Bitmap(mapChipSize, mapChipSize);
                }
                else
                {
                    bitmap[i] = mcrm.GetBitmap(mapChips[i].Id.value);
                }
            }

            Graphics g = Graphics.FromImage(resultBitmap);

            //画像を扱うアルゴリズムを設定する
            g.PixelOffsetMode   = PixelOffsetMode.Half;
            g.InterpolationMode = InterpolationMode.NearestNeighbor;

            //リサイズ&回転&反転して画像をresultBitmapに重ねる
            for (int i = 0; i < MapEditForm.maxLayer; i++)
            {
                bitmap[i].RotateFlip((RotateFlipType)((int)mapChips[i].Angle / 90));
                if (mapChips[i].turnFlag == DX.TRUE)
                {
                    bitmap[i].RotateFlip(RotateFlipType.RotateNoneFlipX);
                }
                g.DrawImage(bitmap[i], 0, 0);
            }
            return(resultBitmap);
        }
 //自殺してからprivateの方のコンストラクタ呼んで再び復活するだけのクソコード
 public MapEditControl LoadProject(MapInfoFromText mift, Panel mwp, MapChipResourceManager mcrm, SelectImageForm sif, HScrollBar hScroll, VScrollBar vScroll)
 {
     this.Dispose();
     return(new MapEditControl(mift, mwp, mcrm, hScroll, vScroll));
 }
 //miftの情報からmwsのmapData.listを構築する
 private MapEditControl(MapInfoFromText mift, Panel mwp, MapChipResourceManager mcrm, HScrollBar hScroll, VScrollBar vScroll) :
     this(mwp, hScroll, vScroll, mift.MapSize, mift.MapChipSize)
 {
     MapDataControl.LoadMapDataList.LoadFromText(mift, mcrm);
 }
Example #15
0
 public void LoadProject(MapChipResourceManager mcrm)
 {
     mps.LoadProject(mcrm);
     sms.resetMapChip();
 }