Ejemplo n.º 1
0
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(&currentImg);
        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;
}