[Add] "special" techs. Basically finished tech stuff.
This commit is contained in:
parent
875b6be208
commit
6c50e56894
1
TODO
1
TODO
@ -2,7 +2,6 @@ Vital:
|
|||||||
-- Missions
|
-- Missions
|
||||||
-- Save
|
-- Save
|
||||||
-- Allow multiple ships in storage.
|
-- Allow multiple ships in storage.
|
||||||
-- Tech system.
|
|
||||||
-- Commodities.
|
-- Commodities.
|
||||||
-- Main Menu.
|
-- Main Menu.
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ static void outfits(void) {
|
|||||||
&gl_smallFont, NULL, NULL);
|
&gl_smallFont, NULL, NULL);
|
||||||
|
|
||||||
// Set up the outfits to buy/sell.
|
// Set up the outfits to buy/sell.
|
||||||
outfits = outfit_getTech(&noutfits, planet->tech[0]); // TODO: Special tech.
|
outfits = outfit_getTech(&noutfits, planet->tech, PLANET_TECH_MAX);
|
||||||
window_addList(secondary_wid, 20, 40,
|
window_addList(secondary_wid, 20, 40,
|
||||||
200, OUTFITS_HEIGHT-80, "lstOutfits",
|
200, OUTFITS_HEIGHT-80, "lstOutfits",
|
||||||
outfits, noutfits, 0, outfits_update);
|
outfits, noutfits, 0, outfits_update);
|
||||||
@ -310,7 +310,7 @@ static void shipyard(void) {
|
|||||||
&gl_smallFont, NULL, NULL);
|
&gl_smallFont, NULL, NULL);
|
||||||
|
|
||||||
// Setup the ships to buy/sell.
|
// Setup the ships to buy/sell.
|
||||||
ships = ship_getTech(&nships, planet->tech[0]);
|
ships = ship_getTech(&nships, planet->tech, PLANET_TECH_MAX);
|
||||||
window_addList(secondary_wid, 20, 40,
|
window_addList(secondary_wid, 20, 40,
|
||||||
200, SHIPYARD_HEIGHT-80, "lstShipyard",
|
200, SHIPYARD_HEIGHT-80, "lstShipyard",
|
||||||
ships, nships, 0, shipyard_update);
|
ships, nships, 0, shipyard_update);
|
||||||
|
12
src/outfit.c
12
src/outfit.c
@ -39,15 +39,21 @@ Outfit* outfit_get(const char* name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return all the outfits.
|
// Return all the outfits.
|
||||||
char** outfit_getTech(int* n, const int tech) {
|
char** outfit_getTech(int* n, const int* tech, const int techmax) {
|
||||||
int i;
|
int i, j;
|
||||||
char** outfitnames = malloc(sizeof(Outfit*) * outfits);
|
char** outfitnames = malloc(sizeof(Outfit*) * outfits);
|
||||||
|
|
||||||
*n = 0;
|
*n = 0;
|
||||||
for(i = 0; i < outfits; i++)
|
for(i = 0; i < outfits; i++)
|
||||||
if(outfit_stack[i].tech <= tech) {
|
if(outfit_stack[i].tech <= tech[0]) {
|
||||||
outfitnames[*n] = strdup(outfit_stack[i].name);
|
outfitnames[*n] = strdup(outfit_stack[i].name);
|
||||||
(*n)++;
|
(*n)++;
|
||||||
|
} else {
|
||||||
|
for(j = 0; j < techmax; j++)
|
||||||
|
if(tech[j] == outfit_stack[i].tech) {
|
||||||
|
outfitnames[*n] = strdup(outfit_stack[i].name);
|
||||||
|
(*n)++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actual size is bigger, but it'll just get freed ;).
|
// Actual size is bigger, but it'll just get freed ;).
|
||||||
|
@ -83,7 +83,7 @@ typedef struct Outfit_ {
|
|||||||
|
|
||||||
// Get.
|
// Get.
|
||||||
Outfit* outfit_get(const char* name);
|
Outfit* outfit_get(const char* name);
|
||||||
char** outfit_getTech(int* n, const int tech);
|
char** outfit_getTech(int* n, const int* tech, const int techmax);
|
||||||
// Outfit types.
|
// Outfit types.
|
||||||
int outfit_isWeapon(const Outfit* o);
|
int outfit_isWeapon(const Outfit* o);
|
||||||
int outfit_isLauncher(const Outfit* o);
|
int outfit_isLauncher(const Outfit* o);
|
||||||
|
12
src/ship.c
12
src/ship.c
@ -46,15 +46,21 @@ static char* ship_classes[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Return all the ships in text form.
|
// Return all the ships in text form.
|
||||||
char** ship_getTech(int* n, const int tech) {
|
char** ship_getTech(int* n, const int* tech, const int techmax) {
|
||||||
int i;
|
int i, j;
|
||||||
char** shipnames = malloc(sizeof(Ship*) * ships);
|
char** shipnames = malloc(sizeof(Ship*) * ships);
|
||||||
|
|
||||||
*n = 0;
|
*n = 0;
|
||||||
for(i = 0; i < ships; i++)
|
for(i = 0; i < ships; i++)
|
||||||
if(ship_stack[i].tech <= tech) {
|
if(ship_stack[i].tech <= tech[0]) {
|
||||||
shipnames[*n] = strdup(ship_stack[i].name);
|
shipnames[*n] = strdup(ship_stack[i].name);
|
||||||
(*n)++;
|
(*n)++;
|
||||||
|
} else {
|
||||||
|
for(j = 0; j < techmax; j++)
|
||||||
|
if(tech[j] == ship_stack[i].tech) {
|
||||||
|
shipnames[*n] = strdup(ship_stack[i].name);
|
||||||
|
(*n)++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return shipnames;
|
return shipnames;
|
||||||
|
@ -63,7 +63,7 @@ typedef struct Ship_ {
|
|||||||
|
|
||||||
// Get.
|
// Get.
|
||||||
Ship* ship_get(const char* name);
|
Ship* ship_get(const char* name);
|
||||||
char** ship_getTech(int* n, const int tech);
|
char** ship_getTech(int* n, const int* tech, const int techmax);
|
||||||
char* ship_class(Ship* p);
|
char* ship_class(Ship* p);
|
||||||
|
|
||||||
// Load/quit.
|
// Load/quit.
|
||||||
|
@ -381,12 +381,12 @@ static Planet* planet_get(const char* name) {
|
|||||||
tmp->tech[0] = xml_getInt(ccur);
|
tmp->tech[0] = xml_getInt(ccur);
|
||||||
}
|
}
|
||||||
else if(xml_isNode(ccur, "special")) {
|
else if(xml_isNode(ccur, "special")) {
|
||||||
for(i = 1; i < 8; i++)
|
for(i = 1; i < PLANET_TECH_MAX; i++)
|
||||||
if(tmp->tech[i]==0) {
|
if(tmp->tech[i]==0) {
|
||||||
tmp->tech[i] = xml_getInt(ccur);
|
tmp->tech[i] = xml_getInt(ccur);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(i == 8) WARN("Planet '%s' has tooo many"
|
if(i == PLANET_TECH_MAX) WARN("Planet '%s' has tooo many"
|
||||||
"'special tech' entries", tmp->name);
|
"'special tech' entries", tmp->name);
|
||||||
}
|
}
|
||||||
} while((ccur = ccur->next));
|
} while((ccur = ccur->next));
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
#define MIN_HYPERSPACE_DIST 1500
|
#define MIN_HYPERSPACE_DIST 1500
|
||||||
#define MAX_HYPERSPACE_VEL 25
|
#define MAX_HYPERSPACE_VEL 25
|
||||||
|
|
||||||
|
#define PLANET_TECH_MAX 8
|
||||||
|
|
||||||
// Planet types. I didn't take them from Star Trek, I promise.
|
// Planet types. I didn't take them from Star Trek, I promise.
|
||||||
typedef enum PlanetClass_ {
|
typedef enum PlanetClass_ {
|
||||||
PLANET_CLASS_NULL = 0,
|
PLANET_CLASS_NULL = 0,
|
||||||
@ -55,8 +57,8 @@ typedef struct Planet_ {
|
|||||||
unsigned int services; // Offered services.
|
unsigned int services; // Offered services.
|
||||||
|
|
||||||
// tech[0] stores global tech level (everything that and below) while
|
// tech[0] stores global tech level (everything that and below) while
|
||||||
// tech[1-7] stores the unique tech levels.
|
// tech[1-PLANET_TECH_MAX] stores the unique tech levels.
|
||||||
int tech[8];
|
int tech[PLANET_TECH_MAX];
|
||||||
|
|
||||||
glTexture* gfx_space; // Graphics in space.
|
glTexture* gfx_space; // Graphics in space.
|
||||||
glTexture* gfx_exterior; // Graphics in the exterior.
|
glTexture* gfx_exterior; // Graphics in the exterior.
|
||||||
|
Loading…
Reference in New Issue
Block a user