void CMainMap::processEvent(CGameEvent *gameEvent) { if (false == gameEvent->isFinished()) { if (MOUSEBUTTON_DOWN == gameEvent->getEventType()) { CTile* tile = NULL; ALLEGRO_EVENT *alEvent = NULL; if (alEvent = gameEvent->getAlEvent()) { if (MOUSEBUTTONLEFT == alEvent->mouse.button) { // left mousebotton in map selects a tile ostringstream ostr; //ostr << "\nKoords - x: " << alEvent->mouse.x << ", y: " << alEvent->mouse.y; //fprintf(stderr, ostr.str().c_str()); if (tile = getTileFromScreen(alEvent->mouse.x, alEvent->mouse.y)) { ostr << "\ntile index: " << tile->m_index << ", x: " << tile->m_idX << " / y: " << tile->m_idY; fprintf(stderr, ostr.str().c_str()); setActiveTile(tile->m_index); } } } } } }
QList< QImage> DwarfClipboardPng::regenerateImages(DwarfClipboardCopyObj & obj) { QList<QImage> retImages; QVector<QVector<QVector<QString > > > dig = obj.getDig(); QVector<QVector<QVector<QString > > > build = obj.getBuild(); DFHack::t_screen temp; temp.background = 0; temp.foreground = 7; temp.bright = 1; cursorIdx current; for(current.z=dig.size()-1;current.z>=0;current.z--){ QImage currentImg(dig[current.z][0].size()*tileWidth,dig[current.z].size()*tileHeight,QImage::Format_ARGB32); QPainter painter(¤tImg); painter.setCompositionMode(QPainter::CompositionMode_Source); QVector<QVector<QString> > rawNumbers(dig[current.z][0].size(),QVector<QString>(dig[current.z].size())); for(current.y = 0;current.y<dig[current.z].size();current.y++){ for(current.x =0;current.x<dig[current.z][current.y].size();current.x++){ QList< int > borders = getBorders(dig,current); temp.symbol = 0; if(dig[current.z][current.y][current.x] == " " && borders.size() >= 1 ){ temp.symbol = 176; } if(dig[current.z][current.y][current.x] == "i"){ temp.symbol = 88; } QImage tile = getTileFromScreen(temp); QString test = stringFromScreen(temp); rawNumbers[current.x][current.y] = test; painter.drawImage(current.x * tileWidth, current.y * tileHeight, tile); } } painter.end(); QString rawComplete; for(int yitr = 0;yitr < rawNumbers[0].size();yitr++){ for(int xitr = 0;xitr < rawNumbers.size();xitr++){ rawComplete.append(rawNumbers[xitr][yitr]); } rawComplete.append(':'); } currentImg.setText("rawNumbers",rawComplete); retImages.append(currentImg); } return(retImages); }
QList<QImage> DwarfClipboardPng::ImagesFromString(QString str) { if(str.isEmpty() || tileSetPath == "" || colorPath == ""){ return QList<QImage>(); } QStringList zStr,yStr,xStr,screenStr,dimensions; zStr = str.split('|',QString::SkipEmptyParts); dimensions = zStr.takeFirst().split(',',QString::SkipEmptyParts); QList<QImage> Images; // qDebug() << dimensions[0] << dimensions[1] << dimensions[2]; for(int z = 0;z<zStr.size();z++){ QImage image(dimensions[0].toInt()*tileWidth,dimensions[1].toInt()*tileHeight,QImage::Format_ARGB32); QPainter painter(&image); painter.setCompositionMode(QPainter::CompositionMode_Source); yStr = zStr[z].split(':',QString::SkipEmptyParts); for(int y = 0;y<yStr.size();y++){ xStr = yStr[y].split(';',QString::SkipEmptyParts); for(int x = 0;x < xStr.size();x++){ DFHack::t_screen temp; screenStr = xStr[x].split(",",QString::SkipEmptyParts); temp.symbol = screenStr[0].toInt(); temp.foreground = screenStr[1].toInt(); temp.background = screenStr[2].toInt(); temp.bright = screenStr[3].toInt(); QImage tile = getTileFromScreen(temp); painter.drawImage(x*tileWidth,y*tileHeight,tile); } } painter.end(); image.setText("rawNumbers",str); Images.append(image); } return Images; }