void LoadSave::Init(int command, gedString title, gedString confirmButtonText) { SetModal(); this->command = command; Text *text; Button *button; int y; text = AddText(title, CENTER_TEXT, 5); y = DrawHLine(text->Down() + 2); if(command == SAVE_DIALOG) { SetToolTip(TIP_SAVE); text = AddText("File: ", 10, y); name = AddEditBox(text->Right(), text->Top(), 200); dir = AddListDirectory(name->Right() + 2, y, 80, 0, 0, "select"); dir->SetToolTip(TIP_SAVE_FILE); dir->SetSave(); y = name->Down(); } else if(command == LOAD_DIALOG) { SetToolTip(TIP_LOAD); text = AddText("File: ", 40, y); dir = AddListDirectory(text->Right(), y, 200, 0, 0); dir->SetToolTip(TIP_LOAD_FILE); y = dir->Down(); } else if(command == MERGE_DIALOG) { SetToolTip(TIP_MERGE); text = AddText("File: ", 40, y); dir = AddListDirectory(text->Right(), y, 200, 0, 0); dir->SetToolTip(TIP_MERGE_FILE); y = dir->Down(); command = LOAD_DIALOG; } //Close y = DrawHLine(Height() - 40); button = AddButton(confirmButtonText, (WIDTH-135)/2, y, 0, 0, LOADSAVE_OK); SetConfirmButton(button); button = AddButton("Cancel", button->Right()+8, y, 0, 0, LOADSAVE_CLOSE); SetCancelButton(button); chdir(GameControl::Get()->getGamePath().c_str()); }
MainPanel::MainPanel() : Panel("MainPanel", 0, 0, #if !defined(GAME_EDITOR_HOME_EDITION) Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION)?700: #endif 640, 24, NULL) { mainPanel = this; Button *button; ListPop *listRegion; int x; listScript = NULL; SetToolTip(TIP_MAIN_MENU); listFile = AddListPop(10, 2, 64, 0, LS_FILE, "File"); listFile->SetToolTip(TIP_MAIN_MENU_FILE); button = AddButton("Add actor", listFile->Right()+2, 2, 0, 0, BT_ADDACTOR); button->SetToolTip(TIP_MAIN_MENU_ACTOR); button = AddButton("Path", button->Right() + 2, 2, 0, 0, BT_PATH); button->SetToolTip(TIP_MAIN_MENU_PATH); listRegion = AddListPop(button->Right() + 2, 2, 64, 0, LS_REGIONS, "Regions"); listRegion->SetToolTip(TIP_MAIN_MENU_REGIONS); #if !defined(GAME_EDITOR_HOME_EDITION) if(Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION)) { listScript = AddListPop(listRegion->Right() + 2, 2, 64, 0, LS_SCRIPT, "Script"); listScript->SetToolTip(TIP_MAIN_MENU_SCRIPT); ScriptSetup(); x = listScript->Right() + 2; } else #endif { x = listRegion->Right() + 2; } button = AddButton("Game Mode", x, 2, 0, 0, BT_GAME_MODE); button->SetToolTip(TIP_MAIN_MENU_GAMEMODE); listConfig = AddListPop(button->Right() + 2, 2, 64, 0, LS_SETTINGS, "Config"); listConfig->SetToolTip(TIP_MAIN_MENU_CONFIG); listHelp = AddListPop(listConfig->Right() + 2, 2, 64, 0, LS_HELP, "Help"); listHelp->SetToolTip(TIP_MAIN_MENU_HELP); listTutorialDir = AddListDirectory(listHelp->Right() + 4, listHelp->Top(), 1, 1, LS_TUTORIALDIR); listTutorialDir->getImage()->SetVisible(false); listTutorialDir->AddFilter("gedt"); listTutorialDir->setShowDir(false); listTutorialDir->setShowExtension(false); listTutorialDir->setCanUseSystemFileDialog(false); listConfig->AddText("Game Properties"); listConfig->AddText("Preferences"); if(!Tutorial::IsCompatible(VERSION_PREFERENCES)) { if(Config::Get()->getEnableToolTips()) listConfig->AddText("Disable Tool Tips"); else listConfig->AddText("Enable Tool Tips"); } listRegion->AddText("Add Activation Region"); pShowHideRegions = listRegion->GetTextPtr(listRegion->AddText("Hide Regions")); if(!GameControl::Get()->GetViewActor()) { new ActorEdit(VIEW_NAME, NULL, true); } //Coordinate iconCoord = new Actor("gedIconCoordinate", this); iconCoord->AddAnimation(ACTOR_GED_ICON, "maksiconActor.gif", 1, 1, 0, 0); iconCoord->SetActorScale(.25); iconCoord->SetPos(listHelp->Right() + 21, 2); coord = AddText("(0000000,0000000)", iconCoord->Right() + 2, 5, ALIGN_RIGHT); iconCoord->getImage()->SetVisible(false); //Snap iconSnap1 = new Actor("gedIconCoordinate", this); iconSnap1->AddAnimation(ACTOR_GED_ICON, "maksiconActor.gif", 1, 1, 0, 0); iconSnap1->SetActorScale(.125); iconSnap1->SetPos(listHelp->Right() + 5, 2); iconSnap1->getImage()->CalcTransform(); iconSnap2 = new Actor("gedIconCoordinate", this); iconSnap2->AddAnimation(ACTOR_GED_ICON, "maksiconActor.gif", 1, 1, 0, 0); iconSnap2->SetActorScale(.125); iconSnap2->SetPos(iconSnap1->getImage()->X() + 8, iconSnap1->getImage()->Y()); iconSnap3 = new Actor("gedIconCoordinate", this); iconSnap3->AddAnimation(ACTOR_GED_ICON, "maksiconActor.gif", 1, 1, 0, 0); iconSnap3->SetActorScale(.125); iconSnap3->SetPos(iconSnap1->getImage()->X() + 8, iconSnap1->getImage()->Y() + 8); iconSnap4 = new Actor("gedIconCoordinate", this); iconSnap4->AddAnimation(ACTOR_GED_ICON, "maksiconActor.gif", 1, 1, 0, 0); iconSnap4->SetActorScale(.125); iconSnap4->SetPos(iconSnap1->getImage()->X(), iconSnap1->getImage()->Y() + 8); iconSnap1->getImage()->SetVisible(false); iconSnap2->getImage()->SetVisible(false); iconSnap3->getImage()->SetVisible(false); iconSnap4->getImage()->SetVisible(false); FileSetup(); HelpSetup(); //Only show reminder on linux when can open the pages /*#if !defined(__WIN32__) && !defined(GAME_EDITOR_HOME_EDITION) //Start message linux if(Config::Get()->getShowTutorialReminder()) { new TutorialReminder(); } #endif*/ listEditBox = NULL; }
TutorialReminder::TutorialReminder() : Panel("TutorialReminder", (GameControl::Get()->Width() - (WIDTH_REMINDER - 85))/2, (GameControl::Get()->Height() - HEIGHT_REMINDER)/2, WIDTH_REMINDER, HEIGHT_REMINDER) { SetModal(); bAlreadyShow = true; chdir((GameControl::getEditorPath() + DIR_SEP + "Tutorials" + DIR_SEP + "Getting Started").c_str()); Text *text; Button *button; int y; //Title text = AddText("Welcome", CENTER_TEXT, 5); y = DrawHLine(text->Down() + 2); //Body text = AddText("Thank you for choosing Game Editor\nFor a quick start, select a option below:", 30, y); //Create a new game y = DrawHLine(text->Down() + 10); text = AddText("Create a new game:", 30, y); button = AddButton("Create now", 58, text->Down() + 10, 0, 0, BT_NEWGAME); //Demos y = DrawHLine(button->Down() + 5); text = AddText("Get game demos:", 30, y); button = AddButton("Go to demo page", 58, text->Down() + 10, 0, 0, BT_DEMOS); //Tutorials y = DrawHLine(button->Down() + 5); text = AddText("See the tutorials:", 30, y); listTutorialDir = AddListDirectory(10, text->Down() + 10, 0, 0, LS_TUTORIAL, " Click here for the tutorials "); listTutorialDir->setCanUseSystemFileDialog(false); #if defined(WIN32) && !defined(GAME_EDITOR_HOME_EDITION) button = AddButton("Get the newest tutorials", 58, listTutorialDir->Down() + 5, 0, 0, BT_UPDATE); text = AddText("For more tutorials, select from Help Menu above", text->Left(), button->Down() + 5); #else text = AddText("For more tutorials, select from Help Menu above", text->Left(), listTutorialDir->Down() + 25); #endif listTutorialDir->SetPos((WIDTH_REMINDER - listTutorialDir->Width())/2, listTutorialDir->getImage()->Y()); listTutorialDir->AddFilter("gedt"); listTutorialDir->setShowDir(false); listTutorialDir->setShowExtension(false); //Help y = DrawHLine(text->Down() + 5); text = AddText("Get help:", 30, y); button = AddButton("Read the documentation", 58, text->Down() + 10, 0, 0, BT_DOCS); button = AddButton("Go to Game Editor's forum", 58, button->Down() + 5, 0, 0, BT_FORUM); //Close y = DrawHLine(button->Down() + 5); button = AddButton("Close", (WIDTH_REMINDER-135)/2 - 30, y, 0, 0, BT_CLOSE); button = AddButton(" Don't show again ", button->Right() + 10, y, 0, 0, BT_DONTSHOW); //Logo { EditorDirectory dir; logo = new Actor("ged_TutorialReminder_logo", this); logo->AddAnimation("logo", "logo.png", 1, 1, 0, 0); logo->SetPos(-logo->Width(), 0); } }
GameSettings::GameSettings() : Panel("GameSettings", (GameControl::Get()->Width() - WIDTH)/2, (GameControl::Get()->Height() - getHeight())/2, WIDTH, getHeight()) { SetModal(); SetToolTip(TIP_GAMESETTINGS); gameSettings = this; listSuspend = listESC = listMotion = NULL; editViewSafeMargin = NULL; gamePort = gameID = NULL; listAutoStartNetwork = listGameServer = NULL; Text *text; Button *button; int y, editSize = 40, editStart = 22; if(!Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION)) { editSize = 45; editStart = 8; } //Title text = AddText("Game Properties", CENTER_TEXT, 5); y = DrawHLine(text->Down() + 2); //Body text = AddText("Game resolution: ", 10, y); listRes = AddListPop(text->Right(), text->Top(), 128, 0, LS_RES); listRes->SetToolTip(TIP_GAMESETTINGS_RESOLUTION); editX = AddEditBox(listRes->Right() + editStart, listRes->Top(), editSize); editX->SetNumeric(2, 2000, 1); text = AddText("x", editX->Right()+1, editX->Top()); editY = AddEditBox(text->Right() + 4, text->Top(), editSize); editY->SetNumeric(2, 2000, 1); text = AddText("Mode: ", 10, editY->Down() + 4); listFull = AddListPop(text->Right(), text->Top(), 128, 0, LS_FULL); listFull->SetToolTip(TIP_GAMESETTINGS_MODE); if(Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION)) { text = AddText(" Safe margin: ", listFull->Right(), listFull->Top()); editViewSafeMargin = AddEditBox(editY->Left(), text->Top(), editSize); editViewSafeMargin->SetNumeric(0, 2000, 1); } text = AddText("Frame rate: ", 10, listFull->Down() + 4); editFps = AddEditBox(text->Right(), text->Top(), 50); editFps->SetNumeric(1, 512, 1); text = AddText("fps", editFps->Right() + 2, editFps->Top()); listMouse = AddListPop(text->Right() + 32, text->Top(), 128, 0, LS_MOUSE); listMouse->SetToolTip(TIP_GAMESETTINGS_MOUSE); if(Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION)) { text = AddText("Suspend game if lost focus: ", 10, editFps->Down() + 6); listSuspend = AddListPop(text->Right() + 48, text->Top(), 32, 0, LS_SUSPEND); listSuspend->SetToolTip(TIP_GAMESETTINGS_SUSPEND); if(Tutorial::IsCompatible(VERSION_ESC_TO_EXIT)) { text = AddText(" Use ESC key to exit game: ", 10, listSuspend->Down() + 6); listESC = AddListPop(text->Right() + 48, text->Top(), 32, 0, LS_ESC); listESC->SetToolTip(TIP_GAMESETTINGS_ESC); text = AddText(" Motion Compensation: ", 10, listESC->Down() + 6); listMotion = AddListPop(text->Right() + 48, text->Top(), 32, 0, LS_MOTION); listMotion->SetToolTip(TIP_GAMESETTINGS_MOTION_COMPENSATION); } y = DrawHLine(text->Down() + 8); } else { y = DrawHLine(editFps->Down() + 4); } text = AddText("Audio format: ", 10, y); listHz = AddListPop(text->Right(), text->Top(), 128, 0, LS_HZ); listHz->SetToolTip(TIP_GAMESETTINGS_AUDIO_HZ); listStereo = AddListPop(listHz->Right() + 4, listHz->Top(), 128, 0, LS_STEREO); listStereo->SetToolTip(TIP_GAMESETTINGS_AUDIO_STEREO); text = AddText("Maximum number of simultaneous sounds: ", 10, listStereo->Down()+4); editMaxSounds = AddEditBox(text->Right(), text->Top(), 50); editMaxSounds->SetNumeric(1, 512, 1); y = DrawHLine(editMaxSounds->Down() + 2); text = AddText(" Icon file: ", 10, y + 2); iconPath = AddListDirectory(text->Right(), text->Top()); iconPath->SetToolTip(TIP_GAMESETTINGS_ICON); text = AddText(" Game title: ", 10, iconPath->Down() + 4); gameTitle = AddEditBox(text->Right(), text->Top(), 150); text = AddText("Game background color: ", 10, gameTitle->Down() + 4); backgroundColor = new ColorSample(this, text->Right(), text->Top(), 32); backgroundColor->SetToolTip(TIP_GAMESETTINGS_BACKGROUNDCOLOR); //Network if(Tutorial::IsCompatible(VERSION_NETWORK) && GAME_EDITOR_VERSION >= VERSION_NETWORK) { y = DrawHLine(backgroundColor->Down() + 2); text = AddText(" Game ID: ", 10, y); gameID = AddEditBox(text->Right(), text->Top(), 256); text = AddText("Network Port: ", 10, gameID->Down() + 4); gamePort = AddEditBox(text->Right(), text->Top(), 64); text = AddText("Use Game Editor Server: ", 10, gamePort->Down() + 4); listGameServer = AddListPop(text->Right() + 2, text->Top(), 32, 0, LS_GAMESERVER); listGameServer->SetToolTip(TIP_GAMESETTINGS_GAME_SERVER); text = AddText(" Auto Start Network: ", 10, listGameServer->Down() + 4); listAutoStartNetwork = AddListPop(text->Right() + 2, text->Top(), 32, 0, LS_AUTOSTART_NETWORK); listAutoStartNetwork->SetToolTip(TIP_GAMESETTINGS_AUTO_START_NETWORK); y = listAutoStartNetwork->Down() + 2; } else { y = backgroundColor->Down() + 2; } //PocketPC y = DrawHLine(y); listPocketKeys = AddListPop(10, y, 256, 0, LS_POCKET_KEYS, "Pocket PC and GP2X Keys"); listPocketKeys->SetToolTip(TIP_GAMESETTINGS_POCKET_KEYS); //Close y = DrawHLine(listPocketKeys->Down() + 2); button = AddButton("Ok", Width()/2 - 70, y, 0, 0, BT_ADD); SetConfirmButton(button); button = AddButton("Cancel", button->Right()+8, y, 0, 0, BT_CLOSE); SetCancelButton(button); //Populate resolutions char buf[64]; if(Tutorial::IsOff()) { SDL_Rect **modes; const SDL_VideoInfo *vinfo = SDL_GetVideoInfo(); /* Get available fullscreen/hardware modes */ modes=SDL_ListModes(vinfo->vfmt, VIDEO_FLAGS | SDL_FULLSCREEN); if(modes != (SDL_Rect **)0 && modes != (SDL_Rect **)-1) { for(int i=0;modes[i];++i) { sprintf(buf, "%d x %d", modes[i]->w, modes[i]->h); listRes->AddText(buf); } } } else { //Don't change in different machines listRes->AddText("1280 x 1024"); listRes->AddText("1280 x 960"); listRes->AddText("1280 x 768"); listRes->AddText("1280 x 720"); listRes->AddText("1152 x 864"); listRes->AddText("1024 x 768"); listRes->AddText("848 x 480"); listRes->AddText("800 x 600"); listRes->AddText("720 x 576"); listRes->AddText("720 x 480"); listRes->AddText("640 x 480"); listRes->AddText("640 x 400"); listRes->AddText("512 x 384"); listRes->AddText("480 x 360"); listRes->AddText("400 x 300"); listRes->AddText("320 x 240"); listRes->AddText("320 x 200"); } if(Tutorial::IsCompatible(VERSION_OUT_OF_VISION_OPTIMIZATION)) { listRes->AddText("240 x 320"); listRes->AddText("240 x 320 Pocket PC"); listRes->AddText("240 x 320 Pocket PC Upside down"); listRes->AddText("320 x 240 Pocket PC Rotate left"); listRes->AddText("320 x 240 Pocket PC Rotate right"); listRes->AddText("480 x 640 Pocket PC"); listRes->AddText("480 x 640 Pocket PC Upside down"); listRes->AddText("640 x 480 Pocket PC Rotate left"); listRes->AddText("640 x 480 Pocket PC Rotate right"); listRes->AddText("800 x 480 Pocket PC Rotate left"); listRes->AddText("800 x 480 Pocket PC Rotate right"); //No changes in screen orientation now (don't have the w > h information) listRes->AddText("240 x 240 Pocket PC"); listRes->AddText("480 x 480 Pocket PC"); //Smartphone listRes->AddText("176 x 220 Smartphone"); listRes->AddText("160 x 240 Smartphone"); listRes->AddText("208 x 240 Smartphone"); listRes->AddText("240 x 320 Smartphone"); //HPC listRes->AddText("640 x 240 Handheld PC"); listRes->AddText("640 x 480 Handheld PC"); listRes->AddText("800 x 480 Handheld PC"); listRes->AddText("800 x 600 Handheld PC"); //GP2X listRes->AddText("320 x 240 GP2X"); listRes->AddText("640 x 480 GP2X"); // Apple iPhone // AKR listRes->AddText("320 x 480 iPhone"); listRes->AddText("480 x 320 iPhone Rotate left"); // Apple iPad // AKR listRes->AddText("768 x 1024 iPad"); listRes->AddText("1024 x 768 iPad Rotate left"); } else { listRes->AddText("240 x 320 Pocket PC"); } listFull->AddText("Full screen"); listFull->AddText("Window"); listHz->AddText("44100 Hz"); listHz->AddText("22050 Hz"); listHz->AddText("11025 Hz"); listStereo->AddText("Stereo"); listStereo->AddText("Mono"); listMouse->AddText("Show mouse"); listMouse->AddText("Hide mouse"); if(listSuspend) { listSuspend->AddText("Yes"); listSuspend->AddText("No"); if(GameControl::Get()->getSuspendGameIfLostFocus()) listSuspend->SetItem("Yes"); else listSuspend->SetItem("No"); } if(listAutoStartNetwork) { listAutoStartNetwork->AddText("Yes"); listAutoStartNetwork->AddText("No"); if(GameControl::Get()->getAutoStartNetwork()) listAutoStartNetwork->SetItem("Yes"); else listAutoStartNetwork->SetItem("No"); } if(listGameServer) { listGameServer->AddText("Yes"); listGameServer->AddText("No"); if(GameControl::Get()->getUseGameEditorServer()) listGameServer->SetItem("Yes"); else listGameServer->SetItem("No"); } if(listESC) { listESC->AddText("Yes"); listESC->AddText("No"); if(GameControl::Get()->getUseESCKeyToExit()) listESC->SetItem("Yes"); else listESC->SetItem("No"); } if(listMotion) { listMotion->AddText("Yes"); listMotion->AddText("No"); if(GameControl::Get()->getUseMotionCorrection()) listMotion->SetItem("Yes"); else listMotion->SetItem("No"); } if(gameID) { gameID->SetText(GameControl::Get()->getGameID()); } if(gamePort) { gamePort->SetText(GameControl::Get()->getGamePort()); } if(GameControl::Get()->getFullScreen()) listFull->SetItem("Full screen"); else listFull->SetItem("Window"); if(GameControl::Get()->getStereo()) listStereo->SetItem("Stereo"); else listStereo->SetItem("Mono"); if(GameControl::Get()->getShowMouse()) listMouse->SetItem("Show mouse"); else listMouse->SetItem("Hide mouse"); if(editViewSafeMargin) { editViewSafeMargin->SetText((int)GameControl::Get()->getViewSafeMargin()); } sprintf(buf, "%ld Hz", GameControl::Get()->getAudioSamplerRate()); listHz->SetItem(buf); sprintf(buf, "%d x %d", GameControl::Get()->getGameWidth(), GameControl::Get()->getGameHeight()); listRes->SetItem(buf); editX->SetText(GameControl::Get()->getGameWidth()); editY->SetText(GameControl::Get()->getGameHeight()); editFps->SetText(GameControl::Get()->getFrameRate()); editMaxSounds->SetText(GameControl::Get()->getMaximumSounds()); bFlipPocketPCScreen = GameControl::Get()->getFlipPocketPCScreen(); gedString res(buf); if(res == "240 x 320") { if(bFlipPocketPCScreen) { listRes->SetText("240 x 320 Up. down"); } } else if(res == "320 x 240") { if(bFlipPocketPCScreen) { listRes->SetText("320 x 240 Rot.right"); } else { listRes->SetText("320 x 240 Rot. left"); } } else if(res == "480 x 640") { if(bFlipPocketPCScreen) { listRes->SetText("480 x 640 Up. down"); } else { listRes->SetText("480 x 640 Pocket PC"); } } else if(res == "640 x 480") { if(bFlipPocketPCScreen) { listRes->SetText("640 x 480 Rot.right"); } else { //listRes->SetText("640 x 480 Rot. left"); listRes->SetText("640 x 480"); } } else if(res == "320 x 480") { listRes->SetText("320 x 480 iPhone"); } else if(res == "480 x 320") { listRes->SetText("480 x 320 Rot.left"); } else if(res == "768 x 1024") { listRes->SetText("768x1024 iPad"); } else if(res == "800 x 480") { if(bFlipPocketPCScreen) { listRes->SetText("800 x 480 Rot.right"); } else { listRes->SetText("800 x 480"); } } else if(res == "240 x 240") { listRes->SetText("240 x 240 Pocket PC"); } else if(res == "480 x 480") { listRes->SetText("480 x 480 Pocket PC"); } else if(res == "176 x 220") { listRes->SetText("176 x 220 Smartphone"); } else if(res == "160 x 240") { listRes->SetText("160 x 240 Smartphone"); } else if(res == "208 x 240") { listRes->SetText("208 x 240 Smartphone"); } iconPath->AddFilter("tga"); iconPath->AddFilter("bmp"); iconPath->AddFilter("pnm"); iconPath->AddFilter("xpm"); iconPath->AddFilter("xcf"); iconPath->AddFilter("pcx"); iconPath->AddFilter("gif"); iconPath->AddFilter("jpg"); iconPath->AddFilter("jpeg"); iconPath->AddFilter("jpe"); iconPath->AddFilter("jfif"); iconPath->AddFilter("tif"); iconPath->AddFilter("tiff"); iconPath->AddFilter("iff"); iconPath->AddFilter("lbm"); iconPath->AddFilter("png"); iconPath->AddFilter("ico"); //iconPath->SetText(GameControl::Get()->getIconPath()); if(!GameControl::Get()->getIconPath().empty()) { gedString file, dir; SplitPath(GameControl::Get()->getIconPath(), file, dir); chdir(dir.c_str()); iconPath->AddText(file); iconPath->SetItem(file); } gameTitle->SetText(GameControl::Get()->getGameTitle()); backgroundColor->setColor(GameControl::Get()->getBackGroundColor()); SetPocketKeys(); }