/** * @brief Opens the console. */ void cli_open (void) { unsigned int wid; /* Lazy loading. */ if (cli_state == NULL) if (cli_init()) return; /* Must not be already open. */ if (window_exists( "Lua Console" )) return; /* Create the window. */ wid = window_create( "Lua Console", -1, -1, cli_width, cli_height ); /* Window settings. */ window_setAccept( wid, cli_input ); window_setCancel( wid, window_close ); window_handleKeys( wid, cli_keyhandler ); /* Input box. */ window_addInput( wid, 20, 20, cli_width-60-BUTTON_WIDTH, BUTTON_HEIGHT, "inpInput", LINE_LENGTH, 1 ); /* Buttons. */ window_addButton( wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnClose", "Close", window_close ); /* Custom console widget. */ window_addCust( wid, 20, -40, cli_width-40, cli_height-80-BUTTON_HEIGHT, "cstConsole", 0, cli_render, NULL ); }
/** * @brief Opens the console. */ void cli_open (void) { unsigned int wid; /* Lazy loading. */ if (cli_state == NULL) if (cli_init()) return; /* Make sure main menu isn't open. */ if (menu_isOpen(MENU_MAIN)) return; /* Must not be already open. */ if (window_exists( "Lua Console" )) return; /* Put a friendly message at first. */ if (cli_firstOpen) { char buf[256]; cli_addMessage( "" ); cli_addMessage( "\egWelcome to the Lua console!" ); nsnprintf( buf, sizeof(buf), "\eg "APPNAME" v%s", naev_version(0) ); cli_addMessage( buf ); cli_addMessage( "" ); cli_firstOpen = 0; } /* Create the window. */ wid = window_create( "Lua Console", -1, -1, CLI_WIDTH, CLI_HEIGHT ); /* Window settings. */ window_setAccept( wid, cli_input ); window_setCancel( wid, window_close ); window_handleKeys( wid, cli_keyhandler ); /* Input box. */ window_addInput( wid, 20, 20, CLI_WIDTH-60-BUTTON_WIDTH, BUTTON_HEIGHT, "inpInput", LINE_LENGTH, 1, cli_font ); /* Buttons. */ window_addButton( wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnClose", "Close", window_close ); /* Custom console widget. */ window_addCust( wid, 20, -40, CLI_WIDTH-40, CLI_HEIGHT-80-BUTTON_HEIGHT, "cstConsole", 0, cli_render, NULL, NULL ); /* Cache current height in case the window is resized. */ cli_height = CLI_HEIGHT; }
/** * @brief Opens the map window. */ void map_open (void) { unsigned int wid; StarSystem *cur; int w, h, x, y, rw; /* Not under manual control. */ if (pilot_isFlag( player.p, PILOT_MANUAL_CONTROL )) return; /* Destroy window if exists. */ wid = window_get(MAP_WDWNAME); if (wid > 0) { window_destroy( wid ); return; } /* set position to focus on current system */ map_xpos = cur_system->pos.x; map_ypos = cur_system->pos.y; /* mark systems as needed */ mission_sysMark(); /* Attempt to select current map if none is selected */ if (map_selected == -1) map_selectCur(); /* get the selected system. */ cur = system_getIndex( map_selected ); /* Set up window size. */ w = MAX(600, SCREEN_W - 100); h = MAX(540, SCREEN_H - 100); /* create the window. */ wid = window_create( MAP_WDWNAME, -1, -1, w, h ); window_setCancel( wid, window_close ); window_handleKeys( wid, map_keyHandler ); /* * SIDE TEXT * * $System * * Faction: * $Faction (or Multiple) * * Status: * $Status * * Planets: * $Planet1, $Planet2, ... * * Services: * $Services * * ... * [Autonav] * [ Find ] * [ Close ] */ x = -70; /* Right column X offset. */ y = -20; rw = ABS(x) + 60; /* Right column indented width maximum. */ /* System Name */ window_addText( wid, -90 + 80, y, 160, 20, 1, "txtSysname", &gl_defFont, &cDConsole, cur->name ); y -= 10; /* Faction image */ window_addImage( wid, -90 + 32, y - 32, 0, 0, "imgFaction", NULL, 0 ); y -= 64 + 10; /* Faction */ window_addText( wid, x, y, 90, 20, 0, "txtSFaction", &gl_smallFont, &cDConsole, "Faction:" ); window_addText( wid, x + 50, y-gl_smallFont.h-5, rw, 100, 0, "txtFaction", &gl_smallFont, &cBlack, NULL ); y -= 2 * gl_smallFont.h + 5 + 15; /* Standing */ window_addText( wid, x, y, 90, 20, 0, "txtSStanding", &gl_smallFont, &cDConsole, "Standing:" ); window_addText( wid, x + 50, y-gl_smallFont.h-5, rw, 100, 0, "txtStanding", &gl_smallFont, &cBlack, NULL ); y -= 2 * gl_smallFont.h + 5 + 15; /* Presence. */ window_addText( wid, x, y, 90, 20, 0, "txtSPresence", &gl_smallFont, &cDConsole, "Presence:" ); window_addText( wid, x + 50, y-gl_smallFont.h-5, rw, 100, 0, "txtPresence", &gl_smallFont, &cBlack, NULL ); y -= 2 * gl_smallFont.h + 5 + 15; /* Planets */ window_addText( wid, x, y, 90, 20, 0, "txtSPlanets", &gl_smallFont, &cDConsole, "Planets:" ); window_addText( wid, x + 50, y-gl_smallFont.h-5, rw, 150, 0, "txtPlanets", &gl_smallFont, &cBlack, NULL ); y -= 2 * gl_smallFont.h + 5 + 15; /* Services */ window_addText( wid, x, y, 90, 20, 0, "txtSServices", &gl_smallFont, &cDConsole, "Services:" ); window_addText( wid, x + 50, y-gl_smallFont.h-5, rw, 100, 0, "txtServices", &gl_smallFont, &cBlack, NULL ); y -= 2 * gl_smallFont.h + 5 + 15; /* Close button */ window_addButton( wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnClose", "Close", window_close ); /* Find button */ window_addButton( wid, -20 - (BUTTON_WIDTH+20), 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnFind", "Find", map_inputFind ); /* Autonav button */ window_addButton( wid, -20 - 2*(BUTTON_WIDTH+20), 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnAutonav", "Autonav", player_autonavStartWindow ); /* * Bottom stuff * * [+] [-] Nebula, Interference */ /* Zoom buttons */ window_addButton( wid, 40, 20, 30, 30, "btnZoomIn", "+", map_buttonZoom ); window_addButton( wid, 80, 20, 30, 30, "btnZoomOut", "-", map_buttonZoom ); /* Situation text */ window_addText( wid, 140, 10, w - 80 - 30 - 30, 30, 0, "txtSystemStatus", &gl_smallFont, &cBlack, NULL ); /* * The map itself. */ map_show( wid, 20, -40, w-200, h-100, 1. ); /* Reset zoom. */ map_update( wid ); /* * Disable Autonav button if player lacks fuel. */ if ((player.p->fuel < HYPERSPACE_FUEL) || pilot_isFlag( player.p, PILOT_NOJUMP)) window_disableButton( wid, "btnAutonav" ); }
/** * @brief Opens the system editor interface. */ void uniedit_open( unsigned int wid_unused, char *unused ) { (void) wid_unused; (void) unused; unsigned int wid; /* Pause. */ pause_game(); /* Needed to generate faction disk. */ map_setZoom( 1. ); /* Must have no diffs applied. */ diff_clear(); /* Reset some variables. */ uniedit_mode = UNIEDIT_DEFAULT; uniedit_drag = 0; uniedit_dragSys = 0; uniedit_tsys = NULL; uniedit_tadd = 0; uniedit_zoom = 1.; uniedit_xpos = 0.; uniedit_ypos = 0.; /* Create the window. */ wid = window_create( "Universe Editor", -1, -1, -1, -1 ); window_handleKeys( wid, uniedit_keys ); uniedit_wid = wid; /* Close button. */ window_addButton( wid, -20, 20, BUTTON_WIDTH, BUTTON_HEIGHT, "btnClose", "Close", uniedit_close ); /* Jump toggle. */ window_addButton( wid, -20, 20+(BUTTON_HEIGHT+20)*3, BUTTON_WIDTH, BUTTON_HEIGHT, "btnJump", "Jump", uniedit_btnJump ); /* Rename system. */ window_addButton( wid, -20, 20+(BUTTON_HEIGHT+20)*4, BUTTON_WIDTH, BUTTON_HEIGHT, "btnRename", "Rename", uniedit_btnRename ); /* Edit system. */ window_addButton( wid, -20, 20+(BUTTON_HEIGHT+20)*5, BUTTON_WIDTH, BUTTON_HEIGHT, "btnEdit", "Edit", uniedit_btnEdit ); /* New system. */ window_addButton( wid, -20, 20+(BUTTON_HEIGHT+20)*6, BUTTON_WIDTH, BUTTON_HEIGHT, "btnNew", "New Sys", uniedit_btnNew ); /* Open a system. */ window_addButton( wid, -20, 20+(BUTTON_HEIGHT+20)*7, BUTTON_WIDTH, BUTTON_HEIGHT, "btnOpen", "Open", uniedit_btnOpen ); /* Zoom buttons */ window_addButton( wid, 40, 20, 30, 30, "btnZoomIn", "+", uniedit_buttonZoom ); window_addButton( wid, 80, 20, 30, 30, "btnZoomOut", "-", uniedit_buttonZoom ); /* Presence. */ window_addText( wid, -20, -140, 90, 20, 0, "txtSPresence", &gl_smallFont, &cDConsole, "Presence:" ); window_addText( wid, -20, -140-gl_smallFont.h-5, 80, 100, 0, "txtPresence", &gl_smallFont, &cBlack, "N/A" ); /* Selected text. */ window_addText( wid, 140, 10, SCREEN_W - 80 - 30 - 30 - BUTTON_WIDTH - 20, 30, 0, "txtSelected", &gl_smallFont, &cBlack, NULL ); /* Actual viewport. */ window_addCust( wid, 20, -40, SCREEN_W - 150, SCREEN_H - 100, "cstSysEdit", 1, uniedit_render, uniedit_mouse, NULL ); window_custSetOverlay( wid, "cstSysEdit", uniedit_renderOverlay ); /* Deselect everything. */ uniedit_deselect(); }