/** * @brief Creates a new system. */ static void uniedit_newSys( double x, double y ) { char *name; StarSystem *sys; /* Get name. */ name = dialogue_inputRaw( "New Star System Creation", 1, 32, "What do you want to name the new system?" ); /* Abort. */ if (name == NULL) { dialogue_alert( "Star System creation aborted!" ); return; } /* Make sure there is no collision. */ if (uniedit_checkName( name )) { free(name); uniedit_newSys( x, y ); return; } /* Create the system. */ sys = system_new(); sys->name = name; sys->pos.x = x; sys->pos.y = y; sys->stars = 400; sys->radius = 10000.; /* Select new system. */ uniedit_deselect(); uniedit_selectAdd( sys ); }
/** * @brief Creates a dialogue that allows the player to write a message. * * You must free the result if it's not null. * * @param title Title of the dialogue window. * @param min Minimum length of the message (must be non-zero). * @param max Maximum length of the message (must be non-zero). * @param fmt Printf style message to display on the dialogue. * @return The message the player typed or NULL if it was cancelled. */ char* dialogue_input( const char* title, int min, int max, const char *fmt, ... ) { char msg[512]; va_list ap; if (input_dialogue.input_wid) return NULL; if (fmt == NULL) return NULL; else { /* get the message */ va_start(ap, fmt); vsnprintf(msg, 512, fmt, ap); va_end(ap); } return dialogue_inputRaw( title, min, max, msg ); }
/** * @brief Creates a window that allows player to write text input. * * @usage name = tk.input( "Name", 3, 20, "Enter your name:" ) * * @luaparam title Title of the window. * @luaparam min Minimum characters to accept (must be greater than 0). * @luaparam max Maximum characters to accept. * @luaparam str Text to display in the window. * @luareturn nil if input was canceled or a string with the text written. * @luafunc input( title, min, max, str ) */ static int tk_input( lua_State *L ) { const char *title, *str; char *ret; int min, max; NLUA_MIN_ARGS(4); title = luaL_checkstring(L,1); min = luaL_checkint(L,2); max = luaL_checkint(L,3); str = luaL_checkstring(L,4); ret = dialogue_inputRaw( title, min, max, str ); if (ret != NULL) { lua_pushstring(L, ret); free(ret); } else lua_pushnil(L); return 1; }
/** * @brief Creates a new system. */ static void uniedit_newSys( double x, double y ) { char *name; StarSystem *sys; /* Get name. */ name = dialogue_inputRaw( "New Star System Creation", 1, 32, "What do you want to name the new system?" ); /* Abort. */ if (name == NULL) { dialogue_alert( "Star System creation aborted!" ); return; } /* Make sure there is no collision. */ if (uniedit_checkName( name )) { free(name); uniedit_newSys( x, y ); return; } /* Transform coordinates back to normal if zoomed */ x /= uniedit_zoom; y /= uniedit_zoom; /* Create the system. */ sys = system_new(); sys->name = name; sys->pos.x = x; sys->pos.y = y; sys->stars = STARS_DENSITY_DEFAULT; sys->radius = RADIUS_DEFAULT; /* Select new system. */ uniedit_deselect(); uniedit_selectAdd( sys ); if (conf.devautosave) dsys_saveSystem( sys ); }