Пример #1
0
        public void initNewLevel(String filename)
        {
            _levelTileSelection = false;
            if (_levelTileSelection) {
                //temp code to satisfy warning...
            }

            _tilesetGrid = false;//at least for now...

            _fillTile = new OpenGraal.Common.Levels.GraalLevelTile[1, 1];
            _fillTile [0, 0] = new OpenGraal.Common.Levels.GraalLevelTile ();
            _fillTile [0, 0].SetTile (0);

            if (filename == null || filename == "null")
                _editLevel = new OpenGraal.LevelEditor.Level ();
            else
                _editLevel = new OpenGraal.LevelEditor.Level (filename);

            drawTileset();

            int levelWidth, levelHeight; _editLevel.getPixelSize(out levelWidth, out levelHeight);
            _levelRenderer = new OpenGraal.LevelEditor.TileRenderer(levelDrawPane, levelWidth, levelHeight);

            _editLevel.renderLevel(_levelRenderer);

            levelDrawPane.SetSizeRequest (levelWidth, levelHeight);

            _levelCache = levelDrawPane.Pixbuf;
        }
Пример #2
0
        protected void onTilesetRelease(object o, ButtonReleaseEventArgs args)
        {
            int offX, offY, cx, cy;
            GtkHelpFuncs.parentOffset (out offX, out offY, tilesetDrawPane);

            Widget w = (Widget)o;
            w.GetPointer (out cx, out cy);
            _editLevel.pixToTile (cx - offX, cy - offY, out cx, out cy);

            int tX, tY, tW, tH;
            tX = Math.Min (_dragX, cx);
            tY = Math.Min (_dragY, cy);
            tW = Math.Max(1,Math.Abs ((int)Math.Ceiling(_dragX - cx + 0.0)));
            tH = Math.Max(1,Math.Abs ((int)Math.Ceiling(_dragY - cy + 0.0)));

            GtkHelpFuncs.drawWidgetRect (
                tilesetDrawPane, _tilesetCache, offX, offY,
                tX * _editLevel._tileWidth, tY * _editLevel._tileHeight,
                tW * _editLevel._tileWidth, tH * _editLevel._tileHeight
            );

            _tileCluster = new OpenGraal.Common.Levels.GraalLevelTile[tW, tH];
            //determine the tile value based on tile coordinate found above
            for (int x = 0; x < tW; x++) {
                for (int y = 0; y < tH; y++){
                    _tileCluster [x, y] = new OpenGraal.Common.Levels.GraalLevelTile ();
                    _tileCluster[x,y].SetTile(_editLevel.getTilesetVal (tX + x, tY + y));
                }
            }
        }
Пример #3
0
        protected void onLevelRelease(object o, ButtonReleaseEventArgs args)
        {
            if (args.Event.Button != 1)//we're not interested in anything other than left button release
                return;

            if (_tileCluster != null) {
                _levelUpdateX = _levelUpdateY = _dragX = _dragY = -1;
                _tileCluster = null;
                drawTileset ();
            } else if (_dragX + _dragY > 0) {
                int offX, offY, cx, cy;
                GtkHelpFuncs.parentOffset (out offX, out offY, levelDrawPane);

                Widget w = (Widget)o;
                w.GetPointer (out cx, out cy);

                _editLevel.pixToTile (cx - offX, cy - offY, out cx, out cy);

                int tX, tY, tW, tH;
                tX = Math.Min (_dragX, cx);
                tY = Math.Min (_dragY, cy);
                tW = Math.Max(1,Math.Abs ((int)Math.Ceiling(_dragX - cx + 0.0)));
                tH = Math.Max(1,Math.Abs ((int)Math.Ceiling(_dragY - cy + 0.0)));

                GtkHelpFuncs.drawWidgetRect (
                    levelDrawPane, _levelCache, offX, offY,
                    tX * _editLevel._tileWidth, tY * _editLevel._tileHeight,
                    tW * _editLevel._tileWidth, tH * _editLevel._tileHeight
                );

                _tileCluster = new OpenGraal.Common.Levels.GraalLevelTile[tW, tH];
                //determine the tile value based on tile coordinate found above
                for (int x = 0; x < tW; x++) {
                    //if (x < 0 || x > _editLevel._mapWidth)
                        //continue;

                    for (int y = 0; y < tH; y++){
                        //if (y < 0 || y >= _editLevel._mapHeight)
                        //continue;

                        _tileCluster[x,y] = new OpenGraal.Common.Levels.GraalLevelTile();
                        _tileCluster [x, y].SetTile(_editLevel.getTile (0, tX + x, tY + y).GetIndex());
                    }
                }
            }
        }