Example #1
0
/**
 * @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;
}
Example #2
0
File: map.c Project: isfos/naev
/**
 * @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;
}
Example #3
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;
}
Example #4
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 );
}
Example #5
0
/**
 * @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;
}
Example #6
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 );
      }
   }
}
Example #7
0
/**
 * @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;
}