[Scummvm-git-logs] scummvm master -> 1c9ef86837709bd1e9a6565a8802ccc29cb59303
mgerhardy
noreply at scummvm.org
Tue Oct 8 19:46:37 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
1c9ef86837 TWINE: added editing of static and work flags to the debugger
Commit: 1c9ef86837709bd1e9a6565a8802ccc29cb59303
https://github.com/scummvm/scummvm/commit/1c9ef86837709bd1e9a6565a8802ccc29cb59303
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2024-10-08T21:46:21+02:00
Commit Message:
TWINE: added editing of static and work flags to the debugger
Changed paths:
engines/twine/debugger/debugtools.cpp
engines/twine/scene/actor.h
diff --git a/engines/twine/debugger/debugtools.cpp b/engines/twine/debugger/debugtools.cpp
index 823ea388af5..cc2e7bbf9fa 100644
--- a/engines/twine/debugger/debugtools.cpp
+++ b/engines/twine/debugger/debugtools.cpp
@@ -413,85 +413,159 @@ static void actorDetailsWindow(int &actorIdx, TwinEEngine *engine) {
ImGuiEx::InputInt("Armor", &actor->_armor);
ImGuiEx::InputBoundingBox(actorIdx, "Bounding box", actor->_boundingBox);
- if (ImGui::BeginTable("Properties", 2)) {
- ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthFixed);
- ImGui::TableSetupColumn("Value", ImGuiTableColumnFlags_WidthFixed);
- ImGui::TableHeadersRow();
-
- ImGui::TableNextColumn();
- ImGui::Text("Followed");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_followedActor);
- ImGui::TableNextColumn();
- ImGui::Text("Control mode");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_controlMode);
- ImGui::TableNextColumn();
- ImGui::Text("Delay");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_delayInMillis);
- ImGui::TableNextColumn();
- ImGui::Text("Strength");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_strengthOfHit);
- ImGui::TableNextColumn();
- ImGui::Text("Hit by");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_hitBy);
- ImGui::TableNextColumn();
- ImGui::Text("Bonus");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_bonusParameter);
- ImGui::TableNextColumn();
- ImGui::Text("Brick shape");
- ImGui::TableNextColumn();
- ImGui::Text("%s", toString(actor->brickShape()));
- ImGui::TableNextColumn();
- ImGui::Text("Brick causes damage");
- ImGui::TableNextColumn();
- ImGuiEx::Boolean(actor->brickCausesDamage());
- ImGui::TableNextColumn();
- ImGui::Text("Collision");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_objCol);
- ImGui::TableNextColumn();
- ImGui::Text("Talk color");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_talkColor);
- ImGui::TableNextColumn();
- ImGui::Text("Body");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_body); // TODO: link to resources
- ImGui::TableNextColumn();
- ImGui::Text("Gen body");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_genBody);
- ImGui::TableNextColumn();
- ImGui::Text("Save gen body");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_saveGenBody);
- ImGui::TableNextColumn();
- ImGui::Text("Gen anim");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_genAnim);
- ImGui::TableNextColumn();
- ImGui::Text("Next gen anim");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_nextGenAnim);
- ImGui::TableNextColumn();
- ImGui::Text("Ptr anim action");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_ptrAnimAction);
- ImGui::TableNextColumn();
- ImGui::Text("Sprite");
- ImGui::TableNextColumn();
- ImGui::Text("%i", actor->_sprite);
- ImGui::TableNextColumn();
- ImGui::Text("A3DS");
- ImGui::TableNextColumn();
- ImGui::Text("%i %i %i", actor->A3DS.Num, actor->A3DS.Deb, actor->A3DS.Fin);
+ if (ImGui::CollapsingHeader("Properties")) {
+ if (ImGui::BeginTable("Properties", 2)) {
+ ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthFixed);
+ ImGui::TableSetupColumn("Value", ImGuiTableColumnFlags_WidthFixed);
+ ImGui::TableHeadersRow();
- ImGui::EndTable();
+ ImGui::TableNextColumn();
+ ImGui::Text("Followed");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_followedActor);
+ ImGui::TableNextColumn();
+ ImGui::Text("Control mode");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_controlMode);
+ ImGui::TableNextColumn();
+ ImGui::Text("Delay");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_delayInMillis);
+ ImGui::TableNextColumn();
+ ImGui::Text("Strength");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_strengthOfHit);
+ ImGui::TableNextColumn();
+ ImGui::Text("Hit by");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_hitBy);
+ ImGui::TableNextColumn();
+ ImGui::Text("Bonus");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_bonusParameter);
+ ImGui::TableNextColumn();
+ ImGui::Text("ZoneSce");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_zoneSce);
+ ImGui::TableNextColumn();
+ ImGui::Text("Brick shape");
+ ImGui::TableNextColumn();
+ ImGui::Text("%s", toString(actor->brickShape()));
+ ImGui::TableNextColumn();
+ ImGui::Text("Brick causes damage");
+ ImGui::TableNextColumn();
+ ImGuiEx::Boolean(actor->brickCausesDamage());
+ ImGui::TableNextColumn();
+ ImGui::Text("Collision");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_objCol);
+ ImGui::TableNextColumn();
+ ImGui::Text("Talk color");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_talkColor);
+ ImGui::TableNextColumn();
+ ImGui::Text("Body");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_body); // TODO: link to resources
+ ImGui::TableNextColumn();
+ ImGui::Text("Gen body");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_genBody);
+ ImGui::TableNextColumn();
+ ImGui::Text("Save gen body");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_saveGenBody);
+ ImGui::TableNextColumn();
+ ImGui::Text("Gen anim");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_genAnim);
+ ImGui::TableNextColumn();
+ ImGui::Text("Next gen anim");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_nextGenAnim);
+ ImGui::TableNextColumn();
+ ImGui::Text("Ptr anim action");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_ptrAnimAction);
+ ImGui::TableNextColumn();
+ ImGui::Text("Sprite");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i", actor->_sprite);
+ ImGui::TableNextColumn();
+ ImGui::Text("A3DS");
+ ImGui::TableNextColumn();
+ ImGui::Text("%i %i %i", actor->A3DS.Num, actor->A3DS.Deb, actor->A3DS.Fin);
+
+ ImGui::EndTable();
+ }
+ }
+
+ if (ImGui::CollapsingHeader("Work Flags", ImGuiTreeNodeFlags_DefaultOpen)) {
+ static const char *Names[] = {
+ "WAIT_HIT_FRAME",
+ "OK_HIT",
+ "ANIM_END",
+ "NEW_FRAME",
+ "WAS_DRAWN",
+ "OBJ_DEAD",
+ "AUTO_STOP_DOOR",
+ "ANIM_MASTER_ROT",
+ "FALLING",
+ "IS_TARGETABLE",
+ "IS_BLINKING",
+ "DRAW_SHADOW",
+ "ANIM_MASTER_GRAVITY",
+ "SKATING",
+ "OK_RENVOIE",
+ "LEFT_JUMP",
+ "RIGHT_JUMP",
+ "WAIT_SUPER_HIT",
+ "TRACK_MASTER_ROT",
+ "FLY_JETPACK",
+ "DONT_PICK_CODE_JEU",
+ "MANUAL_INTER_FRAME",
+ "WAIT_COORD",
+ "CHECK_FALLING"};
+ if (ImGui::BeginTable("##workflags", 6)) {
+ for (int i = 0; i < ARRAYSIZE(Names); ++i) {
+ ImGui::TableNextColumn();
+ ImGui::CheckboxFlags(Names[i], (uint32_t *)&actor->_workFlags, (1 << i));
+ }
+ ImGui::EndTable();
+ }
+ }
+ if (ImGui::CollapsingHeader("Flags", ImGuiTreeNodeFlags_DefaultOpen)) {
+ static const char *Names[] = {
+ "CHECK_OBJ_COL",
+ "CHECK_BRICK_COL",
+ "CHECK_ZONE",
+ "SPRITE_CLIP",
+ "PUSHABLE",
+ "COL_BASSE",
+ "CHECK_CODE_JEU",
+ "CHECK_WATER_COL",
+ "0x000100",
+ "INVISIBLE",
+ "SPRITE_3D",
+ "OBJ_FALLABLE",
+ "NO_SHADOW",
+ "OBJ_BACKGROUND",
+ "OBJ_CARRIER",
+ "MINI_ZV",
+ "POS_INVALIDE",
+ "NO_CHOC",
+ "ANIM_3DS",
+ "NO_PRE_CLIP",
+ "OBJ_ZBUFFER",
+ "OBJ_IN_WATER",
+ };
+ if (ImGui::BeginTable("##staticflags", 6)) {
+ for (int i = 0; i < ARRAYSIZE(Names); ++i) {
+ ImGui::TableNextColumn();
+ ImGui::CheckboxFlags(Names[i], (uint32_t *)&actor->_staticFlags, (1 << i));
+ }
+ ImGui::EndTable();
+ }
}
if (actor->_body != -1) {
diff --git a/engines/twine/scene/actor.h b/engines/twine/scene/actor.h
index 6c090fb3fb6..2f3e9c55d63 100644
--- a/engines/twine/scene/actor.h
+++ b/engines/twine/scene/actor.h
@@ -70,7 +70,7 @@ struct StaticFlagsStruct {
uint32 bUnk0100 : 1; // 0x000100
uint32 bIsInvisible : 1; // 0x000200 INVISIBLE - not drawn but all computed
uint32 bSprite3D : 1; // 0x000400 SPRITE_3D - a sprite not a 3D object
- uint32 bObjFallable : 1; // 0x000800 OBJ_FALLABLE
+ uint32 bObjFallable : 1; // 0x000800 OBJ_FALLABLE
uint32 bNoShadow : 1; // 0x001000 NO_SHADOW - no auto shadow
uint32 bIsBackgrounded : 1; // 0x002000 OBJ_BACKGROUND - is embedded in the decor the 1st time
uint32 bIsCarrierActor : 1; // 0x004000 OBJ_CARRIER - can carry and move an obj
More information about the Scummvm-git-logs
mailing list