diff options
| -rw-r--r-- | saga/scene.cpp | 565 | ||||
| -rw-r--r-- | saga/scene.h | 107 | ||||
| -rw-r--r-- | saga/scene_mod.h | 52 | 
3 files changed, 171 insertions, 553 deletions
| diff --git a/saga/scene.cpp b/saga/scene.cpp index e2c9aa6f05..7a525174fe 100644 --- a/saga/scene.cpp +++ b/saga/scene.cpp @@ -20,21 +20,13 @@   * $Header$   *   */ -/* - Description:    -  -    Scene management module - Notes:  -*/ +// Scene management module  #include "reinherit.h"  #include "yslib.h" -/* - * Uses the following modules: -\*--------------------------------------------------------------------------*/  #include "game_mod.h"  #include "animation_mod.h"  #include "console_mod.h" @@ -51,9 +43,6 @@  #include "rscfile_mod.h"  #include "text_mod.h" -/* - * Begin module component -\*--------------------------------------------------------------------------*/  #include "scene_mod.h"  #include "scene.h" @@ -61,86 +50,57 @@ namespace Saga {  static R_SCENE_MODULE SceneModule; -int SCENE_Register(void) -{ - -	CVAR_Register_I(&SceneModule.scene_number, -	    "scene", NULL, R_CVAR_READONLY, 0, 0); - -	CVAR_RegisterFunc(CF_scenechange, -	    "scene_change", "<Scene number>", R_CVAR_NONE, 1, 1); - +int SCENE_Register() { +	CVAR_Register_I(&SceneModule.scene_number, "scene", NULL, R_CVAR_READONLY, 0, 0); +	CVAR_RegisterFunc(CF_scenechange, "scene_change", "<Scene number>", R_CVAR_NONE, 1, 1);  	CVAR_RegisterFunc(CF_sceneinfo, "scene_info", NULL, R_CVAR_NONE, 0, 0);  	return R_SUCCESS;  } -int SCENE_Init(void) -{ - +int SCENE_Init() {  	R_GAME_SCENEDESC gs_desc; -  	byte *scene_lut_p;  	size_t scene_lut_len; -  	const byte *read_p; -  	int result;  	int i; -	/* Load game-specific scene data -	 * \*------------------------------------------------------------ */ +	// Load game-specific scene data  	GAME_GetSceneInfo(&gs_desc); -	/* Load scene module resource context -	 * \*------------------------------------------------------------ */ -	result = GAME_GetFileContext(&SceneModule.scene_ctxt, -	    R_GAME_RESOURCEFILE, 0); +	// Load scene module resource context +	result = GAME_GetFileContext(&SceneModule.scene_ctxt, R_GAME_RESOURCEFILE, 0);  	if (result != R_SUCCESS) { -  		R_printf(R_STDERR, "Couldn't load scene resource context.\n"); -  		return R_FAILURE;  	} -	/* Initialize scene queue -	 * \*------------------------------------------------------------ */ +	// Initialize scene queue  	SceneModule.scene_queue = ys_dll_create();  	if (SceneModule.scene_queue == NULL) { -  		return R_FAILURE;  	} -	/* Load scene lookup table -	 * \*------------------------------------------------------------ */ -	R_printf(R_STDOUT, -	    "SCENE_Init(): Loading scene LUT from resource %u.\n", -	    gs_desc.scene_lut_rn); - -	result = RSC_LoadResource(SceneModule.scene_ctxt, -	    gs_desc.scene_lut_rn, &scene_lut_p, &scene_lut_len); +	// Load scene lookup table +	R_printf(R_STDOUT, "SCENE_Init(): Loading scene LUT from resource %u.\n", gs_desc.scene_lut_rn); +	result = RSC_LoadResource(SceneModule.scene_ctxt, gs_desc.scene_lut_rn, &scene_lut_p, &scene_lut_len);  	if (result != R_SUCCESS) { -  		R_printf(R_STDERR, "Error: couldn't load scene LUT.\n"); -  		return R_FAILURE;  	}  	SceneModule.scene_count = scene_lut_len / 2;  	SceneModule.scene_max = SceneModule.scene_count - 1; - -	SceneModule.scene_lut = (int *)malloc(SceneModule.scene_max * -	    sizeof *SceneModule.scene_lut); +	SceneModule.scene_lut = (int *)malloc(SceneModule.scene_max * sizeof *SceneModule.scene_lut);  	if (SceneModule.scene_lut == NULL) { -		R_printf(R_STDERR, -		    "SCENE_Init(): Memory allocation failed.\n"); +		R_printf(R_STDERR, "SCENE_Init(): Memory allocation failed.\n");  		return R_MEM;  	}  	read_p = scene_lut_p;  	for (i = 0; i < SceneModule.scene_max; i++) { -  		SceneModule.scene_lut[i] = ys_read_u16_le(read_p, &read_p);  	} @@ -153,17 +113,13 @@ int SCENE_Init(void)  	R_printf(R_STDOUT,  	    "SCENE_Init(): First scene set to %d.\n", SceneModule.first_scene); -	R_printf(R_STDOUT, -	    "SCENE_Init(): LUT has %d entries.\n", SceneModule.scene_max); +	R_printf(R_STDOUT, "SCENE_Init(): LUT has %d entries.\n", SceneModule.scene_max); -	/* Create scene module text list -	 * \*------------------------------------------------------------ */ +	// Create scene module text list  	SceneModule.text_list = TEXT_CreateList();  	if (SceneModule.text_list == NULL) { -		R_printf(R_STDERR, -		    "Error: Couldn't create scene text list.\n"); - +		R_printf(R_STDERR, "Error: Couldn't create scene text list.\n");  		return R_FAILURE;  	} @@ -172,9 +128,7 @@ int SCENE_Init(void)  	return R_SUCCESS;  } -int SCENE_Shutdown(void) -{ - +int SCENE_Shutdown() {  	if (SceneModule.init) {  		SCENE_End();  		free(SceneModule.scene_lut); @@ -183,19 +137,16 @@ int SCENE_Shutdown(void)  	return R_SUCCESS;  } -int SCENE_Queue(R_SCENE_QUEUE * scene_queue) -{ +int SCENE_Queue(R_SCENE_QUEUE *scene_queue) {  	assert(SceneModule.init);  	assert(scene_queue != NULL); -	ys_dll_add_tail(SceneModule.scene_queue, -	    scene_queue, sizeof *scene_queue); +	ys_dll_add_tail(SceneModule.scene_queue, scene_queue, sizeof *scene_queue);  	return R_SUCCESS;  } -int SCENE_ClearQueue(void) -{ +int SCENE_ClearQueue() {  	assert(SceneModule.init);  	ys_dll_delete_all(SceneModule.scene_queue); @@ -203,46 +154,35 @@ int SCENE_ClearQueue(void)  	return R_SUCCESS;  } -int SCENE_Start(void) -{ - +int SCENE_Start() {  	YS_DL_NODE *node;  	R_SCENE_QUEUE *scene_qdat;  	assert(SceneModule.init);  	if (SceneModule.scene_loaded) { -		R_printf(R_STDERR, -		    "Error: Can't start game...scene already loaded!\n"); - +		R_printf(R_STDERR, "Error: Can't start game...scene already loaded!\n");  		return R_FAILURE;  	}  	if (SceneModule.in_game) { -		R_printf(R_STDERR, -		    "Error: Can't start game...game already started!\n"); - +		R_printf(R_STDERR, "Error: Can't start game...game already started!\n");  		return R_FAILURE;  	}  	switch (GAME_GetGameType()) { -  	case R_GAMETYPE_ITE:  		ITE_StartProc();  		break; -  	case R_GAMETYPE_IHNM:  		IHNM_StartProc();  		break; -  	default: -		R_printf(R_STDERR, -		    "Error: Can't start game... gametype not supported.\n"); +		R_printf(R_STDERR, "Error: Can't start game... gametype not supported.\n");  		break;  	} -	/* Load the head node in scene queue -	 * \*------------------------------------------------------------- */ +	// Load the head node in scene queue  	node = ys_dll_head(SceneModule.scene_queue);  	if (node == NULL) {  		return R_SUCCESS; @@ -251,39 +191,30 @@ int SCENE_Start(void)  	scene_qdat = (R_SCENE_QUEUE *)ys_dll_get_data(node);  	assert(scene_qdat != NULL); -	SCENE_Load(scene_qdat->scene_n, -	    scene_qdat->load_flag, -	    scene_qdat->scene_proc, scene_qdat->scene_desc); +	SCENE_Load(scene_qdat->scene_n, scene_qdat->load_flag, scene_qdat->scene_proc, scene_qdat->scene_desc);  	return R_SUCCESS;  } -int SCENE_Next(void) -{ - +int SCENE_Next() {  	YS_DL_NODE *node;  	R_SCENE_QUEUE *scene_qdat;  	assert(SceneModule.init);  	if (!SceneModule.scene_loaded) { -		R_printf(R_STDERR, -		    "Error: Can't advance scene...no scene loaded!\n"); - +		R_printf(R_STDERR, "Error: Can't advance scene...no scene loaded!\n");  		return R_FAILURE;  	}  	if (SceneModule.in_game) { -		R_printf(R_STDERR, -		    "Error: Can't advance scene...game already started!\n"); - +		R_printf(R_STDERR, "Error: Can't advance scene...game already started!\n");  		return R_FAILURE;  	}  	SCENE_End(); -	/* Delete the current head node in scene queue -	 * \*------------------------------------------------------------- */ +	// Delete the current head node in scene queue  	node = ys_dll_head(SceneModule.scene_queue);  	if (node == NULL) {  		return R_SUCCESS; @@ -291,8 +222,7 @@ int SCENE_Next(void)  	ys_dll_delete(node); -	/* Load the head node in scene queue -	 * \*------------------------------------------------------------- */ +	// Load the head node in scene queue  	node = ys_dll_head(SceneModule.scene_queue);  	if (node == NULL) {  		return R_SUCCESS; @@ -301,16 +231,12 @@ int SCENE_Next(void)  	scene_qdat = (R_SCENE_QUEUE *)ys_dll_get_data(node);  	assert(scene_qdat != NULL); -	SCENE_Load(scene_qdat->scene_n, -	    scene_qdat->load_flag, -	    scene_qdat->scene_proc, scene_qdat->scene_desc); +	SCENE_Load(scene_qdat->scene_n, scene_qdat->load_flag, scene_qdat->scene_proc, scene_qdat->scene_desc);  	return R_SUCCESS;  } -int SCENE_Skip(void) -{ - +int SCENE_Skip() {  	YS_DL_NODE *node;  	YS_DL_NODE *prev_node;  	YS_DL_NODE *skip_node = NULL; @@ -321,96 +247,62 @@ int SCENE_Skip(void)  	assert(SceneModule.init);  	if (!SceneModule.scene_loaded) { - -		R_printf(R_STDERR, -		    "Error: Can't skip scene...no scene loaded.\n"); - +		R_printf(R_STDERR, "Error: Can't skip scene...no scene loaded.\n");  		return R_FAILURE;  	}  	if (SceneModule.in_game) { - -		R_printf(R_STDERR, -		    "Error: Can't skip scene...game already started.\n"); - +		R_printf(R_STDERR, "Error: Can't skip scene...game already started.\n");  		return R_FAILURE;  	} -	/* Walk down scene queue and try to find a skip target -	 * \*------------------------------------------------------------- */ +	// Walk down scene queue and try to find a skip target  	node = ys_dll_head(SceneModule.scene_queue);  	if (node == NULL) { - -		R_printf(R_STDERR, -		    "Error: Can't skip scene...no scenes in queue.\n"); - +		R_printf(R_STDERR, "Error: Can't skip scene...no scenes in queue.\n");  		return R_FAILURE;  	}  	for (node = ys_dll_next(node); node != NULL; node = ys_dll_next(node)) { -  		scene_qdat = (R_SCENE_QUEUE *)ys_dll_get_data(node);  		assert(scene_qdat != NULL);  		if (scene_qdat->scene_skiptarget) { -  			skip_node = node;  			skip_qdat = scene_qdat;  			break;  		}  	} -	/* If skip target found, remove preceding scenes and load -	 * \*------------------------------------------------------------- */ +	// If skip target found, remove preceding scenes and load  	if (skip_node != NULL) { - -		for (node = ys_dll_prev(skip_node); -		    node != NULL; node = prev_node) { - +		for (node = ys_dll_prev(skip_node); node != NULL; node = prev_node) {  			prev_node = ys_dll_prev(node); -  			ys_dll_delete(node);  		} -  		SCENE_End(); - -		SCENE_Load(skip_qdat->scene_n, -		    skip_qdat->load_flag, -		    skip_qdat->scene_proc, skip_qdat->scene_desc); +		SCENE_Load(skip_qdat->scene_n, skip_qdat->load_flag, skip_qdat->scene_proc, skip_qdat->scene_desc);  	} - -	/* Search for a scene to skip to */ +	// Search for a scene to skip to  	return R_SUCCESS;  } -int SCENE_Change(int scene_num) -{ - +int SCENE_Change(int scene_num) {  	assert(SceneModule.init);  	if (!SceneModule.scene_loaded) { -		R_printf(R_STDERR, -		    "Error: Can't change scene. No scene currently loaded. " -		    "Game in invalid state.\n"); - +		R_printf(R_STDERR, "Error: Can't change scene. No scene currently loaded. Game in invalid state.\n");  		return R_FAILURE;  	}  	if ((scene_num < 0) || (scene_num > SceneModule.scene_max)) { - -		R_printf(R_STDERR, -		    "Error: Can't change scene. Invalid scene number.\n"); - +		R_printf(R_STDERR, "Error: Can't change scene. Invalid scene number.\n");  		return R_FAILURE;  	}  	if (SceneModule.scene_lut[scene_num] == 0) { - -		R_printf(R_STDERR, -		    "Error: Can't change scene; invalid scene descriptor " -		    "resource number (0)\n"); - +		R_printf(R_STDERR, "Error: Can't change scene; invalid scene descriptor resource number (0)\n");  		return R_FAILURE;  	} @@ -420,16 +312,13 @@ int SCENE_Change(int scene_num)  	return R_SUCCESS;  } -int SCENE_GetMode(void) -{ +int SCENE_GetMode() {  	assert(SceneModule.init);  	return SceneModule.scene_mode;  } -int SCENE_GetZInfo(SCENE_ZINFO * zinfo) -{ - +int SCENE_GetZInfo(SCENE_ZINFO *zinfo) {  	assert(SceneModule.init);  	zinfo->begin_slope = SceneModule.desc.begin_slope; @@ -438,8 +327,7 @@ int SCENE_GetZInfo(SCENE_ZINFO * zinfo)  	return R_SUCCESS;  } -int SCENE_GetBGInfo(SCENE_BGINFO * bginfo) -{ +int SCENE_GetBGInfo(SCENE_BGINFO *bginfo) {  	R_GAME_DISPLAYINFO di;  	int x, y; @@ -469,18 +357,14 @@ int SCENE_GetBGInfo(SCENE_BGINFO * bginfo)  	return R_SUCCESS;  } -int SCENE_GetBGPal(PALENTRY ** pal) -{ +int SCENE_GetBGPal(PALENTRY **pal) {  	assert(SceneModule.init); -  	*pal = SceneModule.bg.pal;  	return R_SUCCESS;  } -int SCENE_GetBGMaskInfo(int *w, int *h, byte ** buf, size_t * buf_len) -{ - +int SCENE_GetBGMaskInfo(int *w, int *h, byte **buf, size_t *buf_len) {  	assert(SceneModule.init);  	if (!SceneModule.bg_mask.loaded) { @@ -495,16 +379,13 @@ int SCENE_GetBGMaskInfo(int *w, int *h, byte ** buf, size_t * buf_len)  	return R_SUCCESS;  } -int SCENE_IsBGMaskPresent(void) -{ - +int SCENE_IsBGMaskPresent() {  	assert(SceneModule.init);  	return SceneModule.bg_mask.loaded;  } -int SCENE_GetInfo(R_SCENE_INFO * si) -{ +int SCENE_GetInfo(R_SCENE_INFO *si) {  	assert(SceneModule.init);  	assert(si != NULL); @@ -513,11 +394,7 @@ int SCENE_GetInfo(R_SCENE_INFO * si)  	return R_SUCCESS;  } -int -SCENE_Load(int scene_num, -    int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DESC * scene_desc_param) -{ - +int SCENE_Load(int scene_num, int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DESC *scene_desc_param) {  	R_SCENE_INFO scene_info;  	uint32 res_number = 0;  	int result; @@ -526,7 +403,6 @@ SCENE_Load(int scene_num,  	assert(SceneModule.init);  	if (SceneModule.scene_loaded == 1) { -  		R_printf(R_STDERR, "Error, a scene is already loaded.\n");  		return R_FAILURE;  	} @@ -536,102 +412,67 @@ SCENE_Load(int scene_num,  	SceneModule.load_desc = 1;  	switch (load_flag) { -  	case BY_RESOURCE:  		res_number = scene_num;  		break; -  	case BY_SCENE:  		assert((scene_num > 0) && (scene_num < SceneModule.scene_max)); -  		res_number = SceneModule.scene_lut[scene_num];  		SceneModule.scene_number = scene_num;  		break; -  	case BY_DESC: -  		assert(scene_desc_param != NULL);  		assert(scene_desc_param->res_list != NULL); -  		SceneModule.load_desc = 0; -  		SceneModule.desc = *scene_desc_param;  		SceneModule.reslist = scene_desc_param->res_list;  		SceneModule.reslist_entries = scene_desc_param->res_list_ct;  		break; -  	default:  		R_printf(R_STDERR, "Error: Invalid scene load flag.\n");  		return R_FAILURE;  		break; -  	} -	/*  -	 * Load scene descriptor and resource list resources -	 \*-------------------------------------------------------------*/ +	// Load scene descriptor and resource list resources  	if (SceneModule.load_desc) {  		SceneModule.scene_rn = res_number;  		assert(SceneModule.scene_rn != 0); -  		R_printf(R_STDOUT, "Loading scene resource %u:\n", res_number);  		if (LoadSceneDescriptor(res_number) != R_SUCCESS) { -			R_printf(R_STDERR, -			    "Error reading scene descriptor.\n"); - +			R_printf(R_STDERR, "Error reading scene descriptor.\n");  			return R_FAILURE;  		} -		if (LoadSceneResourceList(SceneModule.desc.res_list_rn) -		    != R_SUCCESS) { - -			R_printf(R_STDERR, -			    "Error reading scene resource list.\n"); - +		if (LoadSceneResourceList(SceneModule.desc.res_list_rn) != R_SUCCESS) { +			R_printf(R_STDERR, "Error reading scene resource list.\n");  			return R_FAILURE;  		}  	} else { -  		R_printf(R_STDOUT, "Loading memory scene resource.\n");  	} -	/* -	 * Load resources from scene resource list -	 \*-------------------------------------------------------------*/ +	// Load resources from scene resource list  	for (i = 0; i < SceneModule.reslist_entries; i++) { - -		result = RSC_LoadResource(SceneModule.scene_ctxt, -		    SceneModule.reslist[i].res_number, -		    &SceneModule.reslist[i].res_data, -		    &SceneModule.reslist[i].res_data_len); +		result = RSC_LoadResource(SceneModule.scene_ctxt, SceneModule.reslist[i].res_number, +								&SceneModule.reslist[i].res_data, &SceneModule.reslist[i].res_data_len);  		if (result != R_SUCCESS) { - -			R_printf(R_STDERR, -			    "Error: Allocation failure loading scene " -			    "resource list.\n"); - +			R_printf(R_STDERR, "Error: Allocation failure loading scene resource list.\n");  			return R_FAILURE;  		} -  	} -	/* -	 * Process resources from scene resource list -	 \*-------------------------------------------------------------*/ +	// Process resources from scene resource list  	if (ProcessSceneResources() != R_SUCCESS) { -  		R_printf(R_STDERR, "Error loading scene resources.\n"); -  		return R_FAILURE;  	} -	/* Load scene script data */ +	// Load scene script data  	if (SceneModule.desc.script_num > 0) { -  		if (SCRIPT_Load(SceneModule.desc.script_num) != R_SUCCESS) { -  			R_printf(R_STDERR, "Error loading scene script.\n");  			return R_FAILURE;  		} @@ -652,28 +493,20 @@ SCENE_Load(int scene_num,  	return R_SUCCESS;  } -int LoadSceneDescriptor(uint32 res_number) -{ - +int LoadSceneDescriptor(uint32 res_number) {  	byte *scene_desc_data;  	size_t scene_desc_len; -  	const byte *read_p; -  	int result; -	result = RSC_LoadResource(SceneModule.scene_ctxt, -	    res_number, &scene_desc_data, &scene_desc_len); +	result = RSC_LoadResource(SceneModule.scene_ctxt, res_number, &scene_desc_data, &scene_desc_len);  	if (result != R_SUCCESS) {  		R_printf(R_STDERR, "Error: couldn't load scene descriptor.\n"); -  		return R_FAILURE;  	}  	if (scene_desc_len != SAGA_SCENE_DESC_LEN) { -		R_printf(R_STDERR, -		    "Error: scene descriptor length invalid.\n"); - +		R_printf(R_STDERR, "Error: scene descriptor length invalid.\n");  		return R_FAILURE;  	} @@ -686,7 +519,6 @@ int LoadSceneDescriptor(uint32 res_number)  	SceneModule.desc.script_num = ys_read_u16_le(read_p, &read_p);  	SceneModule.desc.scene_scriptnum = ys_read_u16_le(read_p, &read_p);  	SceneModule.desc.start_scriptnum = ys_read_u16_le(read_p, &read_p); -  	SceneModule.desc.music_rn = ys_read_s16_le(read_p, &read_p);  	RSC_FreeResource(scene_desc_data); @@ -694,61 +526,39 @@ int LoadSceneDescriptor(uint32 res_number)  	return R_SUCCESS;  } -int LoadSceneResourceList(uint32 reslist_rn) -{ - +int LoadSceneResourceList(uint32 reslist_rn) {  	byte *resource_list;  	size_t resource_list_len; -  	const byte *read_p; -  	int result;  	int i; -	/* -	 * Load the scene resource table -	 \*-------------------------------------------------------------*/ -	result = RSC_LoadResource(SceneModule.scene_ctxt, -	    reslist_rn, &resource_list, &resource_list_len); +	// Load the scene resource table +	result = RSC_LoadResource(SceneModule.scene_ctxt, reslist_rn, &resource_list, &resource_list_len);  	if (result != R_SUCCESS) { - -		R_printf(R_STDERR, -		    "Error: couldn't load scene resource list.\n"); - +		R_printf(R_STDERR, "Error: couldn't load scene resource list.\n");  		return R_FAILURE;  	}  	read_p = resource_list; -	/* Allocate memory for scene resource list  -	 * \*----------------------------------------- */ -	SceneModule.reslist_entries = -	    resource_list_len / SAGA_RESLIST_ENTRY_LEN; - -	R_printf(R_STDOUT, -	    "Scene resource list contains %d entries.\n", -	    SceneModule.reslist_entries); - -	SceneModule.reslist = -	    (R_SCENE_RESLIST *)calloc(SceneModule.reslist_entries, sizeof *SceneModule.reslist); +	// Allocate memory for scene resource list  +	SceneModule.reslist_entries = resource_list_len / SAGA_RESLIST_ENTRY_LEN; +	R_printf(R_STDOUT, "Scene resource list contains %d entries.\n", SceneModule.reslist_entries); +	SceneModule.reslist = (R_SCENE_RESLIST *)calloc(SceneModule.reslist_entries, sizeof *SceneModule.reslist);  	if (SceneModule.reslist == NULL) {  		R_printf(R_STDERR, "Error: Memory allocation failed.\n"); -  		return R_MEM;  	} -	/* Load scene resource list from raw scene  -	 * resource table -	 \*-----------------------------------------*/ +	// Load scene resource list from raw scene  +	// resource table  	R_printf(R_STDOUT, "Loading scene resource list...\n");  	for (i = 0; i < SceneModule.reslist_entries; i++) { - -		SceneModule.reslist[i].res_number = -		    ys_read_u16_le(read_p, &read_p); -		SceneModule.reslist[i].res_type = -		    ys_read_u16_le(read_p, &read_p); +		SceneModule.reslist[i].res_number = ys_read_u16_le(read_p, &read_p); +		SceneModule.reslist[i].res_type = ys_read_u16_le(read_p, &read_p);  	}  	RSC_FreeResource(resource_list); @@ -756,43 +566,26 @@ int LoadSceneResourceList(uint32 reslist_rn)  	return R_SUCCESS;  } -int ProcessSceneResources(void) -{ - +int ProcessSceneResources() {  	const byte *res_data;  	size_t res_data_len; -  	const byte *pal_p; -  	int i; -	/* -	 * Process the scene resource list -	 \*-------------------------------------------------------------*/ +	// Process the scene resource list  	for (i = 0; i < SceneModule.reslist_entries; i++) { -  		res_data = SceneModule.reslist[i].res_data;  		res_data_len = SceneModule.reslist[i].res_data_len; -  		switch (SceneModule.reslist[i].res_type) { - -			/* Scene background resource */ -		case SAGA_BG_IMAGE: - +		case SAGA_BG_IMAGE: // Scene background resource  			if (SceneModule.bg.loaded) { - -				R_printf(R_STDERR, -				    "Error: Multiple background resources " -				    "encountered.\n"); +				R_printf(R_STDERR, "Error: Multiple background resources encountered.\n");  				return R_FAILURE;  			}  			R_printf(R_STDOUT, "Loading background resource.\n"); - -			SceneModule.bg.res_buf = -			    SceneModule.reslist[i].res_data; -			SceneModule.bg.res_len = -			    SceneModule.reslist[i].res_data_len; +			SceneModule.bg.res_buf = SceneModule.reslist[i].res_data; +			SceneModule.bg.res_len = SceneModule.reslist[i].res_data_len;  			SceneModule.bg.loaded = 1;  			if (IMG_DecodeBGImage(SceneModule.bg.res_buf, @@ -801,147 +594,89 @@ int ProcessSceneResources(void)  				&SceneModule.bg.buf_len,  				&SceneModule.bg.w,  				&SceneModule.bg.h) != R_SUCCESS) { -				R_printf(R_STDERR, -				    "Error loading background resource: %u\n", -				    SceneModule.reslist[i].res_number); - +				R_printf(R_STDERR, "Error loading background resource: %u\n", SceneModule.reslist[i].res_number);  				return R_FAILURE;  			} -			pal_p = IMG_GetImagePal(SceneModule.bg.res_buf, -			    SceneModule.bg.res_len); - -			memcpy(SceneModule.bg.pal, -			    pal_p, sizeof SceneModule.bg.pal); - +			pal_p = IMG_GetImagePal(SceneModule.bg.res_buf, SceneModule.bg.res_len); +			memcpy(SceneModule.bg.pal, pal_p, sizeof SceneModule.bg.pal);  			SceneModule.scene_mode = R_SCENE_MODE_NORMAL; -  			break; - -			/* Scene background mask resource */ -		case SAGA_BG_MASK: - +		case SAGA_BG_MASK: // Scene background mask resource  			if (SceneModule.bg_mask.loaded) { -				R_printf(R_STDERR, -				    "Error: Duplicate background mask resource " -				    "encountered.\n"); +				R_printf(R_STDERR, "Error: Duplicate background mask resource encountered.\n");  			} - -			R_printf(R_STDOUT, -			    "Loading BACKGROUND MASK resource.\n"); - -			SceneModule.bg_mask.res_buf = -			    SceneModule.reslist[i].res_data; -			SceneModule.bg_mask.res_len = -			    SceneModule.reslist[i].res_data_len; +			R_printf(R_STDOUT, "Loading BACKGROUND MASK resource.\n"); +			SceneModule.bg_mask.res_buf = SceneModule.reslist[i].res_data; +			SceneModule.bg_mask.res_len = SceneModule.reslist[i].res_data_len;  			SceneModule.bg_mask.loaded = 1; - -			IMG_DecodeBGImage(SceneModule.bg_mask.res_buf, -			    SceneModule.bg_mask.res_len, -			    &SceneModule.bg_mask.buf, -			    &SceneModule.bg_mask.buf_len, -			    &SceneModule.bg_mask.w, &SceneModule.bg_mask.h); +			IMG_DecodeBGImage(SceneModule.bg_mask.res_buf, SceneModule.bg_mask.res_len, &SceneModule.bg_mask.buf, +							&SceneModule.bg_mask.buf_len, &SceneModule.bg_mask.w, &SceneModule.bg_mask.h);  			break; -  		case SAGA_OBJECT_NAME_LIST: - -			R_printf(R_STDOUT, -			    "Loading object name list resource...\n"); - -			OBJECTMAP_LoadNames(SceneModule.reslist[i].res_data, -			    SceneModule.reslist[i].res_data_len); +			R_printf(R_STDOUT, "Loading object name list resource...\n"); +			OBJECTMAP_LoadNames(SceneModule.reslist[i].res_data, SceneModule.reslist[i].res_data_len);  			break; -  		case SAGA_OBJECT_MAP: -  			R_printf(R_STDOUT, "Loading object map resource...\n"); -  			if (OBJECTMAP_Load(res_data,  				res_data_len) != R_SUCCESS) { - -				R_printf(R_STDERR, -				    "Error loading object map resource.\n"); +				R_printf(R_STDERR, "Error loading object map resource.\n");  				return R_FAILURE;  			}  			break; -  		case SAGA_ACTION_MAP: -  			R_printf(R_STDOUT, "Loading exit map resource...\n"); - -			if (ACTIONMAP_Load(res_data, -				res_data_len) != R_SUCCESS) { -				R_printf(R_STDERR, -				    "Error loading exit map resource.\n"); +			if (ACTIONMAP_Load(res_data, res_data_len) != R_SUCCESS) { +				R_printf(R_STDERR, "Error loading exit map resource.\n");  				return R_FAILURE;  			}  			break; -  		case SAGA_ISO_TILESET: -  			if (SceneModule.scene_mode == R_SCENE_MODE_NORMAL) { -				R_printf(R_STDERR, -				    "Isometric tileset incompatible with normal " -				    "scene mode.\n"); +				R_printf(R_STDERR, "Isometric tileset incompatible with normal scene mode.\n");  				return R_FAILURE;  			} -			R_printf(R_STDOUT, -			    "Loading isometric tileset resource.\n"); +			R_printf(R_STDOUT, "Loading isometric tileset resource.\n"); -			if (ISOMAP_LoadTileset(res_data, -				res_data_len) != R_SUCCESS) { -				R_printf(R_STDERR, -				    "Error loading isometric tileset resource.\n"); +			if (ISOMAP_LoadTileset(res_data, res_data_len) != R_SUCCESS) { +				R_printf(R_STDERR, "Error loading isometric tileset resource.\n");  				return R_FAILURE;  			}  			SceneModule.scene_mode = R_SCENE_MODE_ISO;  			break; -  		case SAGA_ISO_METAMAP: -  			if (SceneModule.scene_mode == R_SCENE_MODE_NORMAL) { -				R_printf(R_STDERR, -				    "Isometric metamap incompatible with normal " -				    "scene mode.\n"); +				R_printf(R_STDERR, "Isometric metamap incompatible with normal scene mode.\n");  				return R_FAILURE;  			} -			R_printf(R_STDOUT, -			    "Loading isometric metamap resource.\n"); +			R_printf(R_STDOUT, "Loading isometric metamap resource.\n"); -			if (ISOMAP_LoadMetamap(res_data, -				res_data_len) != R_SUCCESS) { -				R_printf(R_STDERR, -				    "Error loading isometric metamap resource.\n"); +			if (ISOMAP_LoadMetamap(res_data, res_data_len) != R_SUCCESS) { +				R_printf(R_STDERR, "Error loading isometric metamap resource.\n");  				return R_FAILURE;  			}  			SceneModule.scene_mode = R_SCENE_MODE_ISO;  			break; -  		case SAGA_ISO_METATILESET:  			if (SceneModule.scene_mode == R_SCENE_MODE_NORMAL) { -				R_printf(R_STDERR, -				    "Isometric metatileset incompatible with " -				    "normal scene mode.\n"); +				R_printf(R_STDERR, "Isometric metatileset incompatible with normal scene mode.\n");  				return R_FAILURE;  			} -			R_printf(R_STDOUT, -			    "Loading isometric metatileset resource.\n"); +			R_printf(R_STDOUT, "Loading isometric metatileset resource.\n"); -			if (ISOMAP_LoadMetaTileset(res_data, -				res_data_len) != R_SUCCESS) { -				R_printf(R_STDERR, -				    "Error loading isometric tileset resource.\n"); +			if (ISOMAP_LoadMetaTileset(res_data, res_data_len) != R_SUCCESS) { +				R_printf(R_STDERR, "Error loading isometric tileset resource.\n");  				return R_FAILURE;  			}  			SceneModule.scene_mode = R_SCENE_MODE_ISO;  			break; -  		case SAGA_ANIM_1:  		case SAGA_ANIM_2:  		case SAGA_ANIM_3: @@ -953,15 +688,11 @@ int ProcessSceneResources(void)  				SCENE_ANIMINFO *new_animinfo;  				uint16 new_anim_id; -				R_printf(R_STDOUT, -				    "Loading animation resource...\n"); +				R_printf(R_STDOUT, "Loading animation resource...\n");  				new_animinfo = (SCENE_ANIMINFO *)malloc(sizeof *new_animinfo);  				if (new_animinfo == NULL) { - -					R_printf(R_STDERR, -					    "Memory allocation error.\n"); - +					R_printf(R_STDERR, "Memory allocation error.\n");  					return R_MEM;  				} @@ -969,47 +700,30 @@ int ProcessSceneResources(void)  					SceneModule.reslist[i].res_data_len,  					&new_anim_id) == R_SUCCESS) {  				} else { -					R_printf(R_STDERR, -					    "Error loading animation resource\n"); - +					R_printf(R_STDERR, "Error loading animation resource\n");  					return R_FAILURE;  				}  				new_animinfo->anim_handle = new_anim_id; -				new_animinfo->anim_res_number = -				    SceneModule.reslist[i].res_number; - -				ys_dll_add_tail(SceneModule.anim_list, -				    new_animinfo, sizeof *new_animinfo); - +				new_animinfo->anim_res_number =  SceneModule.reslist[i].res_number; +				ys_dll_add_tail(SceneModule.anim_list, new_animinfo, sizeof *new_animinfo);  				SceneModule.anim_entries++;  			}  			break; -  		case SAGA_PAL_ANIM: - -			R_printf(R_STDOUT, -			    "Loading palette animation resource.\n"); - -			PALANIM_Load(SceneModule.reslist[i].res_data, -			    SceneModule.reslist[i].res_data_len); +			R_printf(R_STDOUT, "Loading palette animation resource.\n"); +			PALANIM_Load(SceneModule.reslist[i].res_data, SceneModule.reslist[i].res_data_len);  			break; -  		default: - -			R_printf(R_STDERR, -			    "Encountered unknown resource type: %d\n", -			    SceneModule.reslist[i].res_type); +			R_printf(R_STDERR, "Encountered unknown resource type: %d\n", SceneModule.reslist[i].res_type);  			break; -  		}  	}  	return R_SUCCESS;  } -int SCENE_Draw(R_SURFACE * dst_s) -{ +int SCENE_Draw(R_SURFACE *dst_s) {  	R_GAME_DISPLAYINFO disp_info;  	R_BUFFER_INFO buf_info;  	R_POINT bg_pt; @@ -1025,30 +739,22 @@ int SCENE_Draw(R_SURFACE * dst_s)  	switch (SceneModule.scene_mode) {  	case R_SCENE_MODE_NORMAL: - -		GFX_BufToSurface(dst_s, -		    buf_info.r_bg_buf, -		    disp_info.logical_w, -		    MAX(disp_info.scene_h, SceneModule.bg.h), NULL, &bg_pt); +		GFX_BufToSurface(dst_s, buf_info.r_bg_buf, disp_info.logical_w, +						MAX(disp_info.scene_h, SceneModule.bg.h), NULL, &bg_pt);  		break; -  	case R_SCENE_MODE_ISO: -  		ISOMAP_Draw(dst_s);  		break; -  	default: -		/* Unknown scene mode */ +		// Unknown scene mode  		return R_FAILURE;  		break; -  	};  	return R_SUCCESS;  } -int SCENE_End(void) -{ +int SCENE_End() {  	R_SCENE_INFO scene_info;  	assert(SceneModule.init); @@ -1065,29 +771,28 @@ int SCENE_End(void)  	SceneModule.scene_proc(SCENE_END, &scene_info);  	if (SceneModule.desc.script_num > 0) { -  		SCRIPT_Free();  	} -	/* Free scene background */ +	// Free scene background  	if (SceneModule.bg.loaded) {  		free(SceneModule.bg.buf);  		SceneModule.bg.loaded = 0;  	} -	/* Free scene background mask */ +	// Free scene background mask  	if (SceneModule.bg_mask.loaded) {  		free(SceneModule.bg_mask.buf);  		SceneModule.bg_mask.loaded = 0;  	} -	/* Free scene resource list */ +	// Free scene resource list  	if (SceneModule.load_desc) {  		free(SceneModule.reslist);  	} -	/* Free animation info list */ +	// Free animation info list  	ANIM_Reset();  	PALANIM_Free(); @@ -1106,9 +811,7 @@ int SCENE_End(void)  	return R_SUCCESS;  } -void CF_scenechange(int argc, char *argv[]) -{ - +void CF_scenechange(int argc, char *argv[]) {  	int scene_num = 0;  	if ((argc == 0) || (argc > 1)) { @@ -1129,13 +832,9 @@ void CF_scenechange(int argc, char *argv[])  	} else {  		CON_Print("Couldn't change scene!");  	} - -	return;  } -void CF_sceneinfo(int argc, char *argv[]) -{ - +void CF_sceneinfo(int argc, char *argv[]) {  	const char *fmt = "%-20s %d";  	YS_IGNORE_PARAM(argc); @@ -1152,8 +851,6 @@ void CF_sceneinfo(int argc, char *argv[])  	CON_Print(fmt, "Scene script:", SceneModule.desc.scene_scriptnum);  	CON_Print(fmt, "Start script:", SceneModule.desc.start_scriptnum);  	CON_Print(fmt, "Music R#", SceneModule.desc.music_rn); - -	return;  }  } // End of namespace Saga diff --git a/saga/scene.h b/saga/scene.h index cc5af55644..d6480038c1 100644 --- a/saga/scene.h +++ b/saga/scene.h @@ -20,13 +20,8 @@   * $Header$   *   */ -/* - Description:    -  -    Scene management module private header file - Notes:  -*/ +// Scene management module private header file  #ifndef SAGA_SCENE_H  #define SAGA_SCENE_H @@ -34,21 +29,18 @@  namespace Saga {  enum SCENE_LOAD_FLAGS { -  	BY_RESOURCE = 0,  	BY_SCENE,  	BY_DESC  };  enum SCENE_PROC_PARAMS { -  	SCENE_BEGIN = 0,  	SCENE_END  }; -/* Resource type numbers */ +// Resource type numbers  enum SAGA_RESOURCE_TYPES { -  	SAGA_BG_IMAGE = 2,  	SAGA_BG_MASK = 3,  	SAGA_OBJECT_NAME_LIST = 5, @@ -70,19 +62,15 @@ enum SAGA_RESOURCE_TYPES {  #define SAGA_RESLIST_ENTRY_LEN 4  struct R_SCENE_RESLIST { -  	uint32 res_number;  	int res_type; -  	byte *res_data;  	size_t res_data_len; -  };  #define SAGA_SCENE_DESC_LEN 16  struct R_SCENE_DESC { -  	int unknown0;  	int res_list_rn;  	int end_slope; @@ -91,139 +79,94 @@ struct R_SCENE_DESC {  	int scene_scriptnum;  	int start_scriptnum;  	int music_rn; -  	R_SCENE_RESLIST *res_list;  	size_t res_list_ct; -  };  struct SCENE_IMAGE { -  	int loaded; -  	int w;  	int h;  	int p; -  	byte *buf;  	size_t buf_len; -  	byte *res_buf;  	size_t res_len; -  	PALENTRY pal[256]; -  };  struct SCENE_ANIMINFO { -  	int anim_res_number;  	int anim_handle; -  	SCENE_ANIMINFO *next; -  };  struct R_SCENE_QUEUE { -  	uint32 scene_n;  	R_SCENE_DESC *scene_desc;  	int load_flag; -  	R_SCENE_PROC *scene_proc;  	int scene_skiptarget; -  };  struct R_SCENE_MODULE { -  	int init; -  	R_RSCFILE_CONTEXT *scene_ctxt; -  	int *scene_lut;  	int scene_count;  	int scene_max; -  	YS_DL_LIST *scene_queue; -  	int first_scene; -  	int scene_loaded;  	int scene_mode;  	int scene_number;  	int scene_rn;  	int in_game; -  	int load_desc;  	R_SCENE_DESC desc; -  	int reslist_loaded;  	int reslist_entries;  	R_SCENE_RESLIST *reslist; -  	int anim_entries;  	YS_DL_LIST *anim_list; -  	R_SCENE_PROC *scene_proc; -  	R_TEXTLIST *text_list; -  	SCENE_IMAGE bg;  	SCENE_IMAGE bg_mask; -  };  int SCENE_Queue(R_SCENE_QUEUE * scene_queue);  int SCENE_ClearQueue(void); -int -SCENE_Load(int scene, -    int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DESC *); - +int SCENE_Load(int scene, int load_flag, R_SCENE_PROC scene_proc, R_SCENE_DESC *);  int LoadSceneDescriptor(uint32 res_number); -  int LoadSceneResourceList(uint32 res_number); +int ProcessSceneResources(); +void CF_scenechange(int argc, char *argv[]); +void CF_sceneinfo(int argc, char *argv[]); -int ProcessSceneResources(void); +int IHNM_StartProc(); -void CF_scenechange(int argc, char *argv[]); +int InitialSceneProc(int param, R_SCENE_INFO *scene_info); +int DefaultSceneProc(int param, R_SCENE_INFO *scene_info); -void CF_sceneinfo(int argc, char *argv[]); +int ITE_StartProc(); +int ITE_IntroAnimProc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroCave1Proc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroCave2Proc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroCave3Proc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroCave4Proc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroValleyProc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroTreeHouseProc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroFairePathProc(int param, R_SCENE_INFO *scene_info); +int ITE_IntroFaireTentProc(int param, R_SCENE_INFO *scene_info); -/* - * r_sceneproc.c                                                 -\*--------------------------------------------------------------------------*/ - -int IHNM_StartProc(void); - -int InitialSceneProc(int param, R_SCENE_INFO * scene_info); -int DefaultSceneProc(int param, R_SCENE_INFO * scene_info); - -/* - * r_ite_introproc.c                                              -\*--------------------------------------------------------------------------*/ - -int ITE_StartProc(void); -int ITE_IntroAnimProc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroCave1Proc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroCave2Proc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroCave3Proc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroCave4Proc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroValleyProc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroTreeHouseProc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroFairePathProc(int param, R_SCENE_INFO * scene_info); -int ITE_IntroFaireTentProc(int param, R_SCENE_INFO * scene_info); - -/* - * r_ihnm_introproc.c                                              -\*--------------------------------------------------------------------------*/ -int IHNM_StartProc(void); -int IHNM_IntroMovieProc1(int param, R_SCENE_INFO * scene_info); -int IHNM_IntroMovieProc2(int param, R_SCENE_INFO * scene_info); -int IHNM_IntroMovieProc3(int param, R_SCENE_INFO * scene_info); -int IHNM_HateProc(int param, R_SCENE_INFO * scene_info); +int IHNM_StartProc(); +int IHNM_IntroMovieProc1(int param, R_SCENE_INFO *scene_info); +int IHNM_IntroMovieProc2(int param, R_SCENE_INFO *scene_info); +int IHNM_IntroMovieProc3(int param, R_SCENE_INFO *scene_info); +int IHNM_HateProc(int param, R_SCENE_INFO *scene_info);  } // End of namespace Saga -#endif				/* SAGA_SCENE_H_ */ +#endif diff --git a/saga/scene_mod.h b/saga/scene_mod.h index 9f3c007122..84430c8679 100644 --- a/saga/scene_mod.h +++ b/saga/scene_mod.h @@ -20,13 +20,8 @@   * $Header$   *   */ -/* - Description:    -  -    Scene management module public header file - Notes:  -*/ +// Scene management module public header file  #ifndef SAGA_SCENE_MOD_H__  #define SAGA_SCENE_MOD_H__ @@ -35,69 +30,52 @@  namespace Saga { -/* - * r_scene.c                                                 -\*--------------------------------------------------------------------------*/  enum R_SCENE_MODES { -  	R_SCENE_MODE_INVALID,  	R_SCENE_MODE_NORMAL,  	R_SCENE_MODE_ISO  };  struct SCENE_ZINFO { -  	int begin_slope;  	int end_slope;  };  struct SCENE_BGINFO { -  	int bg_x;  	int bg_y; -  	int bg_w;  	int bg_h;  	int bg_p; -  	byte *bg_buf;  	size_t bg_buflen; -  };  struct R_SCENE_INFO { -  	SCENE_ZINFO z_info;  	SCENE_BGINFO bg_info; -  	R_TEXTLIST *text_list; -  };  typedef int (R_SCENE_PROC) (int, R_SCENE_INFO *); -int SCENE_Register(void); -int SCENE_Init(void); -int SCENE_Shutdown(void); - -int SCENE_Start(void); -int SCENE_Next(void); -int SCENE_Skip(void); -int SCENE_End(void); - +int SCENE_Register(); +int SCENE_Init(); +int SCENE_Shutdown(); +int SCENE_Start(); +int SCENE_Next(); +int SCENE_Skip(); +int SCENE_End();  int SCENE_Draw(R_SURFACE *); - -int SCENE_GetMode(void); -int SCENE_GetBGMaskInfo(int *w, int *h, byte ** buf, size_t * buf_len); - +int SCENE_GetMode(); +int SCENE_GetBGMaskInfo(int *w, int *h, byte **buf, size_t *buf_len);  int SCENE_IsBGMaskPresent(void); -int SCENE_GetBGInfo(SCENE_BGINFO * bginfo); -int SCENE_GetZInfo(SCENE_ZINFO * zinfo); -int SCENE_GetBGPal(PALENTRY ** pal); - -int SCENE_GetInfo(R_SCENE_INFO * si); +int SCENE_GetBGInfo(SCENE_BGINFO *bginfo); +int SCENE_GetZInfo(SCENE_ZINFO *zinfo); +int SCENE_GetBGPal(PALENTRY **pal); +int SCENE_GetInfo(R_SCENE_INFO *si);  } // End of namespace Saga -#endif				/* SAGA_SCENE_MOD_H__ */ +#endif | 
