PartsEngine: Implement SetComponentType and GetComponentType

This commit is contained in:
kichikuou
2026-04-12 16:53:34 +09:00
parent 753e202cea
commit 93ca13a50b
3 changed files with 53 additions and 2 deletions
+2
View File
@@ -106,6 +106,8 @@ void PE_SetPartsAlphaClipperPartsNumber(int parts_no, int alpha_clipper_parts_no
void PE_SetPartsPixelDecide(int PartsNumber, bool pixel_decide);
bool PE_SetThumbnailReductionSize(int reduction_size);
bool PE_SetThumbnailMode(bool Mode);
void PE_SetComponentType(int parts_no, int type, int state);
int PE_GetComponentType(int parts_no, int state);
void PE_SetInputState(int parts_no, int state);
int PE_GetInputState(int parts_no);
bool PE_SetPartsRectangleDetectionSize(int parts_no, int w, int h, int state);
+2 -2
View File
@@ -335,8 +335,8 @@ HLL_LIBRARY(PartsEngine,
HLL_EXPORT(SetDelegateIndex, PE_SetDelegateIndex),
HLL_TODO_EXPORT(SetFocus, PartsEngine_SetFocus),
HLL_TODO_EXPORT(IsFocus, PartsEngine_IsFocus),
HLL_TODO_EXPORT(SetComponentType, PartsEngine_SetComponentType),
HLL_TODO_EXPORT(GetComponentType, PartsEngine_GetComponentType),
HLL_EXPORT(SetComponentType, PE_SetComponentType),
HLL_EXPORT(GetComponentType, PE_GetComponentType),
HLL_EXPORT(SetComponentPos, PartsEngine_SetComponentPos),
HLL_EXPORT(SetComponentPosZ, PE_SetZ),
HLL_EXPORT(GetComponentPosX, PartsEngine_Parts_GetComponentPosX),
+49
View File
@@ -1846,6 +1846,55 @@ int PE_GetInputState(int parts_no)
return parts_get(parts_no)->state + 1;
}
void PE_SetComponentType(int parts_no, int type, int state)
{
if (!parts_state_valid(--state))
return;
struct parts *parts = parts_get(parts_no);
enum parts_type pt = PARTS_UNINITIALIZED;
switch (type) {
case 11: pt = PARTS_CG; break;
case 12: pt = PARTS_ANIMATION; break;
case 13: pt = PARTS_TEXT; break;
case 14: pt = PARTS_HGAUGE; break;
case 15: pt = PARTS_VGAUGE; break;
case 16: pt = PARTS_NUMERAL; break;
case 18: pt = PARTS_CONSTRUCTION_PROCESS; break;
case 20: pt = PARTS_FLAT; break;
case 22: pt = PARTS_MOVIE; break;
default:
VM_ERROR("unknown component type %d", type);
}
if (parts->states[state].type != pt)
parts_state_reset(&parts->states[state], pt);
}
int PE_GetComponentType(int parts_no, int state)
{
if (!parts_state_valid(--state))
return -1;
struct parts *parts = parts_try_get(parts_no);
if (!parts)
return -1;
switch (parts->states[state].type) {
case PARTS_UNINITIALIZED: // defaluts to CG
case PARTS_CG:
return 11;
case PARTS_ANIMATION: return 12;
case PARTS_TEXT: return 13;
case PARTS_HGAUGE: return 14;
case PARTS_VGAUGE: return 15;
case PARTS_NUMERAL: return 16;
case PARTS_CONSTRUCTION_PROCESS: return 18;
case PARTS_FLAT: return 20;
case PARTS_MOVIE: return 22;
case PARTS_FLASH:
break;
}
VM_ERROR("unsupported component type %d", parts->states[state].type);
}
bool PE_SetPartsRectangleDetectionSize(int parts_no, int w, int h, int state)
{
UNIMPLEMENTED("(%d, %d, %d, %d)", parts_no, w, h, state);