/** * @brief Sets a system's known state. * * @usage s:setKnown( false ) -- Makes system unknown. * @luaparam s System to set known. * @luaparam b Whether or not to set as known (defaults to false). * @luaparam r Whether or not to iterate over the system's assets and jump points (defaults to false). * @luafunc setKnown( s, b ) */ static int systemL_setknown( lua_State *L ) { int b, r, i; StarSystem *sys; r = 0; sys = luaL_validsystem(L, 1); b = lua_toboolean(L, 2); if (lua_gettop(L) > 2) r = lua_toboolean(L, 3); if (b) sys_setFlag( sys, SYSTEM_KNOWN ); else sys_rmFlag( sys, SYSTEM_KNOWN ); if (r) { if (b) { for (i=0; i < sys->nplanets; i++) planet_setKnown( sys->planets[i] ); for (i=0; i < sys->njumps; i++) jp_setFlag( &sys->jumps[i], JP_KNOWN ); } else { for (i=0; i < sys->nplanets; i++) planet_rmFlag( sys->planets[i], PLANET_KNOWN ); for (i=0; i < sys->njumps; i++) jp_rmFlag( &sys->jumps[i], JP_KNOWN ); } } return 0; }
/** * @brief Marks maps around a radius of currenty system as known. * * @param targ_sys System at center of the "known" circle. * @param r Radius (in jumps) to mark as known. * @return 0 on success. */ int map_map( const char* targ_sys, int r ) { int i, dep; StarSystem *sys, *jsys; SysNode *closed, *open, *cur, *neighbour; A_gc = NULL; open = closed = NULL; if (targ_sys == NULL) sys = cur_system; else sys = system_get( targ_sys ); sys_setFlag(sys,SYSTEM_KNOWN); open = A_newNode( sys, NULL ); open->r = 0; while ((cur = A_lowest(open)) != NULL) { /* mark system as known and go to next */ sys = cur->sys; dep = cur->r; sys_setFlag(sys,SYSTEM_KNOWN); open = A_rm( open, sys ); closed = A_add( closed, cur ); /* check it's jumps */ for (i=0; i<sys->njumps; i++) { jsys = system_getIndex( cur->sys->jumps[i] ); /* System has already been parsed or is too deep */ if ((A_in(closed,jsys) != NULL) || (dep+1 > r)) continue; /* create new node and such */ neighbour = A_newNode( jsys, NULL ); neighbour->r = dep+1; open = A_add( open, neighbour ); } } A_freeList(A_gc); return 0; }
/** * @brief Adds a system. * * @usage system.createSystem( "name", posX, posY, stars,radius,interference,nebu_volatility,nebu_density,"gfx_BackgroundSpaceName",known) -- Creates a system. * * @luaparam name Name of the system. Must not be already taken. * @luaparam posX X coordinate on the map * @luaparam posY Y coordinate on the map * @luaparam stars Star density * @luaparam radius Radius of the system * @luaparam interference * @luaparam nebu_volatility * @luaparam nebu_density * @luaparam background Optional background script to use * @luaparam known Whether the system is known to the player * @luareturn The ID of the NPC to pass to npcRm. * @luafunc createSystem( name, posX, posY, stars,radius,background,known ) */ static int systemL_createSystem( lua_State *L ) { StarSystem *sys; const char* name; double posX,posY; int stars; double radius,interference,nebu_volatility,nebu_density; const char* background; const char* zone; int known; /* Handle parameters. */ name = luaL_checkstring(L, 1); posX = luaL_checknumber(L, 2); posY = luaL_checknumber(L, 3); stars = luaL_checknumber(L, 4); radius = luaL_checknumber(L, 5); interference = luaL_checknumber(L, 6); nebu_volatility = luaL_checknumber(L, 7); nebu_density = luaL_checknumber(L, 8); background = luaL_checkstring(L, 9); zone = luaL_checkstring(L, 10); known = lua_toboolean(L, 11); sys = system_createNewSystem(name); if (sys==NULL) { return -1; } sys->pos.x=posX; sys->pos.y=posY; sys->stars=stars; sys->radius=radius; sys->interference=interference; sys->nebu_volatility=nebu_volatility; sys->nebu_density=nebu_density; if (background!=NULL && strlen(background)>0) sys->background=strdup(background); if (zone!=NULL && strlen(zone)>0) sys->zone=strdup(zone); if (known) sys_setFlag( sys, SYSTEM_KNOWN ); sys->transient=1; return 0; }
/** * @brief Activates a claim on a system. * * @param claim Claim to activate. */ void claim_activate( SysClaim_t *claim ) { int i; /* Make sure something to activate. */ if (claim->ids == NULL) return; /* Add flags. */ for (i=0; i<array_size(claim->ids); i++) sys_setFlag( system_getIndex(claim->ids[i]), SYSTEM_CLAIMED ); }
/** * @brief Sets a system's known state. * * @usage s:setKnown( false ) -- Makes system unknown. * @luaparam s System to set known. * @luaparam b Whether or not to set as known (defaults to false). * @luafunc setKnown( s, b ) */ static int systemL_setknown( lua_State *L ) { int b; StarSystem *sys; sys = luaL_validsystem(L, 1); b = lua_toboolean(L, 2); if (b) sys_setFlag( sys, SYSTEM_KNOWN ); else sys_rmFlag( sys, SYSTEM_KNOWN ); return 0; }
/** * @brief Marks the system of the computer mission to reflect where it will head to. * * Does not modify other markers. * * @param misn Mission to mark. */ void mission_sysComputerMark( Mission* misn ) { StarSystem *sys; int i, n; /* Clear markers. */ space_clearComputerMarkers(); /* Set all the markers. */ if (misn->markers != NULL) { n = array_size(misn->markers); for (i=0; i<n; i++) { sys = system_getIndex( misn->markers[i].sys ); sys_setFlag( sys,SYSTEM_CMARKED ); } } }
/** * @brief Sets a system's known state. * * @usage s:setKnown( false ) -- Makes system unknown. * @luatparam System s System to set known. * @luatparam[opt=false] boolean b Whether or not to set as known. * @luatparam[opt=false] boolean r Whether or not to iterate over the system's assets and jump points. * @luafunc setKnown( s, b, r ) */ static int systemL_setknown( lua_State *L ) { int b, r, i; StarSystem *sys; NLUA_CHECKRW(L); r = 0; sys = luaL_validsystem(L, 1); b = lua_toboolean(L, 2); if (lua_gettop(L) > 2) r = lua_toboolean(L, 3); if (b) sys_setFlag( sys, SYSTEM_KNOWN ); else sys_rmFlag( sys, SYSTEM_KNOWN ); if (r) { if (b) { for (i=0; i < sys->nplanets; i++) planet_setKnown( sys->planets[i] ); for (i=0; i < sys->njumps; i++) jp_setFlag( &sys->jumps[i], JP_KNOWN ); } else { for (i=0; i < sys->nplanets; i++) planet_rmFlag( sys->planets[i], PLANET_KNOWN ); for (i=0; i < sys->njumps; i++) jp_rmFlag( &sys->jumps[i], JP_KNOWN ); } } /* Update outfits image array. */ outfits_updateEquipmentOutfits(); return 0; }