Updates to title screen.

This commit is contained in:
Steve 2018-03-20 07:29:05 +00:00
parent d43811a32d
commit e0a7a3511e
6 changed files with 70 additions and 24 deletions

View File

@ -42,6 +42,13 @@ void initGame(void)
loadTrophyData(); loadTrophyData();
} }
void newGame(void)
{
destroyGame();
initGame();
}
int addItem(Item *item, int num) int addItem(Item *item, int num)
{ {
int i; int i;

View File

@ -22,17 +22,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "../json/cJSON.h" #include "../json/cJSON.h"
extern Entity *createEntity(char *name); extern Entity *createEntity(char *name);
extern int deleteFile(char *path);
extern int fileExists(const char *filename); extern int fileExists(const char *filename);
extern char **getFileList(const char *dir, int *count);
extern char *getLookupName(const char *prefix, long num); extern char *getLookupName(const char *prefix, long num);
extern int getPercent(float current, float total);
extern Trophy *getTrophy(char *id); extern Trophy *getTrophy(char *id);
extern void loadTrophyData(void);
extern int lookup(char *name); extern int lookup(char *name);
extern char *readFile(const char *filename); extern char *readFile(const char *filename);
extern int writeFile(const char *filename, const char *data);
extern char *timeToString(int seconds, int showHours); extern char *timeToString(int seconds, int showHours);
extern int getPercent(float current, float total); extern int writeFile(const char *filename, const char *data);
extern char **getFileList(const char *dir, int *count);
extern int deleteFile(char *path);
extern void loadTrophyData(void);
extern App app; extern App app;
extern Entity *self; extern Entity *self;

View File

@ -34,12 +34,13 @@ static void doSaveSlot(void);
static void doLoadCancel(void); static void doLoadCancel(void);
static void doOK(void); static void doOK(void);
static void doCancel(void); static void doCancel(void);
static void returnFromOptions(void);
static Texture *atlasTexture; static Texture *atlasTexture;
static Atlas *title; static Atlas *title;
static int recentSaveSlot; static int recentSaveSlot;
static int saveAction; static int saveAction;
static Widget *newGame; static Widget *startNewGame;
static Widget *load; static Widget *load;
static Widget *continueGame; static Widget *continueGame;
static Widget *options; static Widget *options;
@ -58,8 +59,8 @@ void initTitle(void)
title = getImageFromAtlas("gfx/main/title.png"); title = getImageFromAtlas("gfx/main/title.png");
newGame = getWidget("new", "title"); startNewGame = getWidget("new", "title");
newGame->action = &doNewGame; startNewGame->action = &doNewGame;
load = getWidget("load", "title"); load = getWidget("load", "title");
load->action = &doLoadGame; load->action = &doLoadGame;
@ -181,17 +182,35 @@ static void populateSaveSlotWidgets(void)
static void doNewGame(void) static void doNewGame(void)
{ {
int i;
saveAction = SA_DELETE; saveAction = SA_DELETE;
showWidgetGroup("saveSlot");
for (i = 0 ; i < MAX_SAVE_SLOTS ; i++)
{
save[i]->disabled = 0;
}
loadCancel->visible = 1;
destroyGame(); destroyGame();
} }
static void doLoadGame(void) static void doLoadGame(void)
{ {
int i;
saveAction = SA_LOAD; saveAction = SA_LOAD;
showWidgetGroup("saveSlot"); showWidgetGroup("saveSlot");
for (i = 0 ; i < MAX_SAVE_SLOTS ; i++)
{
save[i]->disabled = save[i]->value[0] == 0;
}
loadCancel->visible = 1; loadCancel->visible = 1;
} }
@ -206,12 +225,12 @@ static void doContinueGame(void)
static void doOptions(void) static void doOptions(void)
{ {
initOptions(returnFromOptions);
} }
static void doCredits(void) static void doCredits(void)
{ {
initCredits();
} }
static void doQuit(void) static void doQuit(void)
@ -225,8 +244,6 @@ static void doSaveSlot(void)
w = getSelectedWidget(); w = getSelectedWidget();
game.saveSlot = w->value[1];
if (saveAction == SA_LOAD) if (saveAction == SA_LOAD)
{ {
loadGame(); loadGame();
@ -235,8 +252,14 @@ static void doSaveSlot(void)
} }
else if (saveAction == SA_DELETE) else if (saveAction == SA_DELETE)
{ {
newGame();
initHub();
} }
game.saveSlot = w->value[1];
saveGame();
} }
static void doLoadCancel(void) static void doLoadCancel(void)
@ -253,3 +276,11 @@ static void doCancel(void)
{ {
} }
static void returnFromOptions(void)
{
app.delegate.logic = &logic;
app.delegate.draw = &draw;
showWidgetGroup("title");
}

View File

@ -27,26 +27,29 @@ enum
}; };
extern void blitRect(SDL_Texture *texture, int x, int y, SDL_Rect *srcRect, int center); extern void blitRect(SDL_Texture *texture, int x, int y, SDL_Rect *srcRect, int center);
extern void destroyGame(void);
extern void doWidgets(void); extern void doWidgets(void);
extern void drawText(int x, int y, int size, int align, SDL_Color c, const char *format, ...); extern void drawText(int x, int y, int size, int align, SDL_Color c, const char *format, ...);
extern void drawWidgets(void); extern void drawWidgets(void);
extern void endSectionTransition(void); extern void endSectionTransition(void);
extern Atlas *getImageFromAtlas(char *filename);
extern Texture *getTexture(const char *filename);
extern Widget *getWidget(char *name, char *group);
extern void playSound(int snd, int ch);
extern void saveConfig(void);
extern void showWidgetGroup(char *group);
extern void startSectionTransition(void);
extern long getFileModTime(char *filename);
extern int fileExists(const char *filename); extern int fileExists(const char *filename);
extern void setSelectedWidget(char *name, char *group); extern long getFileModTime(char *filename);
extern Atlas *getImageFromAtlas(char *filename);
extern char *getSaveWidgetLabel(char *filename); extern char *getSaveWidgetLabel(char *filename);
extern Widget *getSelectedWidget(void); extern Widget *getSelectedWidget(void);
extern void loadGame(void); extern Texture *getTexture(const char *filename);
extern Widget *getWidget(char *name, char *group);
extern void initCredits(void);
extern void initHub(void); extern void initHub(void);
extern void destroyGame(void); extern void initOptions(void (*callback)(void));
extern void loadGame(void);
extern void newGame(void);
extern void saveGame(void);
extern void setSelectedWidget(char *name, char *group);
extern void showWidgetGroup(char *group);
extern void startSectionTransition(void);
extern App app; extern App app;
extern Colors colors; extern Colors colors;
extern Game game; extern Game game;

View File

@ -630,7 +630,11 @@ static void trophies(void)
static void quit(void) static void quit(void)
{ {
stopMusic();
destroyHub();
initTitle();
} }
static void returnFromTrophyStats(void) static void returnFromTrophyStats(void)

View File

@ -58,6 +58,7 @@ extern Widget *getWidget(char *name, char *group);
extern void hideAllWidgets(void); extern void hideAllWidgets(void);
extern void initOptions(void (*callback)(void)); extern void initOptions(void (*callback)(void));
extern void initStatsDisplay(void); extern void initStatsDisplay(void);
extern void initTitle(void);
extern void initWorld(void); extern void initWorld(void);
extern int isControl(int type); extern int isControl(int type);
extern void limitTextWidth(int width); extern void limitTextWidth(int width);