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; }
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; }