Ejemplo n.º 1
0
void WldScene::setLineDrawer()
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    QPen pen;

    pen = QPen(Qt::transparent, 2);

    cursor = addLine(0,0,1,1, pen);

    //set data flags
    foreach(dataFlag_w flag, WldPlacingItems::flags)
        cursor->setData(flag.first, flag.second);

    cursor->setData(0, "Line");
    cursor->setData(25, "CURSOR");
    cursor->setZValue(7000);
    cursor->setOpacity( 0.5 );
    cursor->setVisible(false);
    cursor->setEnabled(true);

    SwitchEditingMode(MODE_Line);

}
Ejemplo n.º 2
0
void WldScene::setSquareDrawer()
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    QPen pen;
    QBrush brush;


    pen = QPen(Qt::gray, 2);
    brush = QBrush(Qt::darkGray);

    cursor = addRect(0,0,1,1, pen, brush);

    //set data flags
    foreach(dataFlag_w flag, WldPlacingItems::flags)
        cursor->setData(flag.first, flag.second);

    cursor->setData(0, "Square");
    cursor->setData(25, "CURSOR");
    cursor->setZValue(7000);
    cursor->setOpacity( 0.5 );
    cursor->setVisible(false);
    cursor->setEnabled(true);

    SwitchEditingMode(MODE_DrawSquare);
}
Ejemplo n.º 3
0
void LvlScene::setSectionResizer(bool enabled, bool accept)
{
    if((enabled)&&(pResizer==NULL))
    {
        MainWinConnect::pMainWin->on_actionSelect_triggered(); //Reset mode

        int x = LvlData->sections[LvlData->CurSection].size_left;
        int y = LvlData->sections[LvlData->CurSection].size_top;
        int w = LvlData->sections[LvlData->CurSection].size_right;
        int h = LvlData->sections[LvlData->CurSection].size_bottom;

        pResizer = new ItemResizer( QSize((long)fabs(x-w), (long)fabs(y-h)), Qt::green, 32 );
        this->addItem(pResizer);
        pResizer->setPos(x, y);
        pResizer->type=0;
        pResizer->_minSize = QSizeF(800, 600);
        this->setFocus(Qt::ActiveWindowFocusReason);
        //DrawMode=true;
        SwitchEditingMode(MODE_Resizing);
        MainWinConnect::pMainWin->resizeToolbarVisible(true);
    }
    else
    {
        if(pResizer!=NULL)
        {
            if(accept)
            {
                #ifdef _DEBUG_
                WriteToLog(QtDebugMsg, QString("SECTION RESIZE -> to %1 x %2").arg(pResizer->_width).arg(pResizer->_height));
                #endif
                long l = pResizer->pos().x();
                long t = pResizer->pos().y();
                long r = l+pResizer->_width;
                long b = t+pResizer->_height;
                long oldL = LvlData->sections[LvlData->CurSection].size_left;
                long oldR = LvlData->sections[LvlData->CurSection].size_right;
                long oldT = LvlData->sections[LvlData->CurSection].size_top;
                long oldB = LvlData->sections[LvlData->CurSection].size_bottom;
                LvlData->sections[LvlData->CurSection].size_left = l;
                LvlData->sections[LvlData->CurSection].size_right = r;
                LvlData->sections[LvlData->CurSection].size_top = t;
                LvlData->sections[LvlData->CurSection].size_bottom = b;

                addResizeSectionHistory(LvlData->CurSection, oldL, oldT, oldR, oldB, l, t, r, b);

                ChangeSectionBG(LvlData->sections[LvlData->CurSection].background);
                drawSpace();
                LvlData->modified = true;
            }
            delete pResizer;
            pResizer = NULL;
            MainWinConnect::pMainWin->on_actionSelect_triggered();
            MainWinConnect::pMainWin->resizeToolbarVisible(false);
            //resetResizingSection=true;
        }
        DrawMode=false;
    }
}
Ejemplo n.º 4
0
void LvlScene::setCircleDrawer()
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    QPen pen;
    QBrush brush;

    switch(placingItem)
    {
    case PLC_Block:
    case PLC_BGO:
    default:
        pen = QPen(Qt::gray, 2);
        brush = QBrush(Qt::darkGray);
        break;
    }

    //Align width and height to fit into item aligning
    long addW=LvlPlacingItems::gridSz-LvlPlacingItems::itemW%LvlPlacingItems::gridSz;
    long addH=LvlPlacingItems::gridSz-LvlPlacingItems::itemH%LvlPlacingItems::gridSz;
    if(addW==LvlPlacingItems::gridSz) addW=0;
    if(addH==LvlPlacingItems::gridSz) addH=0;
    LvlPlacingItems::itemW = LvlPlacingItems::itemW+addW;
    LvlPlacingItems::itemH = LvlPlacingItems::itemH+addH;

    if((placingItem != PLC_Water) && (!LvlPlacingItems::sizableBlock))
    {
        QPixmap oneCell(LvlPlacingItems::itemW, LvlPlacingItems::itemH);
        oneCell.fill(QColor(0xFF, 0xFF, 0x00, 128));
        QPainter p(&oneCell);
        p.setBrush(Qt::NoBrush);
        p.setPen(QPen(Qt::yellow, 2, Qt::SolidLine));
        p.drawRect(0,0, LvlPlacingItems::itemW, LvlPlacingItems::itemH);
        brush.setTexture(oneCell);
    }

    cursor = addEllipse(0,0,1,1, pen, brush);

    //set data flags
    foreach(dataFlag flag, LvlPlacingItems::flags)
        cursor->setData(flag.first, flag.second);

    cursor->setData(ITEM_TYPE, "Circle");

    cursor->setData(ITEM_IS_CURSOR, "CURSOR");
    cursor->setZValue(7000);
    cursor->setOpacity( 0.5 );
    cursor->setVisible(false);
    cursor->setEnabled(true);

    SwitchEditingMode(MODE_DrawCircle);
    DrawMode=true;
}
Ejemplo n.º 5
0
void LvlScene::setScreenshotSelector(bool enabled, bool accept)
{
    bool do_signal=false;
    if((enabled)&&(pResizer==NULL))
    {
        MainWinConnect::pMainWin->on_actionSelect_triggered(); //Reset mode

        pResizer = new ItemResizer( QSize(captutedSize.width(), captutedSize.height()), Qt::yellow, 2 );
        this->addItem(pResizer);
        pResizer->setPos(captutedSize.x(), captutedSize.y());
        pResizer->type=4;
        pResizer->_minSize = QSizeF(320, 200);
        this->setFocus(Qt::ActiveWindowFocusReason);
        //DrawMode=true;
        //MainWinConnect::pMainWin->activeLvlEditWin()->changeCursor(WorldEdit::MODE_Resizing);
        SwitchEditingMode(MODE_Resizing);
        MainWinConnect::pMainWin->resizeToolbarVisible(true);
    }
    else
    {
        if(pResizer!=NULL)
        {
            if(accept)
            {
#ifdef _DEBUG_
                WriteToLog(QtDebugMsg, QString("SCREENSHOT SELECTION ZONE -> to %1 x %2").arg(pResizer->_width).arg(pResizer->_height));
#endif

                captutedSize = QRectF( pResizer->pos().x(),
                                       pResizer->pos().y(),
                                       pResizer->_width,
                                       pResizer->_height);
                do_signal=true;
            }
            delete pResizer;
            pResizer = NULL;
            MainWinConnect::pMainWin->on_actionSelect_triggered();
            MainWinConnect::pMainWin->resizeToolbarVisible(false);
            //resetResizingSection=true;
        }
        DrawMode=false;
    }
    isFullSection=false;

    if(do_signal) emit screenshotSizeCaptured();
}
Ejemplo n.º 6
0
void LvlScene::setLineDrawer()
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    QPen pen;

    switch(placingItem)
    {
    case PLC_Block:
    case PLC_BGO:
    case PLC_NPC:
    default:
        pen = QPen(Qt::transparent, 2);
        break;
    }

    //Align width and height to fit into item aligning
    long addW=LvlPlacingItems::gridSz-LvlPlacingItems::itemW%LvlPlacingItems::gridSz;
    long addH=LvlPlacingItems::gridSz-LvlPlacingItems::itemH%LvlPlacingItems::gridSz;
    if(addW==LvlPlacingItems::gridSz) addW=0;
    if(addH==LvlPlacingItems::gridSz) addH=0;
    LvlPlacingItems::itemW = LvlPlacingItems::itemW+addW;
    LvlPlacingItems::itemH = LvlPlacingItems::itemH+addH;

    cursor = addLine(0,0,1,1, pen);

    //set data flags
    foreach(dataFlag flag, LvlPlacingItems::flags)
        cursor->setData(flag.first, flag.second);

    cursor->setData(ITEM_TYPE, "LineDrawer");

    cursor->setData(ITEM_IS_CURSOR, "CURSOR");
    cursor->setZValue(7000);
    cursor->setOpacity( 0.5 );
    cursor->setVisible(false);
    cursor->setEnabled(true);

    SwitchEditingMode(MODE_Line);
}
Ejemplo n.º 7
0
void LvlScene::setBlockResizer(QGraphicsItem * targetBlock, bool enabled, bool accept)
{
    if((enabled)&&(pResizer==NULL))
    {
        MainWinConnect::pMainWin->on_actionSelect_triggered(); //Reset mode

        int x = ((ItemBlock *)targetBlock)->blockData.x;
        int y = ((ItemBlock *)targetBlock)->blockData.y;
        int w = ((ItemBlock *)targetBlock)->blockData.w;
        int h = ((ItemBlock *)targetBlock)->blockData.h;

        pResizer = new ItemResizer( QSize(w, h), Qt::blue, 32 );
        this->addItem(pResizer);
        pResizer->setPos(x, y);
        pResizer->type=2;
        pResizer->targetItem = targetBlock;
        pResizer->_minSize = QSizeF(64, 64);
        this->setFocus(Qt::ActiveWindowFocusReason);
        //DrawMode=true;
        //MainWinConnect::pMainWin->activeLvlEditWin()->changeCursor(leveledit::MODE_Resizing);
        SwitchEditingMode(MODE_Resizing);
        MainWinConnect::pMainWin->resizeToolbarVisible(true);
    }
    else
    {
        if(pResizer!=NULL)
        {
            if(accept)
            {
                #ifdef _DEBUG_
                WriteToLog(QtDebugMsg, QString("BLOCK RESIZE -> to %1 x %2").arg(pResizer->_width).arg(pResizer->_height));
                #endif
                long x = pResizer->pos().x();
                long y = pResizer->pos().y();
                long w = pResizer->_width;
                long h = pResizer->_height;
                long oldX = ((ItemBlock *)pResizer->targetItem)->blockData.x;
                long oldY = ((ItemBlock *)pResizer->targetItem)->blockData.y;
                long oldW = ((ItemBlock *)pResizer->targetItem)->blockData.w;
                long oldH = ((ItemBlock *)pResizer->targetItem)->blockData.h;
                ((ItemBlock *)pResizer->targetItem)->blockData.x = x;
                ((ItemBlock *)pResizer->targetItem)->blockData.y = y;
                ((ItemBlock *)pResizer->targetItem)->blockData.w = w;
                ((ItemBlock *)pResizer->targetItem)->blockData.h = h;

                ((ItemBlock *)pResizer->targetItem)->setBlockSize( QRect(x,y,w,h) );
                LvlData->modified = true;

                addResizeBlockHistory(((ItemBlock *)pResizer->targetItem)->blockData, oldX, oldY, oldX+oldW, oldY+oldH, x, y, x+w, y+h);

                //ChangeSectionBG(LvlData->sections[LvlData->CurSection].background);
                //drawSpace();
            }
            delete pResizer;
            pResizer = NULL;
            MainWinConnect::pMainWin->on_actionSelect_triggered();
            MainWinConnect::pMainWin->resizeToolbarVisible(false);
            //resetResizingSection=true;
        }
        DrawMode=false;
    }
}
Ejemplo n.º 8
0
void WldScene::setFloodFiller()
{
    SwitchEditingMode(MODE_Fill);
}
Ejemplo n.º 9
0
void WldScene::setItemPlacer(int itemType, unsigned long itemID)
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    WriteToLog(QtDebugMsg, QString("ItemPlacer -> set to type-%1 for ID-%2").arg(itemType).arg(itemID));

    switch(itemType)
    {
    case 0: //Tiles
    {
        int j;
        bool noimage=true, found=false;
        bool isUser=false;

        noimage=true;
        isUser=false;

        //Check Index exists
        if(itemID < (unsigned int)index_tiles.size())
        {
            j = index_tiles[itemID].i;

            if(j<pConfigs->main_wtiles.size())
            {
                if(pConfigs->main_wtiles[j].id == itemID)
                    found=true;
            }
        }

        //if Index found
        if(found)
        {   //get neccesary element directly
            isUser=true;
            noimage=false;
            tImg = animates_Tiles[index_tiles[itemID].ai]->wholeImage();
        }
        else
        {
            //fetching arrays
            for(j=0;j<uTiles.size();j++)
            {
                if(uTiles[j].id==itemID)
                {
                    isUser=true;
                    noimage=false;
                    tImg = uTiles[j].image;
                    break;
                }
            }

            j=pConfigs->getTileI(itemID);
            if(j>=0)
            {
                noimage=false;
                if(!isUser)
                tImg = pConfigs->main_wtiles[j].image;
            }
        }

        if((noimage)||(tImg.isNull()))
        {
            tImg=uTileImg;
        }

        WldPlacingItems::gridSz=pConfigs->default_grid;
        WldPlacingItems::gridOffset = QPoint(0, 0);

        WldPlacingItems::TileSet.id = itemID;


        long w = tImg.width();
        long h = tImg.height()/( (pConfigs->main_wtiles[j].animated)?pConfigs->main_wtiles[j].frames:1);

        WldPlacingItems::itemW = w;
        WldPlacingItems::itemH = h;


        WldPlacingItems::flags.clear();
        QPair<int, QVariant > flag;

            flag.first=0;
            flag.second="TILE";
        WldPlacingItems::flags.push_back(flag);

            flag.first=1;
            flag.second=QString::number(itemID);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 9;
            flag.second = QString::number(w);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 10;
            flag.second = QString::number(h);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 25;
            flag.second = "CURSOR";
        WldPlacingItems::flags.push_back(flag);

        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Square)
        {
            setSquareDrawer(); return;
        }

        WldPlacingItems::c_offset_x= qRound(qreal(w) / 2);
        WldPlacingItems::c_offset_y= qRound(qreal(h) / 2);

        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Line)
        {
            setLineDrawer(); return;
        }

        cursor = addPixmap(tImg.copy(0,h*pConfigs->main_wtiles[j].display_frame,w,h));

        //set data flags
        foreach(dataFlag_w flag, WldPlacingItems::flags)
            cursor->setData(flag.first, flag.second);

        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        placingItem=PLC_Tile;
        WldPlacingItems::TileSet.id = itemID;

        //flood fill uses 'item' cursor
        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_FloodFill)
        {
            setFloodFiller(); return;
        }

        SwitchEditingMode(MODE_PlacingNew);

        break;
    }
    case 1: //Sceneries
    {
        int j;
        bool noimage=true, found=false;
        bool isUser=false;

        noimage=true;
        isUser=false;

        //Check Index exists
        if(itemID < (unsigned int)index_scenes.size())
        {
            j = index_scenes[itemID].i;

            if(j<pConfigs->main_wscene.size())
            {
                if(pConfigs->main_wscene[j].id == itemID)
                    found=true;
            }
        }

        //if Index found
        if(found)
        {   //get neccesary element directly
            isUser=true;
            noimage=false;
            tImg = animates_Scenery[index_scenes[itemID].ai]->wholeImage();
        }
        else
        {
            //fetching arrays
            for(j=0;j<uScenes.size();j++)
            {
                if(uScenes[j].id==itemID)
                {
                    isUser=true;
                    noimage=false;
                    tImg = uScenes[j].image;
                    break;
                }
            }

            j=pConfigs->getSceneI(itemID);
            if(j>=0)
            {
                noimage=false;
                if(!isUser)
                tImg = pConfigs->main_wscene[j].image;
            }
        }

        if((noimage)||(tImg.isNull()))
        {
            tImg=uSceneImg;
        }


        WldPlacingItems::gridSz=qRound(qreal(pConfigs->default_grid)/2);
        WldPlacingItems::gridOffset = QPoint(0, 0);

        WldPlacingItems::SceneSet.id = itemID;

        long w = WldPlacingItems::gridSz;
        long h = WldPlacingItems::gridSz;

        WldPlacingItems::itemW = w;
        WldPlacingItems::itemH = h;

        long iw = tImg.width();
        long ih = tImg.height()/( (pConfigs->main_wscene[j].animated)?pConfigs->main_wscene[j].frames:1);

        WldPlacingItems::flags.clear();
        QPair<int, QVariant > flag;

            flag.first=0;
            flag.second="SCENERY";
        WldPlacingItems::flags.push_back(flag);

            flag.first=1;
            flag.second=QString::number(itemID);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 9;
            flag.second = QString::number(w);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 10;
            flag.second = QString::number(h);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 25;
            flag.second = "CURSOR";
        WldPlacingItems::flags.push_back(flag);


        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Square)
        {
            setSquareDrawer(); return;
        }

        WldPlacingItems::c_offset_x= qRound(qreal(w) / 2);
        WldPlacingItems::c_offset_y= qRound(qreal(h) / 2);

        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Line)
        {
            setLineDrawer(); return;
        }

        cursor = addPixmap(tImg.copy(0,ih * pConfigs->main_wscene[j].display_frame ,iw,ih));

        //set data flags
        foreach(dataFlag_w flag, WldPlacingItems::flags)
            cursor->setData(flag.first, flag.second);

        cursor->setData(25, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        placingItem=PLC_Scene;
        WldPlacingItems::SceneSet.id = itemID;

        //flood fill uses 'item' cursor
        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_FloodFill)
        {
            setFloodFiller(); return;
        }

        SwitchEditingMode(MODE_PlacingNew);

        break;
    }
    case 2: //Path
    {
        int j;
        bool noimage=true, found=false;
        bool isUser=false;

        noimage=true;
        isUser=false;

        //Check Index exists
        if(itemID < (unsigned int)index_paths.size())
        {
            j = index_paths[itemID].i;

            if(j<pConfigs->main_wpaths.size())
            {
                if(pConfigs->main_wpaths[j].id == itemID)
                    found=true;
            }
        }

        //if Index found
        if(found)
        {   //get neccesary element directly
            isUser=true;
            noimage=false;
            tImg = animates_Paths[index_paths[itemID].ai]->wholeImage();
        }
        else
        {
            //fetching arrays
            for(j=0;j<uPaths.size();j++)
            {
                if(uPaths[j].id==itemID)
                {
                    isUser=true;
                    noimage=false;
                    tImg = uPaths[j].image;
                    break;
                }
            }

            j=pConfigs->getBgoI(itemID);
            if(j>=0)
            {
                noimage=false;
                if(!isUser)
                tImg = pConfigs->main_wpaths[j].image;
            }
        }

        if((noimage)||(tImg.isNull()))
        {
            tImg=uPathImg;
        }


        WldPlacingItems::gridSz=pConfigs->default_grid;
        WldPlacingItems::gridOffset = QPoint(0, 0);

        WldPlacingItems::PathSet.id = itemID;


        long w = tImg.width();
        long h = tImg.height()/( (pConfigs->main_wpaths[j].animated)?pConfigs->main_wpaths[j].frames:1);

        WldPlacingItems::itemW = w;
        WldPlacingItems::itemH = h;

        WldPlacingItems::flags.clear();
        QPair<int, QVariant > flag;

            flag.first=0;
            flag.second="PATH";
        WldPlacingItems::flags.push_back(flag);

            flag.first=1;
            flag.second=QString::number(itemID);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 9;
            flag.second = QString::number(w);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 10;
            flag.second = QString::number(h);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 25;
            flag.second = "CURSOR";
        WldPlacingItems::flags.push_back(flag);

        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Square)
        {
            setSquareDrawer(); return;
        }

        WldPlacingItems::c_offset_x= qRound(qreal(w) / 2);
        WldPlacingItems::c_offset_y= qRound(qreal(h) / 2);

        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Line)
        {
            setLineDrawer(); return;
        }

        cursor = addPixmap(tImg.copy(0,h * pConfigs->main_wpaths[j].display_frame, w ,h));

        //set data flags
        foreach(dataFlag_w flag, WldPlacingItems::flags)
            cursor->setData(flag.first, flag.second);

        cursor->setData(25, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        placingItem=PLC_Path;
        WldPlacingItems::PathSet.id = itemID;

        //flood fill uses 'item' cursor
        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_FloodFill)
        {
            setFloodFiller(); return;
        }

        SwitchEditingMode(MODE_PlacingNew);

        break;
    }

    case 3: //Level
    {
        int j;
        bool noimage=true, found=false;
        bool isUser=false;

        noimage=true;
        isUser=false;

        //Check Index exists
        if(itemID < (unsigned int)index_levels.size())
        {
            j = index_levels[itemID].i;

            if(j<pConfigs->main_wlevels.size())
            {
                if(pConfigs->main_wlevels[j].id == itemID)
                    found=true;
            }
        }

        //if Index found
        if(found)
        {   //get neccesary element directly
            isUser=true;
            noimage=false;
            tImg = animates_Levels[index_levels[itemID].ai]->wholeImage();
        }
        else
        {
            //fetching arrays
            for(j=0;j<uLevels.size();j++)
            {
                if(uLevels[j].id==itemID)
                {
                    isUser=true;
                    noimage=false;
                    tImg = uLevels[j].image;
                    break;
                }
            }

            j=pConfigs->getWLevelI(itemID);
            if(j>=0)
            {
                noimage=false;
                if(!isUser)
                tImg = pConfigs->main_wlevels[j].image;
            }
        }

        if((noimage)||(tImg.isNull()))
        {
            tImg=uLevelImg;
        }


        WldPlacingItems::gridSz=pConfigs->default_grid;
        WldPlacingItems::gridOffset = QPoint(0, 0);

        WldPlacingItems::LevelSet.id = itemID;


        long w = WldPlacingItems::gridSz;
        long h = WldPlacingItems::gridSz;

        long iw = tImg.width();
        long ih = tImg.height()/( (pConfigs->main_wlevels[j].animated)?pConfigs->main_wlevels[j].frames:1);

        WldPlacingItems::itemW = w;
        WldPlacingItems::itemH = h;

        WldPlacingItems::flags.clear();
        QPair<int, QVariant > flag;

            flag.first=0;
            flag.second="LEVEL";
        WldPlacingItems::flags.push_back(flag);

            flag.first=1;
            flag.second=QString::number(itemID);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 9;
            flag.second = QString::number(w);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 10;
            flag.second = QString::number(h);
        WldPlacingItems::flags.push_back(flag);

            flag.first = 25;
            flag.second = "CURSOR";
        WldPlacingItems::flags.push_back(flag);


        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Square)
        {
            setSquareDrawer(); return;
        }

        WldPlacingItems::c_offset_x= qRound(qreal(w) / 2);
        WldPlacingItems::c_offset_y= qRound(qreal(h) / 2);

        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_Line)
        {
            setLineDrawer(); return;
        }

        cursor = addPixmap(tImg.copy(0, ih * pConfigs->main_wlevels[j].display_frame ,iw,ih));

        int imgOffsetX = (int)qRound( -( qreal(tImg.width()) - qreal(WldPlacingItems::gridSz))  / 2 );
        int imgOffsetY = (int)qRound( -qreal(
                  tImg.height()/( (pConfigs->main_wlevels[j].animated)?pConfigs->main_wlevels[j].frames:1))
                  + WldPlacingItems::gridSz);

        ((QGraphicsPixmapItem*)cursor)->setOffset(imgOffsetX, imgOffsetY );

        //set data flags
        foreach(dataFlag_w flag, WldPlacingItems::flags)
            cursor->setData(flag.first, flag.second);

        cursor->setData(25, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        placingItem=PLC_Level;
        WldPlacingItems::LevelSet.id = itemID;

        //flood fill uses 'item' cursor
        if(WldPlacingItems::placingMode==WldPlacingItems::PMODE_FloodFill)
        {
            setFloodFiller(); return;
        }

        SwitchEditingMode(MODE_PlacingNew);

        break;
    }

    case 4: //MusicBox
        placingItem=PLC_Musicbox;
        WldPlacingItems::MusicSet.id = itemID;

        WldPlacingItems::gridSz=32;
        WldPlacingItems::gridOffset = QPoint(0,0);

        WldPlacingItems::c_offset_x = 16;
        WldPlacingItems::c_offset_y = 16;

        cursor = addRect(0,0, 32, 32);
        cursor->setData(0, "MUSICBOX");
        cursor->setData(1, QString::number(itemID));
        cursor->setData(9, QString::number(32));
        cursor->setData(10, QString::number(32));
        ((QGraphicsRectItem *)cursor)->setBrush(QBrush(Qt::yellow));
        ((QGraphicsRectItem *)cursor)->setPen(QPen(Qt::yellow, 2,Qt::SolidLine));
        cursor->setData(25, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        SwitchEditingMode(MODE_PlacingNew);

        break;
    case 5: //Get point from a world map
        placingItem=MODE_SetPoint;
        WldPlacingItems::MusicSet.id = itemID;

        WldPlacingItems::gridSz=32;
        WldPlacingItems::gridOffset = QPoint(0,0);

        WldPlacingItems::c_offset_x = 16;
        WldPlacingItems::c_offset_y = 16;

        cursor = addRect(0,0, 32, 32);
        cursor->setData(0, "WorldMapPoint");
        cursor->setData(1, QString::number(itemID));
        cursor->setData(9, QString::number(32));
        cursor->setData(10, QString::number(32));
        ((QGraphicsRectItem *)cursor)->setBrush(QBrush(Qt::yellow));
        ((QGraphicsRectItem *)cursor)->setPen(QPen(Qt::yellow, 2,Qt::SolidLine));
        cursor->setData(25, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        SwitchEditingMode(MODE_SetPoint);

        // restore last point
        if(!selectedPointNotUsed) setPoint(selectedPoint);

        break;
        default: break;
    }
    if(itemType!=5) SwitchEditingMode(MODE_PlacingNew);
    contextMenuOpened=false;
}
Ejemplo n.º 10
0
void LvlScene::setPhysEnvResizer(QGraphicsItem * targetRect, bool enabled, bool accept)
{
    if( (enabled) && (m_resizeBox==nullptr) )
    {
        m_mw->on_actionSelect_triggered(); //Reset mode

        int x = ((ItemPhysEnv *)targetRect)->m_data.x;
        int y = ((ItemPhysEnv *)targetRect)->m_data.y;
        int w = ((ItemPhysEnv *)targetRect)->m_data.w;
        int h = ((ItemPhysEnv *)targetRect)->m_data.h;

        m_resizeBox = new ItemResizer( QSize(w, h), Qt::darkYellow, 16 );
        this->addItem(m_resizeBox);
        m_resizeBox->setPos(x, y);
        m_resizeBox->type=3;
        m_resizeBox->targetItem = targetRect;
        m_resizeBox->_minSize = QSizeF(16, 16);
        this->setFocus(Qt::ActiveWindowFocusReason);
        //DrawMode=true;
        //MainWinConnect::pMainWin->activeLvlEditWin()->changeCursor(leveledit::MODE_Resizing);
        SwitchEditingMode(MODE_Resizing);
        m_mw->resizeToolbarVisible(true);
    }
    else
    {
        if( m_resizeBox != nullptr )
        {
            if(accept)
            {
                #ifdef _DEBUG_
                WriteToLog(QtDebugMsg, QString("Water RESIZE -> to %1 x %2").arg(pResizer->_width).arg(pResizer->_height));
                #endif
                long x = m_resizeBox->pos().x();
                long y = m_resizeBox->pos().y();
                long w = m_resizeBox->_width;
                long h = m_resizeBox->_height;
                long oldX = ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.x;
                long oldY = ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.y;
                long oldW = ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.w;
                long oldH = ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.h;
                ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.x = x;
                ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.y = y;
                ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.w = w;
                ((ItemPhysEnv *)m_resizeBox->targetItem)->m_data.h = h;

                ((ItemPhysEnv *)m_resizeBox->targetItem)->setRectSize( QRect(x,y,w,h) );
                m_data->meta.modified = true;

                m_history->addResizePhysEnv(((ItemPhysEnv *)m_resizeBox->targetItem)->m_data, oldX, oldY, oldX+oldW, oldY+oldH, x, y, x+w, y+h);

                //ChangeSectionBG(LvlData->sections[LvlData->CurSection].background);
                //drawSpace();
            }
            delete m_resizeBox;
            m_resizeBox = nullptr;
            m_mw->on_actionSelect_triggered();
            m_mw->resizeToolbarVisible(false);
            //resetResizingSection=true;
        }
        m_busyMode=false;
    }
}
void LvlScene::setEventSctSizeResizer(long event, bool enabled, bool accept)
{
    if(event >= 0)
        eventID = event;

    if( (enabled) && (m_resizeBox==nullptr) )
    {
        m_mw->on_actionSelect_triggered(); //Reset mode

        int x = m_data->events[eventID].sets[m_data->CurSection].position_left;
        int y = m_data->events[eventID].sets[m_data->CurSection].position_top;
        int w = m_data->events[eventID].sets[m_data->CurSection].position_right;
        int h = m_data->events[eventID].sets[m_data->CurSection].position_bottom;

        m_resizeBox = new ItemResizer( QSize(abs(x-w), abs(y-h)), Qt::yellow, 32 );
        this->addItem(m_resizeBox);
        m_resizeBox->setPos(x, y);
        m_resizeBox->type=1;
        m_resizeBox->_minSize = QSizeF(800, 600);
        this->setFocus(Qt::ActiveWindowFocusReason);
        //DrawMode=true;
        //MainWinConnect::pMainWin->activeLvlEditWin()->changeCursor(leveledit::MODE_Resizing);
        SwitchEditingMode(MODE_Resizing);
        m_mw->resizeToolbarVisible(true);
    }
    else
    {
        if(m_resizeBox != nullptr)
        {
            if(accept)
            {
                #ifdef _DEBUG_
                WriteToLog(QtDebugMsg, QString("SECTION RESIZE -> to %1 x %2").arg(pResizer->_width).arg(pResizer->_height));
                #endif
                long l = m_resizeBox->pos().x();
                long t = m_resizeBox->pos().y();
                long r = l + m_resizeBox->_width;
                long b = t + m_resizeBox->_height;
                //long oldL = LvlData->events[eventID].sets[LvlData->CurSection].position_left;
                //long oldR = LvlData->events[eventID].sets[LvlData->CurSection].position_right;
                //long oldT = LvlData->events[eventID].sets[LvlData->CurSection].position_top;
                //long oldB = LvlData->events[eventID].sets[LvlData->CurSection].position_bottom;
                QList<QVariant> sizeData;
                sizeData.push_back((qlonglong)m_data->CurSection);
                sizeData.push_back((qlonglong)m_data->events[eventID].sets[m_data->CurSection].position_top);
                sizeData.push_back((qlonglong)m_data->events[eventID].sets[m_data->CurSection].position_right);
                sizeData.push_back((qlonglong)m_data->events[eventID].sets[m_data->CurSection].position_bottom);
                sizeData.push_back((qlonglong)m_data->events[eventID].sets[m_data->CurSection].position_left);
                sizeData.push_back((qlonglong)t);
                sizeData.push_back((qlonglong)r);
                sizeData.push_back((qlonglong)b);
                sizeData.push_back((qlonglong)l);
                m_history->addChangeEventSettings(m_data->events[eventID].meta.array_id, HistorySettings::SETTING_EV_SECSIZE, QVariant(sizeData));

                m_data->events[eventID].sets[m_data->CurSection].position_left = l;
                m_data->events[eventID].sets[m_data->CurSection].position_right = r;
                m_data->events[eventID].sets[m_data->CurSection].position_top = t;
                m_data->events[eventID].sets[m_data->CurSection].position_bottom = b;

                //addResizeSectionHistory(LvlData->CurSection, oldL, oldT, oldR, oldB, l, t, r, b);

                //ChangeSectionBG(LvlData->sections[LvlData->CurSection].background);
                //drawSpace();
                m_data->meta.modified = true;
                m_mw->dock_LvlEvents->eventSectionSettingsSync();
            }
            delete m_resizeBox;
            m_resizeBox = NULL;
            m_mw->on_actionSelect_triggered();
            m_mw->resizeToolbarVisible(false);
        }
        m_busyMode=false;
    }
}
Ejemplo n.º 12
0
void LvlScene::setItemPlacer(int itemType, unsigned long itemID, int dType)
{
    if(cursor)
        {delete cursor;
        cursor=NULL;}

    LogDebug(QString("ItemPlacer -> set to type-%1 for ID-%2").arg(itemType).arg(itemID));

    LvlPlacingItems::sizableBlock=false;

    switch(itemType)
    {
    case 0: //blocks
        {
            obj_block &blockC = uBlocks[itemID];
            Items::getItemGFX(&blockC, tImg, false);
            if(tImg.isNull())
            {
                tImg = uBlockImg;
            }
            if(!blockC.isValid)
            {
                blockC = pConfigs->main_block[1];
                blockC.image = uBlockImg;
            }

            LvlPlacingItems::gridSz=blockC.grid;
            LvlPlacingItems::gridOffset = QPoint(0, 0);

            if( (itemID != LvlPlacingItems::blockSet.id) || (placingItem!=PLC_Block) )
                LvlPlacingItems::blockSet.layer = "Default";
            LvlPlacingItems::layer = LvlPlacingItems::blockSet.layer;
            LvlPlacingItems::blockSet.id = itemID;

            LvlPlacingItems::blockSet.w = tImg.width();
            LvlPlacingItems::blockSet.h = tImg.height();

            placingItem=PLC_Block;

            //Place sizable blocks in the square fill mode
            if(blockC.sizable)
            {
                LvlPlacingItems::sizableBlock=true;
                LvlPlacingItems::placingMode = LvlPlacingItems::PMODE_Brush;
                setRectDrawer(); return;
            }

            LvlPlacingItems::itemW = LvlPlacingItems::blockSet.w;
            LvlPlacingItems::itemH = LvlPlacingItems::blockSet.h;

            LvlPlacingItems::flags.clear();
            QPair<int, QVariant > flag;

                flag.first=ITEM_TYPE;
                flag.second="Block";
            LvlPlacingItems::flags.push_back(flag);

                flag.first=ITEM_ID;
                flag.second=QString::number(LvlPlacingItems::blockSet.id);
            LvlPlacingItems::flags.push_back(flag);

            if(blockC.sizable)
            {
                flag.first=ITEM_BLOCK_IS_SIZABLE;
                flag.second = "sizable";
            LvlPlacingItems::flags.push_back(flag);
            }

                flag.first = ITEM_BLOCK_SHAPE;
                flag.second = QString::number(blockC.phys_shape);
            LvlPlacingItems::flags.push_back(flag);

                flag.first = ITEM_WIDTH;
                flag.second = QString::number(LvlPlacingItems::blockSet.w);
            LvlPlacingItems::flags.push_back(flag);

                flag.first = ITEM_HEIGHT;
                flag.second = QString::number(LvlPlacingItems::blockSet.h);
            LvlPlacingItems::flags.push_back(flag);

                flag.first = ITEM_IS_CURSOR;
                flag.second = "CURSOR";
            LvlPlacingItems::flags.push_back(flag);


            //Rectangular fill mode (uses own cursor item)
            if(LvlPlacingItems::placingMode == LvlPlacingItems::PMODE_Rect)
            {
                setRectDrawer(); return;
            }

            //Rectangular fill mode (uses own cursor item)
            if(LvlPlacingItems::placingMode == LvlPlacingItems::PMODE_Circle)
            {
                setCircleDrawer(); return;
            }

            //Offset relative to item center
            LvlPlacingItems::c_offset_x= qRound(qreal(LvlPlacingItems::blockSet.w) / 2);
            LvlPlacingItems::c_offset_y= qRound(qreal(LvlPlacingItems::blockSet.h) / 2);

            //Line mode (uses own cursor item)
            if(LvlPlacingItems::placingMode == LvlPlacingItems::PMODE_Line)
            {
                setLineDrawer(); return;
            }

            //Single item placing
            cursor = addPixmap(tImg);

            //set data flags
            foreach(dataFlag flag, LvlPlacingItems::flags)
                cursor->setData(flag.first, flag.second);

            cursor->setZValue(7000);
            cursor->setOpacity( 0.8 );
            cursor->setVisible(false);
            cursor->setEnabled(true);

            //flood fill uses 'item' cursor
                //if(LvlPlacingItems::floodFillingMode)
            if(LvlPlacingItems::placingMode == LvlPlacingItems::PMODE_FloodFill)
            {
                setFloodFiller(); return;
            }

            SwitchEditingMode(MODE_PlacingNew);

            break;
        }
    case 1: //bgos
    {
        obj_bgo& bgoC = uBGOs[itemID];
        Items::getItemGFX(&bgoC, tImg, false);
        if(tImg.isNull())
        {
            tImg=uBgoImg;
        }
        if(!bgoC.isValid)
        {
            bgoC = pConfigs->main_bgo[1];
            bgoC.image = uBgoImg;
        }


        LvlPlacingItems::gridSz=bgoC.grid;
        LvlPlacingItems::gridOffset = QPoint(bgoC.offsetX,
                                             bgoC.offsetY);

        if( (itemID != LvlPlacingItems::bgoSet.id) || (placingItem!=PLC_BGO) )
            LvlPlacingItems::bgoSet.layer = "Default";
        LvlPlacingItems::layer = LvlPlacingItems::bgoSet.layer;
        LvlPlacingItems::bgoSet.id = itemID;

        long w = tImg.width();
        long h = tImg.height();//( (bgoC.animated)?bgoC.frames:1);

        LvlPlacingItems::itemW = w;
        LvlPlacingItems::itemH = h;

        placingItem=PLC_BGO;

        LvlPlacingItems::flags.clear();
        QPair<int, QVariant > flag;

            flag.first=0;
            flag.second="BGO";
        LvlPlacingItems::flags.push_back(flag);

            flag.first=1;
            flag.second=QString::number(itemID);
        LvlPlacingItems::flags.push_back(flag);

            flag.first = 9;
            flag.second = QString::number(w);
        LvlPlacingItems::flags.push_back(flag);

            flag.first = 10;
            flag.second = QString::number(h);
        LvlPlacingItems::flags.push_back(flag);

            flag.first = 25;
            flag.second = "CURSOR";
        LvlPlacingItems::flags.push_back(flag);


        //Square fill mode
        if(LvlPlacingItems::placingMode==LvlPlacingItems::PMODE_Rect)
        {
            setRectDrawer(); return;
        }

        //Rectangular fill mode (uses own cursor item)
        if(LvlPlacingItems::placingMode == LvlPlacingItems::PMODE_Circle)
        {
            setCircleDrawer(); return;
        }

        LvlPlacingItems::c_offset_x= qRound(qreal(w) / 2);
        LvlPlacingItems::c_offset_y= qRound(qreal(h) / 2);

        //Line mode
        if(LvlPlacingItems::placingMode==LvlPlacingItems::PMODE_Line)
        {
            setLineDrawer(); return;
        }

        //Single item placing
        cursor = addPixmap( tImg );

        //set data flags
        foreach(dataFlag flag, LvlPlacingItems::flags)
            cursor->setData(flag.first, flag.second);

        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        //flood fill uses 'item' cursor
        if(LvlPlacingItems::placingMode==LvlPlacingItems::PMODE_FloodFill)
        {
            setFloodFiller(); return;
        }

        SwitchEditingMode(MODE_PlacingNew);
        break;
    }
    case 2: //npcs
    {
        obj_npc &mergedSet = uNPCs[itemID];
        tImg = getNPCimg(itemID, LvlPlacingItems::npcSet.direct);
        if(!mergedSet.isValid)
        {
            mergedSet = pConfigs->main_npc[1];
            mergedSet.image = uNpcImg;
        }

        if( (itemID != LvlPlacingItems::npcSet.id) || (placingItem!=PLC_NPC) )
            LvlPlacingItems::npcSet.layer = "Default";
        LvlPlacingItems::layer = LvlPlacingItems::npcSet.layer;
        LvlPlacingItems::npcSet.id = itemID;

        if(LvlPlacingItems::npcSet.generator)
            LvlPlacingItems::gridSz=(pConfigs->default_grid/2);
        else
            LvlPlacingItems::gridSz=mergedSet.grid;

        LvlPlacingItems::npcSet.is_star = mergedSet.is_star;

        LvlPlacingItems::npcGrid=mergedSet.grid;

        LvlPlacingItems::gridOffset = QPoint(mergedSet.grid_offset_x,
                                             mergedSet.grid_offset_y);

        LvlPlacingItems::flags.clear();
        QPair<int, QVariant > flag;

        long imgOffsetX = (int)round( - ( ( (double)mergedSet.gfx_w -
                                            (double)mergedSet.width ) / 2 ) );

        long imgOffsetY = (int)round( - (double)mergedSet.gfx_h +
                                      (double)mergedSet.height +
                                      (double)mergedSet.gfx_offset_y );

        LvlPlacingItems::npcGfxOffsetX1 = imgOffsetX;
        LvlPlacingItems::npcGfxOffsetX2 = (-((double)mergedSet.gfx_offset_x));
        LvlPlacingItems::npcGfxOffsetY = imgOffsetY;

        LvlPlacingItems::itemW = mergedSet.width;
        LvlPlacingItems::itemH = mergedSet.height;

        LvlPlacingItems::c_offset_x= qRound(qreal(mergedSet.width) / 2);
        LvlPlacingItems::c_offset_y= qRound(qreal(mergedSet.height) / 2);

        placingItem = PLC_NPC;

            flag.first=ITEM_TYPE;
            flag.second="NPC";
        LvlPlacingItems::flags.push_back(flag);

            flag.first=ITEM_ID;
            flag.second=QString::number(itemID);
        LvlPlacingItems::flags.push_back(flag);

            flag.first=ITEM_NPC_BLOCK_COLLISION;
            flag.second=QString::number((int)mergedSet.collision_with_blocks);
        LvlPlacingItems::flags.push_back(flag);

            flag.first=ITEM_NPC_NO_NPC_COLLISION;
            flag.second=QString::number((int)mergedSet.no_npc_collions);
        LvlPlacingItems::flags.push_back(flag);

            flag.first=ITEM_WIDTH;
            flag.second=QString::number(mergedSet.width);
        LvlPlacingItems::flags.push_back(flag);

            flag.first=ITEM_HEIGHT;
            flag.second=QString::number(mergedSet.height);
        LvlPlacingItems::flags.push_back(flag);

            flag.first=ITEM_IS_CURSOR;
            flag.second="CURSOR";
        LvlPlacingItems::flags.push_back(flag);

        //Line mode
        if(LvlPlacingItems::placingMode==LvlPlacingItems::PMODE_Line)
        {
            setLineDrawer(); return;
        }

        cursor = addPixmap(tImg);

        //set data flags
        foreach(dataFlag flag, LvlPlacingItems::flags)
            cursor->setData(flag.first, flag.second);

        ((QGraphicsPixmapItem *)cursor)->setOffset(
                    ( LvlPlacingItems::npcGfxOffsetX1 +
                    ( LvlPlacingItems::npcGfxOffsetX2 *
                      ((LvlPlacingItems::npcSet.direct==0)?-1:LvlPlacingItems::npcSet.direct))),
                    LvlPlacingItems::npcGfxOffsetY );

        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        break;
    }
    case 3: //water
        placingItem=PLC_Water;
        LvlPlacingItems::waterType = itemID;
        LvlPlacingItems::gridSz = 16;
        LvlPlacingItems::gridOffset = QPoint(0,0);
        LvlPlacingItems::c_offset_x= 0;
        LvlPlacingItems::c_offset_y= 0;
        LvlPlacingItems::waterSet.layer = LvlPlacingItems::layer.isEmpty()? "Default" : LvlPlacingItems::layer;
        setRectDrawer(); return;
        break;
    case 4: //doorPoint
        placingItem=PLC_Door;
        LvlPlacingItems::doorType = dType;
        LvlPlacingItems::doorArrayId = itemID;

        LvlPlacingItems::gridSz=16;
        LvlPlacingItems::gridOffset = QPoint(0,0);

        LvlPlacingItems::c_offset_x = 16;
        LvlPlacingItems::c_offset_y = 16;

        LvlPlacingItems::layer = "";

        cursor = addRect(0,0, 32, 32);

        ((QGraphicsRectItem *)cursor)->setBrush(QBrush(QColor(qRgb(0xff,0x00,0x7f))));
        ((QGraphicsRectItem *)cursor)->setPen(QPen(QColor(qRgb(0xff,0x00,0x7f)), 2,Qt::SolidLine, Qt::SquareCap, Qt::MiterJoin));
        cursor->setData(ITEM_IS_CURSOR, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(false);
        cursor->setEnabled(true);

        break;
    case 5: //PlayerPoint
        {
        placingItem=PLC_PlayerPoint;
        LvlPlacingItems::playerID = itemID;

        LvlPlacingItems::gridSz=2;
        LvlPlacingItems::gridOffset = QPoint(0,2);

        LvlPlacingItems::c_offset_x = 16;
        LvlPlacingItems::c_offset_y = 16;

        LvlPlacingItems::layer = "";

        QPixmap playerPixmap;
        switch(itemID+1)
        {
            case 1:
                playerPixmap = Themes::Image(Themes::player1); break;
            case 2:
                playerPixmap = Themes::Image(Themes::player2); break;
            default:
                playerPixmap = Themes::Image(Themes::player_point); break;
        }

        PlayerPoint x = FileFormats::CreateLvlPlayerPoint(itemID+1);

        cursor = addPixmap(playerPixmap);
        dynamic_cast<QGraphicsPixmapItem *>(cursor)->setOffset(qRound(qreal(x.w-playerPixmap.width())/2.0), x.h-playerPixmap.height() );
        cursor->setData(ITEM_IS_CURSOR, "CURSOR");
        cursor->setZValue(7000);
        cursor->setOpacity( 0.8 );
        cursor->setVisible(true);
        cursor->setEnabled(true);

        break;
        }
        default: break;
    }

    SwitchEditingMode(MODE_PlacingNew);
    DrawMode=true;
    contextMenuOpened=false;
}