Move registerGameFiles to xsystem35.c

This commit is contained in:
kichikuou
2020-07-11 18:34:27 +09:00
parent b4d2c0832e
commit f2fbf54c32
3 changed files with 63 additions and 66 deletions
+7 -64
View File
@@ -28,24 +28,9 @@
#include <sys/types.h>
#include <unistd.h>
#include "ald_manager.h"
#include "nact.h"
#include "savedata.h"
#include "gameresource.h"
#include "system.h"
typedef struct {
char *game_fname[DRIFILETYPEMAX][DRIFILEMAX];
int cnt[DRIFILETYPEMAX];
char *save_path;
char *save_fname[SAVE_MAXNUMBER];
char *ain;
char *wai;
char *bgi;
char *sact01;
char *init;
char *alk[10];
} GameResource;
static void storeDataName(GameResource *gr, int type, int no, char *src) {
gr->game_fname[type][no] = strdup(src);
gr->cnt[type] = max(no + 1, gr->cnt[type]);
@@ -203,54 +188,12 @@ static boolean initFromFile(GameResource *gr, FILE *fp, const char *gr_fname) {
return FALSE;
}
static void registerFiles(GameResource *gr) {
if (gr->cnt[DRIFILE_SCO] == 0) {
SYSERROR("No Scenario data available\n");
}
if (gr->cnt[DRIFILE_SCO] > 0)
ald_init(DRIFILE_SCO, gr->game_fname[DRIFILE_SCO], gr->cnt[DRIFILE_SCO], TRUE);
if (gr->cnt[DRIFILE_CG] > 0)
ald_init(DRIFILE_CG, gr->game_fname[DRIFILE_CG], gr->cnt[DRIFILE_CG], TRUE);
if (gr->cnt[DRIFILE_WAVE] > 0)
ald_init(DRIFILE_WAVE, gr->game_fname[DRIFILE_WAVE], gr->cnt[DRIFILE_WAVE], TRUE);
if (gr->cnt[DRIFILE_MIDI] > 0)
ald_init(DRIFILE_MIDI, gr->game_fname[DRIFILE_MIDI], gr->cnt[DRIFILE_MIDI], TRUE);
if (gr->cnt[DRIFILE_DATA] > 0)
ald_init(DRIFILE_DATA, gr->game_fname[DRIFILE_DATA], gr->cnt[DRIFILE_DATA], TRUE);
if (gr->cnt[DRIFILE_RSC] > 0)
ald_init(DRIFILE_RSC, gr->game_fname[DRIFILE_RSC], gr->cnt[DRIFILE_RSC], TRUE);
if (gr->cnt[DRIFILE_BGM] > 0)
ald_init(DRIFILE_BGM, gr->game_fname[DRIFILE_BGM], gr->cnt[DRIFILE_BGM], TRUE);
if (gr->save_path)
save_set_path(gr->save_path);
for (int i = 0; i < SAVE_MAXNUMBER; i++) {
if (gr->save_fname[i])
save_register_file(gr->save_fname[i], i);
}
nact->ain.path_to_ain = gr->ain;
nact->files.wai = gr->wai;
nact->files.bgi = gr->bgi;
nact->files.sact01 = gr->sact01;
nact->files.init = gr->init;
for (int i = 0; i < 10; i++)
nact->files.alk[i] = gr->alk[i];
}
boolean initGameDataResorce(const char *gr_fname) {
GameResource gr;
memset(&gr, 0, sizeof(gr));
boolean initGameResorce(GameResource *gr, const char *gr_fname) {
memset(gr, 0, sizeof(GameResource));
FILE *fp = fopen(gr_fname, "r");
boolean result;
if (fp) {
result = initFromFile(&gr, fp, gr_fname);
fclose(fp);
} else {
result = initFromDir(&gr);
}
if (result)
registerFiles(&gr);
if (!fp)
return initFromDir(gr);
boolean result = initFromFile(gr, fp, gr_fname);
fclose(fp);
return result;
}
+16 -1
View File
@@ -24,7 +24,22 @@
#define __GAMERESOURCE_H__
#include "portab.h"
#include "ald_manager.h"
#include "savedata.h"
boolean initGameDataResorce(const char *gameResourceFile);
typedef struct {
char *game_fname[DRIFILETYPEMAX][DRIFILEMAX];
int cnt[DRIFILETYPEMAX];
char *save_path;
char *save_fname[SAVE_MAXNUMBER];
char *ain;
char *wai;
char *bgi;
char *sact01;
char *init;
char *alk[10];
} GameResource;
boolean initGameResorce(GameResource *gr, const char *gr_fname);
#endif /* !__GAMERESOURCE_H__ */
+40 -1
View File
@@ -61,8 +61,10 @@
#include "graphicsdevice.h"
#include "menu.h"
#include "music.h"
#include "savedata.h"
#include "scenario.h"
#include "variable.h"
#include "ald_manager.h"
#include "gameresource.h"
#include "filecheck.h"
#include "joystick.h"
@@ -562,6 +564,41 @@ static void init_signalhandler() {
}
#endif
static void registerGameFiles(GameResource *gr) {
if (gr->cnt[DRIFILE_SCO] == 0) {
SYSERROR("No Scenario data available\n");
}
if (gr->cnt[DRIFILE_SCO] > 0)
ald_init(DRIFILE_SCO, gr->game_fname[DRIFILE_SCO], gr->cnt[DRIFILE_SCO], TRUE);
if (gr->cnt[DRIFILE_CG] > 0)
ald_init(DRIFILE_CG, gr->game_fname[DRIFILE_CG], gr->cnt[DRIFILE_CG], TRUE);
if (gr->cnt[DRIFILE_WAVE] > 0)
ald_init(DRIFILE_WAVE, gr->game_fname[DRIFILE_WAVE], gr->cnt[DRIFILE_WAVE], TRUE);
if (gr->cnt[DRIFILE_MIDI] > 0)
ald_init(DRIFILE_MIDI, gr->game_fname[DRIFILE_MIDI], gr->cnt[DRIFILE_MIDI], TRUE);
if (gr->cnt[DRIFILE_DATA] > 0)
ald_init(DRIFILE_DATA, gr->game_fname[DRIFILE_DATA], gr->cnt[DRIFILE_DATA], TRUE);
if (gr->cnt[DRIFILE_RSC] > 0)
ald_init(DRIFILE_RSC, gr->game_fname[DRIFILE_RSC], gr->cnt[DRIFILE_RSC], TRUE);
if (gr->cnt[DRIFILE_BGM] > 0)
ald_init(DRIFILE_BGM, gr->game_fname[DRIFILE_BGM], gr->cnt[DRIFILE_BGM], TRUE);
if (gr->save_path)
save_set_path(gr->save_path);
for (int i = 0; i < SAVE_MAXNUMBER; i++) {
if (gr->save_fname[i])
save_register_file(gr->save_fname[i], i);
}
nact->ain.path_to_ain = gr->ain;
nact->files.wai = gr->wai;
nact->files.bgi = gr->bgi;
nact->files.sact01 = gr->sact01;
nact->files.init = gr->init;
for (int i = 0; i < 10; i++)
nact->files.alk[i] = gr->alk[i];
}
int main(int argc, char **argv) {
char *homedir = getenv("HOME"), *rc_name, *rc_path;
#ifdef HAVE_SIGACTION
@@ -588,8 +625,10 @@ int main(int argc, char **argv) {
}
}
#endif
if (!initGameDataResorce(gameResourceFile))
GameResource gr;
if (!initGameResorce(&gr, gameResourceFile))
sys35_usage(TRUE);
registerGameFiles(&gr);
#ifdef HAVE_SIGACTION
init_signalhandler();