コード例 #1
0
void EditorToolbar::SetTools (std::vector<ToolDescription*> toolDescs, int selectedID) {
	for (std::vector<EditorToolButton*>::iterator itTool = tools.begin();
			itTool != tools.end(); itTool++) {
		delete *itTool;
	}
	tools.clear();

	for (std::vector<ToolDescription*>::iterator itTool = this->toolDescs.begin();
			itTool != this->toolDescs.end(); itTool++) {
		delete *itTool;
	}
	this->toolDescs.clear();

	this->toolDescs = toolDescs;

	CfgContents contents_lang;
	CfgParser->GetContents(std::string("Content/LanguageFiles/") + CurrentSession->language
		+ std::string(".ini"), contents_lang);

	boost::function<void (int)> event =
		boost::bind(&EditorToolbar::OnToolActivated, this, _1);

	sf::Vector2f createToolButtonOffset(0, 150);

	for (std::vector<ToolDescription*>::iterator itToolDesc = this->toolDescs.begin();
			itToolDesc != this->toolDescs.end(); itToolDesc++) {

		EditorToolButton* tool = new EditorToolButton(this, (*itToolDesc)->ID,
										(*itToolDesc)->mainTexture,
										"Content/Textures/glow.png",
										event,
										contents_lang[(*itToolDesc)->langSection][(*itToolDesc)->langKey],
										PFWConstants::defaultFontFile,
										24,
										sf::Vector2f(0, 60),
										ScreenSpaceDrawable::LEFT, ScreenSpaceDrawable::TOP,
										layerDepth + 2,
										sf::Vector2i(100, 100));

		tool->SetPosition(createToolButtonOffset);
		createToolButtonOffset.y += 140;

		if ((*itToolDesc)->ID == selectedID) {
			tool->SetActive(true);
			toolSelected(selectedID);
			activeID = toolEventID;
		}

		tools.push_back(tool);
	}

	if (hidden) {
		for (std::vector<EditorToolButton*>::iterator itT = tools.begin(); itT != tools.end(); itT++) {
			(*itT)->Move(sf::Vector2f( -background->GetScreenSize().x, 0 ));
		}
	}

	SortAscendingScreen();
}
コード例 #2
0
bool MainWindow::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0:
        showProperties((QObject*)static_QUType_ptr.get(_o+1));
        break;
    case 1:
        updateProperties((QObject*)static_QUType_ptr.get(_o+1));
        break;
    case 2:
        showDialogHelp();
        break;
    case 3:
        showDebugStep((QObject*)static_QUType_ptr.get(_o+1),(int)static_QUType_int.get(_o+2));
        break;
    case 4:
        showStackFrame((QObject*)static_QUType_ptr.get(_o+1),(int)static_QUType_int.get(_o+2));
        break;
    case 5:
        showErrorMessage((QObject*)static_QUType_ptr.get(_o+1),(int)static_QUType_int.get(_o+2),(const QString&)static_QUType_QString.get(_o+3));
        break;
    case 6:
        finishedRun();
        break;
    case 7:
        breakPointsChanged();
        break;
    case 8:
        fileNew();
        break;
    case 9:
        fileNewDialog();
        break;
    case 10:
        fileNewFile();
        break;
    case 11:
        fileClose();
        break;
    case 12:
        fileQuit();
        break;
    case 13:
        fileCloseProject();
        break;
    case 14:
        fileOpen();
        break;
    case 15:
        fileOpen((const QString&)static_QUType_QString.get(_o+1),(const QString&)static_QUType_QString.get(_o+2));
        break;
    case 16:
        fileOpen((const QString&)static_QUType_QString.get(_o+1),(const QString&)static_QUType_QString.get(_o+2),(const QString&)static_QUType_QString.get(_o+3));
        break;
    case 17:
        fileOpen((const QString&)static_QUType_QString.get(_o+1),(const QString&)static_QUType_QString.get(_o+2),(const QString&)static_QUType_QString.get(_o+3),(bool)static_QUType_bool.get(_o+4));
        break;
    case 18:
        static_QUType_bool.set(_o,fileSave());
        break;
    case 19:
        static_QUType_bool.set(_o,fileSaveForm());
        break;
    case 20:
        static_QUType_bool.set(_o,fileSaveProject());
        break;
    case 21:
        static_QUType_bool.set(_o,fileSaveAs());
        break;
    case 22:
        fileSaveAll();
        break;
    case 23:
        fileCreateTemplate();
        break;
    case 24:
        editUndo();
        break;
    case 25:
        editRedo();
        break;
    case 26:
        editCut();
        break;
    case 27:
        editCopy();
        break;
    case 28:
        editPaste();
        break;
    case 29:
        editDelete();
        break;
    case 30:
        editSelectAll();
        break;
    case 31:
        editLower();
        break;
    case 32:
        editRaise();
        break;
    case 33:
        editAdjustSize();
        break;
    case 34:
        editLayoutHorizontal();
        break;
    case 35:
        editLayoutVertical();
        break;
    case 36:
        editLayoutHorizontalSplit();
        break;
    case 37:
        editLayoutVerticalSplit();
        break;
    case 38:
        editLayoutGrid();
        break;
    case 39:
        editLayoutContainerHorizontal();
        break;
    case 40:
        editLayoutContainerVertical();
        break;
    case 41:
        editLayoutContainerGrid();
        break;
    case 42:
        editBreakLayout();
        break;
    case 43:
        editAccels();
        break;
    case 44:
        editFunctions();
        break;
    case 45:
        editConnections();
        break;
    case 46:
        static_QUType_ptr.set(_o,editSource());
        break;
    case 47:
        static_QUType_ptr.set(_o,editSource((SourceFile*)static_QUType_ptr.get(_o+1)));
        break;
    case 48:
        static_QUType_ptr.set(_o,openSourceEditor());
        break;
    case 49:
        static_QUType_ptr.set(_o,createSourceEditor((QObject*)static_QUType_ptr.get(_o+1),(Project*)static_QUType_ptr.get(_o+2)));
        break;
    case 50:
        static_QUType_ptr.set(_o,createSourceEditor((QObject*)static_QUType_ptr.get(_o+1),(Project*)static_QUType_ptr.get(_o+2),(const QString&)static_QUType_QString.get(_o+3)));
        break;
    case 51:
        static_QUType_ptr.set(_o,createSourceEditor((QObject*)static_QUType_ptr.get(_o+1),(Project*)static_QUType_ptr.get(_o+2),(const QString&)static_QUType_QString.get(_o+3),(const QString&)static_QUType_QString.get(_o+4)));
        break;
    case 52:
        static_QUType_ptr.set(_o,createSourceEditor((QObject*)static_QUType_ptr.get(_o+1),(Project*)static_QUType_ptr.get(_o+2),(const QString&)static_QUType_QString.get(_o+3),(const QString&)static_QUType_QString.get(_o+4),(bool)static_QUType_bool.get(_o+5)));
        break;
    case 53:
        editFormSettings();
        break;
    case 54:
        editProjectSettings();
        break;
    case 55:
        editPixmapCollection();
        break;
    case 56:
        editDatabaseConnections();
        break;
    case 57:
        editPreferences();
        break;
    case 58:
        projectInsertFile();
        break;
    case 59:
        searchFind();
        break;
    case 60:
        searchIncremetalFindMenu();
        break;
    case 61:
        searchIncremetalFind();
        break;
    case 62:
        searchIncremetalFindNext();
        break;
    case 63:
        searchReplace();
        break;
    case 64:
        searchGotoLine();
        break;
    case 65:
        previewForm();
        break;
    case 66:
        previewForm((const QString&)static_QUType_QString.get(_o+1));
        break;
    case 67:
        toolsCustomWidget();
        break;
    case 68:
        toolsConfigure();
        break;
    case 69:
        helpContents();
        break;
    case 70:
        helpManual();
        break;
    case 71:
        helpAbout();
        break;
    case 72:
        helpAboutQt();
        break;
    case 73:
        helpRegister();
        break;
    case 74:
        activeWindowChanged((QWidget*)static_QUType_ptr.get(_o+1));
        break;
    case 75:
        updateUndoRedo((bool)static_QUType_bool.get(_o+1),(bool)static_QUType_bool.get(_o+2),(const QString&)static_QUType_QString.get(_o+3),(const QString&)static_QUType_QString.get(_o+4));
        break;
    case 76:
        updateEditorUndoRedo();
        break;
    case 77:
        toolSelected((QAction*)static_QUType_ptr.get(_o+1));
        break;
    case 78:
        clipboardChanged();
        break;
    case 79:
        selectionChanged();
        break;
    case 80:
        windowsMenuActivated((int)static_QUType_int.get(_o+1));
        break;
    case 81:
        setupWindowActions();
        break;
    case 82:
        createNewTemplate();
        break;
    case 83:
        projectSelected((QAction*)static_QUType_ptr.get(_o+1));
        break;
    case 84:
        setupRecentlyFilesMenu();
        break;
    case 85:
        setupRecentlyProjectsMenu();
        break;
    case 86:
        recentlyFilesMenuActivated((int)static_QUType_int.get(_o+1));
        break;
    case 87:
        recentlyProjectsMenuActivated((int)static_QUType_int.get(_o+1));
        break;
    case 88:
        emitProjectSignals();
        break;
    case 89:
        showStartDialog();
        break;
    case 90:
        doFunctionsChanged();
        break;
    case 91:
        static_QUType_bool.set(_o,openProjectSettings((Project*)static_QUType_ptr.get(_o+1)));
        break;
    default:
        return QMainWindow::qt_invoke( _id, _o );
    }
    return TRUE;
}
コード例 #3
0
void EditorToolbar::HandleSFEvents(std::list<sf::Event>& sfEvents) {
	bool mouseOverPressed = false;

	std::list<sf::Event>::iterator itSfEvent = sfEvents.begin();
	while (itSfEvent != sfEvents.end()) {
		switch (itSfEvent->Type) {
			case sf::Event::MouseMoved: {
				sf::Vector2f screenSize(background->GetScreenSize());
				sf::Vector2f fakePos(background->CalcFakePos());
				sf::Rect<float> bounds(fakePos.x - (screenSize.x / 2),
										fakePos.y - (screenSize.y / 2),
										fakePos.x + (screenSize.x / 2),
										fakePos.y + (screenSize.y / 2 ));

				hover = bounds.Contains(itSfEvent->MouseMove.X, itSfEvent->MouseMove.Y) ? true : false;

				if (dragging) {
					float before = toolViewOffsetY;

					toolViewOffsetY += (itSfEvent->MouseMove.Y - lastMousePressedY);

					CalcViewOffsetY();

					lastMousePressedY += toolViewOffsetY - before;

					/* mouse leaving window messes up values on _WINDOWS_
					 * 	so this still does not solve anything :/
					 * */
//					if (!Game->GetRenderWindow()->GetInput().IsMouseButtonDown(sf::Mouse::Left))
//						dragging = false;
				}
			} break;
			case sf::Event::MouseWheelMoved:
				if (hover && !tools.empty()) {
					toolViewOffsetY += Game->GetDeltaTime() * WHEELSCROLLSPD * itSfEvent->MouseWheel.Delta;

					CalcViewOffsetY();
				}
			break;
			case sf::Event::MouseButtonPressed:
				if (hover) {
					if (!tools.empty()) {
						if (itSfEvent->MouseButton.Button == sf::Mouse::Left) {
							lastMousePressedY = itSfEvent->MouseButton.Y;

							dragging = true;
						}
					}

					mouseOverPressed = true;
				}
			break;
			case sf::Event::MouseButtonReleased:
				dragging = false;
			break;
			case sf::Event::Resized:
				CalcViewOffsetY();
			break;
			default:
			break;
		}

		itSfEvent++;
	}

	toolEventID = -2;

	for (std::vector<EditorToolButton*>::iterator itTool = tools.begin();
			itTool != tools.end(); itTool++) {
		(*itTool)->HandleSFEvents(sfEvents);
	}

	if (toolEventID != -2) {
		for (std::vector<EditorToolButton*>::iterator itTool = tools.begin();
				itTool != tools.end(); itTool++) {
			if ((*itTool)->GetID() != toolEventID) {
				(*itTool)->SetActive(false);
			}
		}

		toolSelected(toolEventID);
		activeID = toolEventID;

		if (toolEventID == -1 && mouseOverPressed) {
			// if no tool was activated - the event wasn't eaten
			// but the mouse pressed over the toolbar
			// then eat it still

			itSfEvent = sfEvents.begin();
			while (itSfEvent != sfEvents.end()) {
				switch (itSfEvent->Type) {
					case sf::Event::MouseButtonPressed:
						itSfEvent =	--sfEvents.erase(itSfEvent);
					break;
					default:
					break;
				}

				itSfEvent++;
			}
		}
	}
}
コード例 #4
0
ファイル: GenGame.cpp プロジェクト: javieku/projectpgz
void GenGame::genGame(DBManager* myDB){
	// Se prepara el directorio de salida
	outputPath = ".\\";//..\\..\\interprete\\bin\\";

	string command = "mkdir ";
	// Creamos el dir ppal
	command.append(outputPath);
	if (system(NULL)) system(command.c_str());
	// Dir de datos
	command = "mkdir " + outputPath + DATA_PATH;
	if (system(NULL)) system(command.c_str());
	// Dir de mapas
	command.append(MAPS_PATH);
	if (system(NULL)) system(command.c_str());
	// Dir de recursos
	command = "mkdir " + outputPath + DATA_PATH;
	command.append(RES_PATH);
	if (system(NULL)) system(command.c_str());

	/* ---- Decidator obtiene los datos para los generadores ---- */
	// la GUI guardará el archivo que posteriormente leerá decidator para obtener la información
	decidator = new Decidator(myDB, "./input.dat");
	int wSize = decidator->getWorldSize();
	int numDungeons = decidator->getNumDungeons();
	int diff = decidator->getDifficulty();
	int numZones = min(2 * diff, 4) + rand() % 2;
	decidator->setNumKeyObj(numZones);
	int ratioDungeon = decidator->getRatio();
	int numSafeZones = decidator->getNumSafeZones();
	//LO QUITO PORQUE 5 ES BASTANTE BASTANTE!
	int numEnemies = 3; //decidator->getNumEnemies();
	int numPigeons = decidator->getNumPigeons();
	int numBigHearts = decidator->getNumBigHearts();

	/* Pedimos cosas a la DB */
	myDB->getPlayer();
	myDB->getKey();
	myDB->getBossKey();
	myDB->getDoors();
	short keyObj = myDB->getKeyObj();
	//pillamos 25 items para que pueda tenerlos el juego XD!
	myDB->getPowUp();
	for (int i = 0; i < 25; i++)
		myDB->getItem();

	// Debug code sexy sexy
	decidator->clearInitialTools();
	for (int i = 0; i < decidator->getNumTools(); i++)
	{
		int tries = 100;
		bool ok = false;
		while (!ok && tries > 0)
		{
			int idTool = myDB->getTool();
			if (!toolSelected(idTool))
			{
				decidator->addInitialTool(idTool);
				addTool(idTool);
				ok = true;
			}
			tries--;
		}
	}

	zones = new vector<GenZone*>();

	//int numHearts = decidator->getInitialMaxLife();
	ow = new Overworld(wSize, diff, numZones, numDungeons, numSafeZones, numBigHearts, numPigeons);
	GenDungeon* genDungeon = new GenDungeon();
	Decorator* decorator = new WorldDecorator(myDB);
	int numDungeon = 1; 
	int idTool = 1;   //params para la dungeon
	vector<SafeZoneInfo>* safeZones = NULL;//new vector<SafeZoneInfo>();
	ZoneInfo zInfo;
	int zoneNumber = 1;
	string lastzone = "";
	while((int)zones->size() < numZones)
	{
		while(strcmp(zInfo.gen.c_str(),lastzone.c_str()) == 0)
			zInfo = myDB->getZone();

		int idTool;
		bool ok = false;
		int tries = 100;
		while (!ok && tries > 0)
		{
			idTool = myDB->getTool();
			if (!toolSelected(idTool))
			{
				addTool(idTool);
				ok = true;
			}
			tries--;
		}

		if(strcmp(zInfo.gen.c_str(), "Forest") == 0)
		{ 
				GenZone* myGenZone = new GenForestZone(zInfo.gen, zoneNumber, zInfo.tileSetId, ow, numEnemies, /*dificultad*/diff, genDungeon, numDungeon, idTool, ratioDungeon, safeZones, decorator, myDB, keyObj);
				zoneNumber++;
				zones->push_back(myGenZone);
		}
		else if(strcmp(zInfo.gen.c_str(), "Prairie") == 0)
		{
				GenZone* myGenZone = new GenFieldZone(zInfo.gen, zoneNumber, zInfo.tileSetId, ow, numEnemies,diff,  genDungeon, numDungeon, idTool, ratioDungeon, safeZones, decorator, myDB, keyObj);
				zoneNumber++;
				zones->push_back(myGenZone);
		}
		else if(strcmp(zInfo.gen.c_str(), "Lake") == 0)
		{
				//GenZone* myGenZone = new GenWormZone("theme-default", zoneTheme, zoneNumber, NULL, ow, numEnemies, genDungeon, /*numDungeon*/zoneNumber, idTool, ratioDungeon, safeZones, decorator, myDB);
				GenZone* myGenZone = new GenLagoonZone(zInfo.gen, zoneNumber, zInfo.tileSetId, ow, numEnemies, diff, genDungeon, numDungeon, idTool, ratioDungeon, safeZones, decorator, myDB, keyObj);
				zoneNumber++;
				zones->push_back(myGenZone);
		}
		else if(strcmp(zInfo.gen.c_str(), "Desert") == 0)
		{
				//GenZone* myGenZone = new GenWormZone("theme-default", zoneTheme, zoneNumber, NULL, ow, numEnemies, genDungeon, /*numDungeon*/zoneNumber, idTool, ratioDungeon, safeZones, decorator, myDB);
				GenZone* myGenZone = new GenDesertZone(zInfo.gen, zoneNumber, zInfo.tileSetId, ow, numEnemies, diff, genDungeon, numDungeon, idTool, ratioDungeon, safeZones, decorator, myDB, keyObj);
				zoneNumber++;
				zones->push_back(myGenZone);
		}
		lastzone = zInfo.gen;
		numDungeon++;
	}
	
	// Decidator obtiene de la base de dator el generador de mundo a utilizar
	/*switch (decidator->getWorldGen()){   Lo comento de momento porque la consulta no devuelve na y estalla esto x.x
	case 1:
		genOw = new GenVoroWorld(ow, zones, myDB);	
		break;
	}*/
	genOw = new GenVoroWorld(ow, zones,genDungeon, decorator, myDB);	

	world = new World(diff, genOw, myDB);

	world->buildOverworld();
	ow->save(outputPath); //ahora aquí se hace el guardado
	for (int i = 0; i < genDungeon->getNumDungeons(); i++) //guardamos todas las dungeons
		genDungeon->getDungeon(i)->save(outputPath);

	// mazmorra final no se cuenta
	numDungeon++;

	decidator->setNumMaps(numDungeon);
	// Decidator guarda la información que necesita el intérprete (como número de piezas de corazón, etc...)
	decidator->save();

	// De momento copia prologo y textos aunque lo harán los decidator historiator y demás
	outputPath = ".\\data\\";
	command = "copy " + outputPath + "prologue.txt " + DATA_PATH;
	if (system(NULL)) system(command.c_str()); 
	command = "copy " + outputPath + "textos.txt " + DATA_PATH;
	if (system(NULL)) system(command.c_str());
	// Copia configs
	command = "copy " + outputPath + "config-p1 " + DATA_PATH;
	if (system(NULL)) system(command.c_str());
	command = "copy " + outputPath + "config-p1-template " + DATA_PATH;
	if (system(NULL)) system(command.c_str());
	command = "copy " + outputPath + "config-p1-joy " + DATA_PATH;
	if (system(NULL)) system(command.c_str());
	// Copia maininfo 
	command = "copy " + outputPath + "maininfo "+ DATA_PATH;
	if (system(NULL)) system(command.c_str());

	delete genDungeon; 
	genDungeon = NULL;

	delete decorator;
	decorator = NULL;
}