[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