Merge fixes.
This commit is contained in:
parent
159d36017b
commit
599c4fc338
|
@ -2,7 +2,7 @@ Changelog
|
|||
|
||||
0.6
|
||||
|
||||
* Added new game mode: Challenges
|
||||
* New game mode: Challenges
|
||||
* Add i18n support
|
||||
|
||||
0.51
|
||||
|
|
|
@ -66,3 +66,4 @@ CC BY-NC-SA 3.0, with the following attribution: Copyright 2015-2016, Stephen J
|
|||
* track-3.mp3, by Alexandr Zhelanov - https://soundcloud.com/alexandr-zhelanov
|
||||
* track-4.mp3, by Alexandr Zhelanov - https://soundcloud.com/alexandr-zhelanov
|
||||
* DST-RailJet-LongSeamlessLoop.ogg, by Deceased Superior Technician - http://opengameart.org/content/railjet-long-seamless-loop
|
||||
* covert_operations.mp3, by artisticdude - http://opengameart.org/content/covert-operations
|
||||
|
|
|
@ -270,7 +270,9 @@ enum
|
|||
WT_BUTTON,
|
||||
WT_IMG_BUTTON,
|
||||
WT_SELECT,
|
||||
WT_SELECT_BUTTON
|
||||
WT_SELECT_BUTTON,
|
||||
WT_KEY_CONFIG,
|
||||
WT_MOUSE_CONFIG
|
||||
};
|
||||
|
||||
enum
|
||||
|
|
|
@ -311,16 +311,15 @@ static void loadObjectives(cJSON *node)
|
|||
battle.objectiveTail->next = o;
|
||||
battle.objectiveTail = o;
|
||||
|
||||
o->active = 1;
|
||||
STRNCPY(o->description, _(cJSON_GetObjectItem(node, "description")->valuestring), MAX_DESCRIPTION_LENGTH);
|
||||
STRNCPY(o->targetName, cJSON_GetObjectItem(node, "targetName")->valuestring, MAX_NAME_LENGTH);
|
||||
o->targetValue = cJSON_GetObjectItem(node, "targetValue")->valueint;
|
||||
o->targetType = lookup(cJSON_GetObjectItem(node, "targetType")->valuestring);
|
||||
o->active = getJSONValue(node, "active", 0);
|
||||
o->active = getJSONValue(node, "active", 1);
|
||||
o->isCondition = getJSONValue(node, "isCondition", 0);
|
||||
|
||||
o->isEliminateAll = getJSONValue(node, "isEliminateAll", 0);
|
||||
if (isEliminateAll)
|
||||
if (o->isEliminateAll)
|
||||
{
|
||||
o->targetValue = 1;
|
||||
}
|
||||
|
@ -378,9 +377,6 @@ static void loadFighters(cJSON *node)
|
|||
groupName = NULL;
|
||||
flags = -1;
|
||||
aiFlags = -1;
|
||||
scatter = 1;
|
||||
active = 1;
|
||||
number = 1;
|
||||
|
||||
types = toTypeArray(cJSON_GetObjectItem(node, "types")->valuestring, &numTypes);
|
||||
side = lookup(cJSON_GetObjectItem(node, "side")->valuestring);
|
||||
|
@ -388,9 +384,9 @@ static void loadFighters(cJSON *node)
|
|||
y = (cJSON_GetObjectItem(node, "y")->valuedouble / BATTLE_AREA_CELLS) * BATTLE_AREA_HEIGHT;
|
||||
name = getJSONValueStr(node, "name", NULL);
|
||||
groupName = getJSONValueStr(node, "groupName", NULL);
|
||||
number = getJSONValue(node, "number", 0);
|
||||
scatter = getJSONValue(node, "scatter", 0);
|
||||
active = getJSONValue(node, "active", 0);
|
||||
number = getJSONValue(node, "number", 1);
|
||||
scatter = getJSONValue(node, "scatter", 1);
|
||||
active = getJSONValue(node, "active", 1);
|
||||
|
||||
if (cJSON_GetObjectItem(node, "flags"))
|
||||
{
|
||||
|
@ -484,20 +480,17 @@ static void loadCapitalShips(cJSON *node)
|
|||
{
|
||||
name = NULL;
|
||||
groupName = NULL;
|
||||
scatter = 1;
|
||||
active = 1;
|
||||
number = 1;
|
||||
flags = -1;
|
||||
|
||||
types = toTypeArray(cJSON_GetObjectItem(node, "types")->valuestring, &numTypes);
|
||||
side = lookup(cJSON_GetObjectItem(node, "side")->valuestring);
|
||||
x = (cJSON_GetObjectItem(node, "x")->valuedouble / BATTLE_AREA_CELLS) * BATTLE_AREA_WIDTH;
|
||||
y = (cJSON_GetObjectItem(node, "y")->valuedouble / BATTLE_AREA_CELLS) * BATTLE_AREA_HEIGHT;
|
||||
name = cJSON_GetObjectItem(node, "name", NULL);
|
||||
name = getJSONValueStr(node, "name", NULL);
|
||||
groupName = getJSONValueStr(node, "groupName", NULL);
|
||||
number = getJSONValueStr(node, "number", 0);
|
||||
scatter = getJSONValueStr(node, "scatter", 0);
|
||||
active = getJSONValue(node, "active", 0);
|
||||
number = getJSONValue(node, "number", 1);
|
||||
scatter = getJSONValue(node, "scatter", 1);
|
||||
active = getJSONValue(node, "active", 1);
|
||||
|
||||
if (cJSON_GetObjectItem(node, "flags"))
|
||||
{
|
||||
|
@ -576,19 +569,12 @@ static void loadEntities(cJSON *node)
|
|||
y = (cJSON_GetObjectItem(node, "y")->valuedouble / BATTLE_AREA_CELLS) * BATTLE_AREA_HEIGHT;
|
||||
name = NULL;
|
||||
groupName = NULL;
|
||||
number = 1;
|
||||
active = 1;
|
||||
scatter = 1;
|
||||
|
||||
name = getJSONValueStr(node, "name", NULL);
|
||||
|
||||
groupName = getJSONValueStr(node, "groupName", NULL);
|
||||
|
||||
number = getJSONValue(node, "number", 0);
|
||||
|
||||
active = getJSONValue(node, "active", 0);
|
||||
|
||||
scatter = getJSONValue(node, "scatter", 0);
|
||||
number = getJSONValue(node, "number", 1);
|
||||
active = getJSONValue(node, "active", 1);
|
||||
scatter = getJSONValue(node, "scatter", 1);
|
||||
|
||||
for (i = 0 ; i < number ; i++)
|
||||
{
|
||||
|
@ -659,24 +645,18 @@ static void loadItems(cJSON *node)
|
|||
y = (cJSON_GetObjectItem(node, "y")->valuedouble / BATTLE_AREA_CELLS) * BATTLE_AREA_HEIGHT;
|
||||
name = NULL;
|
||||
groupName = NULL;
|
||||
number = 1;
|
||||
active = 1;
|
||||
|
||||
name = getJSONValueStr(node, "name", NULL);
|
||||
|
||||
groupName = getJSONValueStr(node, "groupName", NULL);
|
||||
|
||||
number = getJSONValue(node, "number", 0);
|
||||
|
||||
scatter = getJSONValue(node, "scatter", 0);
|
||||
number = getJSONValue(node, "number", 1);
|
||||
scatter = getJSONValue(node, "scatter", 1);
|
||||
active = getJSONValue(node, "active", 1);
|
||||
|
||||
if (cJSON_GetObjectItem(node, "flags"))
|
||||
{
|
||||
flags = flagsToLong(cJSON_GetObjectItem(node, "flags")->valuestring, &addFlags);
|
||||
}
|
||||
|
||||
active = getJSONValue(node, "active", 0);
|
||||
|
||||
for (i = 0 ; i < number ; i++)
|
||||
{
|
||||
e = spawnItem(type);
|
||||
|
@ -734,8 +714,6 @@ static void loadLocations(cJSON *node)
|
|||
|
||||
while (node)
|
||||
{
|
||||
active = 1;
|
||||
|
||||
l = malloc(sizeof(Location));
|
||||
memset(l, 0, sizeof(Location));
|
||||
battle.locationTail->next = l;
|
||||
|
@ -747,7 +725,7 @@ static void loadLocations(cJSON *node)
|
|||
|
||||
l->size = cJSON_GetObjectItem(node, "size")->valueint;
|
||||
|
||||
active = getJSONValue(node, "active", 0);
|
||||
active = getJSONValue(node, "active", 1);
|
||||
|
||||
l->x += (SCREEN_WIDTH / 2);
|
||||
l->y += (SCREEN_HEIGHT / 2);
|
||||
|
|
|
@ -29,3 +29,43 @@ void clearControl(int type)
|
|||
{
|
||||
app.keyboard[app.keyControls[type]] = 0;
|
||||
}
|
||||
|
||||
void initControlsDisplay(void)
|
||||
{
|
||||
getWidget("keyMissile", "controls")->value = app.keyControls[CONTROL_MISSILE];
|
||||
getWidget("keyBoost", "controls")->value = app.keyControls[CONTROL_BOOST];
|
||||
getWidget("keyECM", "controls")->value = app.keyControls[CONTROL_ECM];
|
||||
getWidget("keyBrake", "controls")->value = app.keyControls[CONTROL_BRAKE];
|
||||
getWidget("keyRadar", "controls")->value = app.keyControls[CONTROL_RADAR];
|
||||
getWidget("keyTarget", "controls")->value = app.keyControls[CONTROL_TARGET];
|
||||
getWidget("keyGuns", "controls")->value = app.keyControls[CONTROL_GUNS];
|
||||
getWidget("keyPrevFighter", "controls")->value = app.keyControls[CONTROL_PREV_FIGHTER];
|
||||
getWidget("keyNextFighter", "controls")->value = app.keyControls[CONTROL_NEXT_FIGHTER];
|
||||
}
|
||||
|
||||
void drawControls(void)
|
||||
{
|
||||
SDL_Rect r;
|
||||
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 128);
|
||||
SDL_RenderFillRect(app.renderer, NULL);
|
||||
SDL_SetRenderDrawBlendMode(app.renderer, SDL_BLENDMODE_NONE);
|
||||
|
||||
r.w = 800;
|
||||
r.h = 650;
|
||||
r.x = (SCREEN_WIDTH / 2) - r.w / 2;
|
||||
r.y = (SCREEN_HEIGHT / 2) - r.h / 2;
|
||||
|
||||
SDL_SetRenderDrawColor(app.renderer, 0, 0, 0, 0);
|
||||
SDL_RenderFillRect(app.renderer, &r);
|
||||
SDL_SetRenderDrawColor(app.renderer, 200, 200, 200, 255);
|
||||
SDL_RenderDrawRect(app.renderer, &r);
|
||||
|
||||
drawText(SCREEN_WIDTH / 2, 50, 28, TA_CENTER, colors.white, _("Controls"));
|
||||
|
||||
SDL_SetRenderDrawColor(app.renderer, 128, 128, 128, 255);
|
||||
SDL_RenderDrawLine(app.renderer, r.x, r.y + 65, r.x + r.w, r.y + 65);
|
||||
|
||||
drawWidgets("controls");
|
||||
}
|
||||
|
|
|
@ -20,5 +20,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#include "../common.h"
|
||||
|
||||
extern void drawText(int x, int y, int size, int align, SDL_Color c, const char *format, ...);
|
||||
extern char *getTranslatedString(char *string);
|
||||
extern Widget *getWidget(const char *name, const char *group);
|
||||
extern void drawWidgets(char *groupName);
|
||||
|
||||
extern App app;
|
||||
extern Colors colors;
|
||||
extern Game game;
|
||||
|
|
|
@ -91,6 +91,8 @@ void initLookups(void)
|
|||
addLookup("WT_BUTTON", WT_BUTTON);
|
||||
addLookup("WT_SELECT", WT_SELECT);
|
||||
addLookup("WT_IMG_BUTTON", WT_IMG_BUTTON);
|
||||
addLookup("WT_KEY_CONFIG", WT_KEY_CONFIG);
|
||||
addLookup("WT_MOUSE_CONFIG", WT_MOUSE_CONFIG);
|
||||
|
||||
addLookup("SIDE_ALLIES", SIDE_ALLIES);
|
||||
addLookup("SIDE_PIRATE", SIDE_PIRATE);
|
||||
|
|
|
@ -60,7 +60,7 @@ void showOKDialog(void (*callback)(void), const char *format, ...)
|
|||
ok->action = callback;
|
||||
|
||||
enableTimer = FPS;
|
||||
ok->enabled = okCancelOK = okCancelCancel = 0;
|
||||
ok->enabled = okCancelOK->enabled = okCancelCancel->enabled = 0;
|
||||
}
|
||||
|
||||
void showOKCancelDialog(void (*okCallback)(void), void (*cancelCallback)(void), const char *format, ...)
|
||||
|
@ -81,7 +81,7 @@ void showOKCancelDialog(void (*okCallback)(void), void (*cancelCallback)(void),
|
|||
okCancelCancel->action = cancelCallback;
|
||||
|
||||
enableTimer = FPS;
|
||||
ok->enabled = okCancelOK = okCancelCancel = 0;
|
||||
ok->enabled = okCancelOK->enabled = okCancelCancel->enabled = 0;
|
||||
}
|
||||
|
||||
void doModalDialog(void)
|
||||
|
@ -93,7 +93,7 @@ void doModalDialog(void)
|
|||
enableTimer = MAX(enableTimer - 1, 0);
|
||||
if (!enableTimer)
|
||||
{
|
||||
ok->enabled = okCancelOK = okCancelCancel = 1;
|
||||
ok->enabled = okCancelOK->enabled = okCancelCancel->enabled = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,8 +25,12 @@ static void changeSoundVolume(char *value);
|
|||
static void changeMusicVolume(char *value);
|
||||
static void changeFullscreen(char *value);
|
||||
static void ok(void);
|
||||
static void controlsOK(void);
|
||||
static void drawMain(void);
|
||||
static void controls(void);
|
||||
|
||||
static void (*returnFromOptions)(void);
|
||||
static int show;
|
||||
|
||||
void initOptions(void (*rtn)(void))
|
||||
{
|
||||
|
@ -38,7 +42,9 @@ void initOptions(void (*rtn)(void))
|
|||
getWidget("soundVolume", "options")->onChange = changeSoundVolume;
|
||||
getWidget("musicVolume", "options")->onChange = changeMusicVolume;
|
||||
getWidget("fullscreen", "options")->onChange = changeFullscreen;
|
||||
getWidget("controls", "options")->action = controls;
|
||||
getWidget("ok", "options")->action = ok;
|
||||
getWidget("ok", "controls")->action = controlsOK;
|
||||
|
||||
sprintf(optionStr, "%d x %d", app.winWidth, app.winHeight);
|
||||
setWidgetOption("windowSize", "options", optionStr);
|
||||
|
@ -57,9 +63,25 @@ void initOptions(void (*rtn)(void))
|
|||
#endif
|
||||
|
||||
returnFromOptions = rtn;
|
||||
|
||||
show = SHOW_MAIN;
|
||||
}
|
||||
|
||||
void drawOptions(void)
|
||||
{
|
||||
switch (show)
|
||||
{
|
||||
case SHOW_MAIN:
|
||||
drawMain();
|
||||
break;
|
||||
|
||||
case SHOW_CONTROLS:
|
||||
drawControls();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void drawMain(void)
|
||||
{
|
||||
SDL_Rect r;
|
||||
|
||||
|
@ -95,6 +117,13 @@ void drawOptions(void)
|
|||
limitTextWidth(0);
|
||||
}
|
||||
|
||||
static void controls(void)
|
||||
{
|
||||
initControlsDisplay();
|
||||
|
||||
show = SHOW_CONTROLS;
|
||||
}
|
||||
|
||||
static void changeWindowSize(char *value)
|
||||
{
|
||||
sscanf(value, "%d x %d", &app.winWidth, &app.winHeight);
|
||||
|
@ -125,3 +154,8 @@ static void ok(void)
|
|||
|
||||
returnFromOptions();
|
||||
}
|
||||
|
||||
static void controlsOK(void)
|
||||
{
|
||||
show = SHOW_MAIN;
|
||||
}
|
||||
|
|
|
@ -22,6 +22,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
|
||||
#include "SDL2/SDL_mixer.h"
|
||||
|
||||
#define SHOW_MAIN 0
|
||||
#define SHOW_CONTROLS 1
|
||||
|
||||
extern void selectWidget(const char *name, const char *group);
|
||||
extern Widget *getWidget(const char *name, const char *group);
|
||||
extern void drawWidgets(char *groupName);
|
||||
|
@ -30,6 +33,8 @@ extern void drawText(int x, int y, int size, int align, SDL_Color c, const char
|
|||
extern void saveConfig(void);
|
||||
extern void limitTextWidth(int width);
|
||||
extern char *getTranslatedString(char *string);
|
||||
extern void drawControls(void);
|
||||
extern void initControlsDisplay(void);
|
||||
|
||||
extern App app;
|
||||
extern Colors colors;
|
||||
|
|
|
@ -42,8 +42,8 @@ void initResources(void)
|
|||
backgrounds[i] = malloc(sizeof(char) * MAX_FILENAME_LENGTH);
|
||||
sprintf(backgrounds[i], "gfx/backgrounds/%s", filenames[i]);
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "'%s' added to AUTO resources list", filenames[i]);
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Adding AUTO %s", filenames[i]);
|
||||
|
||||
free(filenames[i]);
|
||||
}
|
||||
|
||||
|
@ -56,9 +56,9 @@ void initResources(void)
|
|||
{
|
||||
planets[i] = malloc(sizeof(char) * MAX_FILENAME_LENGTH);
|
||||
sprintf(planets[i], "gfx/planets/%s", filenames[i]);
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "'%s' added to AUTO resources list", filenames[i]);
|
||||
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Adding AUTO %s", filenames[i]);
|
||||
|
||||
free(filenames[i]);
|
||||
}
|
||||
|
||||
|
@ -72,9 +72,9 @@ void initResources(void)
|
|||
{
|
||||
musicFiles[i] = malloc(sizeof(char) * MAX_FILENAME_LENGTH);
|
||||
sprintf(musicFiles[i], "music/battle/%s", filenames[i]);
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "'%s' added to AUTO resources list", filenames[i]);
|
||||
|
||||
|
||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Adding AUTO %s", filenames[i]);
|
||||
|
||||
free(filenames[i]);
|
||||
}
|
||||
|
||||
|
|
|
@ -25,5 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#define MAX_BATTLE_SOUND_DISTANCE 1500
|
||||
|
||||
extern int getDistance(int x1, int y1, int x2, int y2);
|
||||
extern char *getFileLocation(char *filename);
|
||||
|
||||
extern Entity *player;
|
||||
|
|
|
@ -115,10 +115,17 @@ char *getJSONValueStr(cJSON *node, char *name, char *defValue)
|
|||
|
||||
int getJSONValue(cJSON *node, char *name, int defValue)
|
||||
{
|
||||
char *result = getJSONValueStr(node, name, defValue);
|
||||
cJSON *child;
|
||||
|
||||
if (result)
|
||||
if (node)
|
||||
{
|
||||
return aoti(result);
|
||||
child = cJSON_GetObjectItem(node, name);
|
||||
|
||||
if (child)
|
||||
{
|
||||
return child->valueint;
|
||||
}
|
||||
}
|
||||
|
||||
return defValue;
|
||||
}
|
||||
|
|
|
@ -19,3 +19,4 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
*/
|
||||
|
||||
#include "../common.h"
|
||||
#include "../json/cJSON.h"
|
||||
|
|
|
@ -146,6 +146,18 @@ void drawWidgets(const char *group)
|
|||
drawText(w->rect.x + 10, w->rect.y + 2, 20, TA_LEFT, colors.white, w->text);
|
||||
drawText(w->rect.x + w->rect.w - 10, w->rect.y + 2, 20, TA_RIGHT, colors.white, w->options[w->currentOption]);
|
||||
break;
|
||||
|
||||
case WT_KEY_CONFIG:
|
||||
SDL_RenderDrawRect(app.renderer, &w->rect);
|
||||
drawText(w->rect.x + 25, w->rect.y + 2, 20, TA_LEFT, colors.white, w->text);
|
||||
drawText(w->rect.x + w->rect.w - 25, w->rect.y + 2, 20, TA_RIGHT, colors.white, "%d", w->value);
|
||||
break;
|
||||
|
||||
case WT_MOUSE_CONFIG:
|
||||
SDL_RenderDrawRect(app.renderer, &w->rect);
|
||||
drawText(w->rect.x + 25, w->rect.y + 2, 20, TA_LEFT, colors.white, w->text);
|
||||
drawText(w->rect.x + w->rect.w - 25, w->rect.y + 2, 20, TA_RIGHT, colors.white, "%d", w->value);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!w->enabled)
|
||||
|
@ -322,6 +334,18 @@ static void loadWidgetSet(char *filename)
|
|||
createSelectButtons(w);
|
||||
createOptions(w, cJSON_GetObjectItem(node, "options")->valuestring);
|
||||
break;
|
||||
|
||||
case WT_KEY_CONFIG:
|
||||
case WT_MOUSE_CONFIG:
|
||||
STRNCPY(w->text, _(cJSON_GetObjectItem(node, "text")->valuestring), MAX_NAME_LENGTH);
|
||||
w->rect.w = cJSON_GetObjectItem(node, "w")->valueint;
|
||||
w->rect.h = cJSON_GetObjectItem(node, "h")->valueint;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("Widget type %d not handled\n", w->type);
|
||||
exit(1);
|
||||
break;
|
||||
}
|
||||
|
||||
tail->next = w;
|
||||
|
|
Loading…
Reference in New Issue