[Scummvm-git-logs] scummvm master -> 7003cf793f2ddc5b773293088a2b5e485bc8c105
dreammaster
noreply at scummvm.org
Fri Dec 3 04:48:27 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
6791dc2319 ULTIMA6: Fix pointer alignment
7003cf793f ULTIMA4: Don't pack a structure with pointers in it.
Commit: 6791dc23196cd71d09ecc44c510c6dd35a3f0787
https://github.com/scummvm/scummvm/commit/6791dc23196cd71d09ecc44c510c6dd35a3f0787
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2021-12-02T20:48:24-08:00
Commit Message:
ULTIMA6: Fix pointer alignment
This fails on Xcode arm64
Changed paths:
engines/ultima/nuvie/usecode/u6_object_types.h
engines/ultima/nuvie/usecode/u6_usecode.h
diff --git a/engines/ultima/nuvie/usecode/u6_object_types.h b/engines/ultima/nuvie/usecode/u6_object_types.h
index e5c9b65145..9ebb32357b 100644
--- a/engines/ultima/nuvie/usecode/u6_object_types.h
+++ b/engines/ultima/nuvie/usecode/u6_object_types.h
@@ -27,167 +27,167 @@ class U6UseCode;
const U6ObjectType U6ObjectTypes[] = {
// (object,frame,distance to trigger,event(s),function,properties)
- { OBJ_U6_EGG, 0, 0, USE_EVENT_USE/*|USE_EVENT_LOAD*/, &U6UseCode::use_egg, OBJTYPE_CONTAINER },
-
- { OBJ_U6_OAKEN_DOOR, 255, 0, USE_EVENT_USE, &U6UseCode::use_door, OBJTYPE_NONE },
- { OBJ_U6_WINDOWED_DOOR, 255, 0, USE_EVENT_USE, &U6UseCode::use_door, OBJTYPE_NONE },
- { OBJ_U6_CEDAR_DOOR, 255, 0, USE_EVENT_USE, &U6UseCode::use_door, OBJTYPE_NONE },
- { OBJ_U6_STEEL_DOOR, 255, 0, USE_EVENT_USE, &U6UseCode::use_door, OBJTYPE_NONE },
- { OBJ_U6_KEY, 255, 0, USE_EVENT_USE, &U6UseCode::use_key, OBJTYPE_NONE },
- { OBJ_U6_LOCK_PICK, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH | USE_EVENT_GET, &U6UseCode::use_key, OBJTYPE_NONE },
-
- { OBJ_U6_PROTECTION_RING, 0, 0, USE_EVENT_READY, &U6UseCode::magic_ring, OBJTYPE_NONE },
- { OBJ_U6_REGENERATION_RING, 0, 0, USE_EVENT_READY, &U6UseCode::magic_ring, OBJTYPE_NONE },
- { OBJ_U6_INVISIBILITY_RING, 0, 0, USE_EVENT_READY, &U6UseCode::magic_ring, OBJTYPE_NONE },
-
- { OBJ_U6_STAFF, 255, 0, USE_EVENT_USE, &U6UseCode::use_staff, OBJTYPE_NONE },
-
- { OBJ_U6_STORM_CLOAK, 0, 0, USE_EVENT_READY, &U6UseCode::storm_cloak, OBJTYPE_NONE },
-
- { OBJ_U6_SIGN, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_BOOK, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_SCROLL, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_PICTURE, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_SIGN_ARROW, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_TOMBSTONE, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_CROSS, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_CODEX, 0, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
- { OBJ_U6_BOOK_OF_CIRCLES, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_sign, OBJTYPE_BOOK },
-
- { OBJ_U6_CRATE, 0, 0, USE_EVENT_SEARCH, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_CRATE, 255, 0, USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_BARREL, 0, 0, USE_EVENT_SEARCH, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_BARREL, 255, 0, USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_CHEST, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_CHEST, 255, 0, USE_EVENT_USE | USE_EVENT_GET, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_SECRET_DOOR, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH, &U6UseCode::use_secret_door, OBJTYPE_NONE },
- { OBJ_U6_BAG, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_BACKPACK, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_BASKET, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DRAWER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DESK, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_STONE_LION, 1, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_NONE },
- { OBJ_U6_MOUSE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_GRAVE, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_NONE },
- { OBJ_U6_DEAD_ANIMAL, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DEAD_BODY, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DRAKE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DEAD_CYCLOPS, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DEAD_GARGOYLE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_REAPER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_REMAINS, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_DEER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
- { OBJ_U6_MONGBAT, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_container, OBJTYPE_CONTAINER },
-
- { OBJ_U6_V_PASSTHROUGH, 255, 0, USE_EVENT_USE, &U6UseCode::use_passthrough, OBJTYPE_NONE },
- { OBJ_U6_H_PASSTHROUGH, 255, 0, USE_EVENT_USE, &U6UseCode::use_passthrough, OBJTYPE_NONE },
-
- { OBJ_U6_LEVER, 255, 0, USE_EVENT_USE, &U6UseCode::use_switch, OBJTYPE_NONE },
- { OBJ_U6_SWITCH, 255, 0, USE_EVENT_USE, &U6UseCode::use_switch, OBJTYPE_NONE },
-
- { OBJ_U6_CHURN, 255, 0, USE_EVENT_USE, &U6UseCode::use_churn, OBJTYPE_NONE },
-
- { OBJ_U6_FISHING_POLE, 255, 0, USE_EVENT_USE, &U6UseCode::use_fishing_pole, OBJTYPE_NONE },
-
-
- { OBJ_U6_CRANK, 255, 0, USE_EVENT_USE, &U6UseCode::use_crank, OBJTYPE_NONE },
-
- { OBJ_U6_BED, 255, 0, USE_EVENT_SEARCH, &U6UseCode::use_container, OBJTYPE_CONTAINER },
-
- { OBJ_U6_FIREPLACE, 255, 0, USE_EVENT_USE, &U6UseCode::use_firedevice, OBJTYPE_NONE },
- { OBJ_U6_CANDLE, 255, 0, USE_EVENT_USE, &U6UseCode::use_firedevice, OBJTYPE_NONE },
- { OBJ_U6_CANDELABRA, 255, 0, USE_EVENT_USE, &U6UseCode::use_firedevice, OBJTYPE_NONE },
- { OBJ_U6_BRAZIER, 0, 0, USE_EVENT_USE, &U6UseCode::use_firedevice, OBJTYPE_NONE },
- { OBJ_U6_BRAZIER, 1, 0, USE_EVENT_USE, &U6UseCode::use_firedevice, OBJTYPE_NONE },
- { OBJ_U6_BRAZIER, 2, 0, USE_EVENT_LOOK, &U6UseCode::holy_flame, OBJTYPE_NONE },
- { OBJ_U6_TORCH, 255, 0, USE_EVENT_USE | USE_EVENT_READY | USE_EVENT_GET | USE_EVENT_DROP, &U6UseCode::torch, OBJTYPE_NONE },
- { OBJ_U6_SPELLBOOK, 255, 0, USE_EVENT_USE | USE_EVENT_LOOK, &U6UseCode::use_spellbook, OBJTYPE_NONE },
-
- { OBJ_U6_MOONSTONE, 255, 0, USE_EVENT_USE | USE_EVENT_GET, &U6UseCode::use_moonstone, OBJTYPE_NONE },
- { OBJ_U6_ORB_OF_THE_MOONS, 255, 0, USE_EVENT_USE, &U6UseCode::use_orb, OBJTYPE_NONE },
- { OBJ_U6_MOONGATE, 1, 0, USE_EVENT_PASS, &U6UseCode::enter_moongate, OBJTYPE_NONE },
- { OBJ_U6_RED_GATE, 1, 0, USE_EVENT_PASS, &U6UseCode::enter_moongate, OBJTYPE_NONE },
- { OBJ_U6_LADDER, 255, 0, USE_EVENT_USE, &U6UseCode::use_ladder, OBJTYPE_NONE },
- { OBJ_U6_CAVE, 255, 0, USE_EVENT_PASS, &U6UseCode::enter_dungeon, OBJTYPE_NONE },
- { OBJ_U6_HOLE, 255, 0, USE_EVENT_USE | USE_EVENT_PASS, &U6UseCode::enter_dungeon, OBJTYPE_NONE },
-
- { OBJ_U6_CLOCK, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_clock, OBJTYPE_NONE },
- { OBJ_U6_SUNDIAL, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_clock, OBJTYPE_NONE },
- { OBJ_U6_MIRROR, 255, 0, USE_EVENT_LOOK, &U6UseCode::look_mirror, OBJTYPE_NONE },
- { OBJ_U6_WELL, 255, 0, USE_EVENT_USE, &U6UseCode::use_well, OBJTYPE_NONE },
- { OBJ_U6_POWDER_KEG, 255, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_powder_keg, OBJTYPE_NONE },
- { OBJ_U6_GEM, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_peer_gem, OBJTYPE_NONE },
-
- { OBJ_U6_BEEHIVE, 255, 0, USE_EVENT_USE, &U6UseCode::use_beehive, OBJTYPE_NONE },
-
- { OBJ_U6_POTION, 255, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_potion, OBJTYPE_NONE },
- { OBJ_U6_BUTTER, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_WINE, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_MEAD, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_ALE, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_BREAD, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_MEAT_PORTION, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_ROLLS, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_CAKE, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_CHEESE, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_RIBS, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_MEAT, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_GRAPES, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_HAM, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_GARLIC, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_HORSE_CHOPS, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_JAR_OF_HONEY, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_DRAGON_EGG, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
- { OBJ_U6_FISH, 0, 0, USE_EVENT_USE, &U6UseCode::use_food, OBJTYPE_FOOD },
-
- { OBJ_U6_FAN, 0, 0, USE_EVENT_USE, &U6UseCode::use_fan, OBJTYPE_NONE },
- { OBJ_U6_SEXTANT, 0, 0, USE_EVENT_USE, &U6UseCode::use_sextant, OBJTYPE_NONE },
-
- { OBJ_U6_COW, 255, 0, USE_EVENT_USE, &U6UseCode::use_cow, OBJTYPE_NONE },
- { OBJ_U6_HORSE, 255, 0, USE_EVENT_USE, &U6UseCode::use_horse, OBJTYPE_NONE },
- { OBJ_U6_HORSE_WITH_RIDER, 255, 0, USE_EVENT_USE, &U6UseCode::use_horse, OBJTYPE_NONE },
-
- { OBJ_U6_SHIP, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH | USE_EVENT_LOOK, &U6UseCode::use_boat, OBJTYPE_NONE },
- { OBJ_U6_SKIFF, 255, 0, USE_EVENT_USE | USE_EVENT_GET | USE_EVENT_LOOK, &U6UseCode::use_boat, OBJTYPE_NONE },
- { OBJ_U6_RAFT, 0, 0, USE_EVENT_USE, &U6UseCode::use_boat, OBJTYPE_NONE },
+ { &U6UseCode::use_egg, OBJ_U6_EGG, 0, 0, USE_EVENT_USE/*|USE_EVENT_LOAD*/, OBJTYPE_CONTAINER },
+
+ { &U6UseCode::use_door, OBJ_U6_OAKEN_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_door, OBJ_U6_WINDOWED_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_door, OBJ_U6_CEDAR_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_door, OBJ_U6_STEEL_DOOR, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_key, OBJ_U6_KEY, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_key, OBJ_U6_LOCK_PICK, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH | USE_EVENT_GET, OBJTYPE_NONE },
+
+ { &U6UseCode::magic_ring, OBJ_U6_PROTECTION_RING, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
+ { &U6UseCode::magic_ring, OBJ_U6_REGENERATION_RING, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
+ { &U6UseCode::magic_ring, OBJ_U6_INVISIBILITY_RING, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
+
+ { &U6UseCode::use_staff, OBJ_U6_STAFF, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::storm_cloak, OBJ_U6_STORM_CLOAK, 0, 0, USE_EVENT_READY, OBJTYPE_NONE },
+
+ { &U6UseCode::look_sign, OBJ_U6_SIGN, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_BOOK, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_SCROLL, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_PICTURE, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_SIGN_ARROW, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_TOMBSTONE, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_CROSS, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_CODEX, 0, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+ { &U6UseCode::look_sign, OBJ_U6_BOOK_OF_CIRCLES, 255, 0, USE_EVENT_LOOK, OBJTYPE_BOOK },
+
+ { &U6UseCode::use_container, OBJ_U6_CRATE, 0, 0, USE_EVENT_SEARCH, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_CRATE, 255, 0, USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_BARREL, 0, 0, USE_EVENT_SEARCH, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_BARREL, 255, 0, USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_CHEST, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_CHEST, 255, 0, USE_EVENT_USE | USE_EVENT_GET, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_secret_door, OBJ_U6_SECRET_DOOR, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH, OBJTYPE_NONE },
+ { &U6UseCode::use_container, OBJ_U6_BAG, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_BACKPACK, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_BASKET, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DRAWER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DESK, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_STONE_LION, 1, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_container, OBJ_U6_MOUSE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_GRAVE, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_container, OBJ_U6_DEAD_ANIMAL, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DEAD_BODY, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DRAKE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DEAD_CYCLOPS, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DEAD_GARGOYLE, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_REAPER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_REMAINS, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_DEER, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_container, OBJ_U6_MONGBAT, 255, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+
+ { &U6UseCode::use_passthrough, OBJ_U6_V_PASSTHROUGH, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_passthrough, OBJ_U6_H_PASSTHROUGH, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_switch, OBJ_U6_LEVER, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_switch, OBJ_U6_SWITCH, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_churn, OBJ_U6_CHURN, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_fishing_pole, OBJ_U6_FISHING_POLE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+
+ { &U6UseCode::use_crank, OBJ_U6_CRANK, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_container, OBJ_U6_BED, 255, 0, USE_EVENT_SEARCH, OBJTYPE_CONTAINER },
+
+ { &U6UseCode::use_firedevice, OBJ_U6_FIREPLACE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_firedevice, OBJ_U6_CANDLE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_firedevice, OBJ_U6_CANDELABRA, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_firedevice, OBJ_U6_BRAZIER, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_firedevice, OBJ_U6_BRAZIER, 1, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::holy_flame, OBJ_U6_BRAZIER, 2, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::torch, OBJ_U6_TORCH, 255, 0, USE_EVENT_USE | USE_EVENT_READY | USE_EVENT_GET | USE_EVENT_DROP, OBJTYPE_NONE },
+ { &U6UseCode::use_spellbook, OBJ_U6_SPELLBOOK, 255, 0, USE_EVENT_USE | USE_EVENT_LOOK, OBJTYPE_NONE },
+
+ { &U6UseCode::use_moonstone, OBJ_U6_MOONSTONE, 255, 0, USE_EVENT_USE | USE_EVENT_GET, OBJTYPE_NONE },
+ { &U6UseCode::use_orb, OBJ_U6_ORB_OF_THE_MOONS, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::enter_moongate, OBJ_U6_MOONGATE, 1, 0, USE_EVENT_PASS, OBJTYPE_NONE },
+ { &U6UseCode::enter_moongate, OBJ_U6_RED_GATE, 1, 0, USE_EVENT_PASS, OBJTYPE_NONE },
+ { &U6UseCode::use_ladder, OBJ_U6_LADDER, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::enter_dungeon, OBJ_U6_CAVE, 255, 0, USE_EVENT_PASS, OBJTYPE_NONE },
+ { &U6UseCode::enter_dungeon, OBJ_U6_HOLE, 255, 0, USE_EVENT_USE | USE_EVENT_PASS, OBJTYPE_NONE },
+
+ { &U6UseCode::look_clock, OBJ_U6_CLOCK, 255, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::look_clock, OBJ_U6_SUNDIAL, 255, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::look_mirror, OBJ_U6_MIRROR, 255, 0, USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::use_well, OBJ_U6_WELL, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_powder_keg, OBJ_U6_POWDER_KEG, 255, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_peer_gem, OBJ_U6_GEM, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_beehive, OBJ_U6_BEEHIVE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_potion, OBJ_U6_POTION, 255, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_food, OBJ_U6_BUTTER, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_WINE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_MEAD, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_ALE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_BREAD, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_MEAT_PORTION, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_ROLLS, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_CAKE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_CHEESE, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_RIBS, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_MEAT, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_GRAPES, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_HAM, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_GARLIC, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_HORSE_CHOPS, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_JAR_OF_HONEY, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_DRAGON_EGG, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+ { &U6UseCode::use_food, OBJ_U6_FISH, 0, 0, USE_EVENT_USE, OBJTYPE_FOOD },
+
+ { &U6UseCode::use_fan, OBJ_U6_FAN, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_sextant, OBJ_U6_SEXTANT, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_cow, OBJ_U6_COW, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_horse, OBJ_U6_HORSE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_horse, OBJ_U6_HORSE_WITH_RIDER, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_boat, OBJ_U6_SHIP, 255, 0, USE_EVENT_USE | USE_EVENT_SEARCH | USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::use_boat, OBJ_U6_SKIFF, 255, 0, USE_EVENT_USE | USE_EVENT_GET | USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::use_boat, OBJ_U6_RAFT, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
// don't want OBJTYPE_BOOK so that we will always use the plans when double clicking
- { OBJ_U6_BALLOON_PLANS, 0, 0, USE_EVENT_USE | USE_EVENT_LOOK, &U6UseCode::use_balloon_plans, OBJTYPE_NONE },
- { OBJ_U6_BALLOON, 0, 0, USE_EVENT_USE, &U6UseCode::use_balloon, OBJTYPE_NONE },
- { OBJ_U6_INFLATED_BALLOON, 255, 0, USE_EVENT_USE, &U6UseCode::use_balloon, OBJTYPE_NONE },
-
- { OBJ_U6_QUEST_GATE, 0, 0, USE_EVENT_PASS, &U6UseCode::pass_quest_barrier, OBJTYPE_NONE },
-
- { OBJ_U6_RUNE_HONESTY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_COMPASSION, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_VALOR, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_JUSTICE, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_SACRIFICE, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_HONOR, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_SPIRITUALITY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
- { OBJ_U6_RUNE_HUMILITY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_rune, OBJTYPE_NONE },
-
- { OBJ_U6_CAMPFIRE, 255, 0, USE_EVENT_USE, &U6UseCode::use_firedevice, OBJTYPE_NONE },
-
- { OBJ_U6_VORTEX_CUBE, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_vortex_cube, OBJTYPE_CONTAINER },
- { OBJ_U6_PULL_CHAIN, 0, 0, USE_EVENT_USE, &U6UseCode::use_bell, OBJTYPE_NONE },
- { OBJ_U6_BELL, 255, 0, USE_EVENT_USE, &U6UseCode::use_bell, OBJTYPE_NONE },
- { OBJ_U6_SHOVEL, 0, 0, USE_EVENT_USE, &U6UseCode::use_shovel, OBJTYPE_NONE },
- { OBJ_U6_PICK, 0, 0, USE_EVENT_USE, &U6UseCode::use_shovel, OBJTYPE_NONE },
- { OBJ_U6_FOUNTAIN, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_fountain, OBJTYPE_NONE },
- { OBJ_U6_RUBBER_DUCKY, 0, 0, USE_EVENT_USE, &U6UseCode::use_rubber_ducky, OBJTYPE_NONE },
- { OBJ_U6_CANNON, 255, 0, USE_EVENT_USE | USE_EVENT_MOVE | USE_EVENT_MESSAGE, &U6UseCode::use_cannon, OBJTYPE_NONE },
- { OBJ_U6_AMULET_OF_SUBMISSION, 0, 0, USE_EVENT_READY | USE_EVENT_DROP | USE_EVENT_MOVE, &U6UseCode::amulet_of_submission, OBJTYPE_NONE },
- { OBJ_U6_GARGISH_VOCABULARY, 0, 0, USE_EVENT_USE, &U6UseCode::gargish_vocabulary, OBJTYPE_NONE },
-
- { OBJ_U6_CRYSTAL_BALL, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, &U6UseCode::use_crystal_ball, OBJTYPE_NONE },
-
- { OBJ_U6_PANPIPES, 0, 0, USE_EVENT_USE, &U6UseCode::play_instrument, OBJTYPE_NONE },
- { OBJ_U6_HARPSICHORD, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, &U6UseCode::use_harpsichord, OBJTYPE_NONE },
- { OBJ_U6_HARP, 0, 0, USE_EVENT_USE, &U6UseCode::play_instrument, OBJTYPE_NONE },
- { OBJ_U6_LUTE, 0, 0, USE_EVENT_USE, &U6UseCode::play_instrument, OBJTYPE_NONE },
- { OBJ_U6_XYLOPHONE, 0, 0, USE_EVENT_USE, &U6UseCode::play_instrument, OBJTYPE_NONE },
-
- { OBJ_U6_NOTHING, 0, 0, 0, NULL, OBJTYPE_NONE } // end indicator
+ { &U6UseCode::use_balloon_plans, OBJ_U6_BALLOON_PLANS, 0, 0, USE_EVENT_USE | USE_EVENT_LOOK, OBJTYPE_NONE },
+ { &U6UseCode::use_balloon, OBJ_U6_BALLOON, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_balloon, OBJ_U6_INFLATED_BALLOON, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::pass_quest_barrier, OBJ_U6_QUEST_GATE, 0, 0, USE_EVENT_PASS, OBJTYPE_NONE },
+
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_HONESTY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_COMPASSION, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_VALOR, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_JUSTICE, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_SACRIFICE, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_HONOR, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_SPIRITUALITY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rune, OBJ_U6_RUNE_HUMILITY, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_firedevice, OBJ_U6_CAMPFIRE, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_vortex_cube, OBJ_U6_VORTEX_CUBE, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_CONTAINER },
+ { &U6UseCode::use_bell, OBJ_U6_PULL_CHAIN, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_bell, OBJ_U6_BELL, 255, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_shovel, OBJ_U6_SHOVEL, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_shovel, OBJ_U6_PICK, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_fountain, OBJ_U6_FOUNTAIN, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::use_rubber_ducky, OBJ_U6_RUBBER_DUCKY, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_cannon, OBJ_U6_CANNON, 255, 0, USE_EVENT_USE | USE_EVENT_MOVE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+ { &U6UseCode::amulet_of_submission, OBJ_U6_AMULET_OF_SUBMISSION, 0, 0, USE_EVENT_READY | USE_EVENT_DROP | USE_EVENT_MOVE, OBJTYPE_NONE },
+ { &U6UseCode::gargish_vocabulary, OBJ_U6_GARGISH_VOCABULARY, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { &U6UseCode::use_crystal_ball, OBJ_U6_CRYSTAL_BALL, 0, 0, USE_EVENT_USE | USE_EVENT_MESSAGE, OBJTYPE_NONE },
+
+ { &U6UseCode::play_instrument, OBJ_U6_PANPIPES, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::use_harpsichord, OBJ_U6_HARPSICHORD, 0, 0, USE_EVENT_SEARCH | USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::play_instrument, OBJ_U6_HARP, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::play_instrument, OBJ_U6_LUTE, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+ { &U6UseCode::play_instrument, OBJ_U6_XYLOPHONE, 0, 0, USE_EVENT_USE, OBJTYPE_NONE },
+
+ { nullptr, OBJ_U6_NOTHING, 0, 0, 0, OBJTYPE_NONE } // end indicator
};
} // End of namespace Nuvie
diff --git a/engines/ultima/nuvie/usecode/u6_usecode.h b/engines/ultima/nuvie/usecode/u6_usecode.h
index df8d89bbed..51243ed450 100644
--- a/engines/ultima/nuvie/usecode/u6_usecode.h
+++ b/engines/ultima/nuvie/usecode/u6_usecode.h
@@ -51,19 +51,14 @@ class MsgScroll;
#define TORCH_LIGHT_LEVEL 3
-// Explicit packing used below to fix MSVC warning
-#include "common/pack-start.h" // START STRUCT PACKING
-
struct U6ObjectType { // object properties & usecode
+ bool (U6UseCode::*usefunc)(Obj *, UseCodeEvent); // usecode function
uint16 obj_n; // type
uint8 frame_n; // 0xFF matches any frame
uint8 dist; // distance to trigger (depends on event, usually 0)
UseCodeEvent trigger; // accepted event(s)
- bool (U6UseCode::*usefunc)(Obj *, UseCodeEvent); // usecode function
uint16 flags; // properties (OBJTYPE)
-} PACKED_STRUCT;
-
-#include "common/pack-end.h" // END STRUCT PACKING
+};
typedef enum {
LAT,
Commit: 7003cf793f2ddc5b773293088a2b5e485bc8c105
https://github.com/scummvm/scummvm/commit/7003cf793f2ddc5b773293088a2b5e485bc8c105
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2021-12-02T20:48:24-08:00
Commit Message:
ULTIMA4: Don't pack a structure with pointers in it.
This would lead to unaligned pointer accesses which is prevented by
latest Xcode
Changed paths:
engines/ultima/ultima4/game/item.h
diff --git a/engines/ultima/ultima4/game/item.h b/engines/ultima/ultima4/game/item.h
index ae0cb3665f..c197e0137c 100644
--- a/engines/ultima/ultima4/game/item.h
+++ b/engines/ultima/ultima4/game/item.h
@@ -44,7 +44,6 @@ class Items;
typedef bool (Items::*IsInInventoryProc)(int item);
typedef void (Items::*InventoryActionProc)(int item);
-#include "common/pack-start.h" // START STRUCT PACKING
struct ItemLocation {
const char *_name;
const char *_shortName;
@@ -54,8 +53,7 @@ struct ItemLocation {
InventoryActionProc _useItem;
int _data;
byte _conditions;
-} PACKED_STRUCT;
-#include "common/pack-end.h" // END STRUCT PACKING
+};
typedef void (*DestroyAllCreaturesCallback)();
#define N_ITEMS 34
More information about the Scummvm-git-logs
mailing list