mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-10-08 06:38:10 +03:00
Move registerGameFiles to xsystem35.c
This commit is contained in:
+7
-64
@@ -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
@@ -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
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user