Compare commits

...
1 Commits
Author SHA1 Message Date
kichikuou 82c8b76a58 Fix missing equipment gauges in Rance 5D
This fixes #83.

**CG_GRAPH checks the source CG's type before drawing, but
SACT.CG_QueryType only checked CGs already loaded into memory. The gauge
images had not been loaded yet, so they were reported as unused.

Check the ALD link table for unloaded CGs, then load them when querying
their dimensions.
2026-09-23 07:51:47 +09:00
+17 -13
View File
@@ -35,6 +35,7 @@
#include "ags.h"
#include "variable.h"
#include "sactcg.h"
#include "ald_manager.h"
#include "cg.h"
#include "gfx.h"
@@ -328,24 +329,27 @@ void scg_free(int no) {
// CGの種類を取得
int scg_querytype(int wNumCG) {
if (wNumCG >= (CGMAX -1)) return CG_NOTUSED;
if (!cg_store || !cg_store[wNumCG]) return CG_NOTUSED;
return cg_store[wNumCG]->type;
if (cg_store && cg_store[wNumCG])
return cg_store[wNumCG]->type;
// Linked CGs are valid even before they are loaded into cg_store.
return ald_is_linked(DRIFILE_CG, wNumCG - 1) ? CG_LINKED : CG_NOTUSED;
}
// CGの大きさを取得
bool scg_querysize(int wNumCG, vmvar_t *w, vmvar_t *h) {
if (wNumCG >= (CGMAX -1)) goto errexit;
if (!cg_store || !cg_store[wNumCG]) goto errexit;
if (cg_store[wNumCG]->sf == NULL) goto errexit;
*w = cg_store[wNumCG]->sf->w;
*h = cg_store[wNumCG]->sf->h;
return true;
errexit:
*w = *h = 0;
return false;
if (wNumCG >= (CGMAX - 1))
return false;
cginfo_t *cg = cg_store ? cg_store[wNumCG] : NULL;
if (!cg && ald_is_linked(DRIFILE_CG, wNumCG - 1))
cg = scg_get(wNumCG);
if (!cg || !cg->sf)
return false;
*w = cg->sf->w;
*h = cg->sf->h;
return true;
}
// CGのBPPを取得