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(); }
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; }
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++; } } } }
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; }