action.hpp (14521B)
1 #ifndef GUARD_PLANKWISE_ALLITERATIVE_MOCKTAIL_ADOLESCES_5630 2 #define GUARD_PLANKWISE_ALLITERATIVE_MOCKTAIL_ADOLESCES_5630 3 #pragma once 4 5 #include <boost/preprocessor/seq/for_each.hpp> // IWYU pragma: export 6 7 #include <cstdint> // IWYU pragma: keep 8 9 namespace Scraps::Format::Proto 10 { 11 12 #define SCRAPS_ACTION_NAME_I 0 13 #define SCRAPS_ACTION_VALUE_I 1 14 #define SCRAPS_ACTION_RAGS_NAME_I 2 15 #define SCRAPS_ACTION_RAGS_VALUE_I 3 16 17 #define SCRAPS_ACTION_FOR_EACH_IMPL(r, macro, tuple) macro tuple 18 #define SCRAPS_ACTION_FOR_EACH(macro, x) \ 19 BOOST_PP_SEQ_FOR_EACH(SCRAPS_ACTION_FOR_EACH_IMPL, macro, x) 20 21 // ((enum_name, scraps_enum_value, serialized_string, rags_enum_value)) 22 // enum_name and scraps_enum_value can be changed to be more consistent, 23 // the other two not 24 #define SCRAPS_IF_TYPES \ 25 ((UNINITIALIZED, 0, CT_Uninitialized, 0)) \ 26 ((ADDITIONAL_DATA, 1, CT_AdditionalDataCheck, 1)) \ 27 ((CHARACTER_CUSTOM_PROPERTY, 2, CT_Character_CustomPropertyCheck, 2)) \ 28 ((CHARACTER_GENDER, 3, CT_Character_Gender, 3)) \ 29 ((CHARACTER_IN_ROOM, 4, CT_Character_In_Room, 4)) \ 30 ((CHARACTER_IN_ROOM_GROUP, 5, CT_Character_In_RoomGroup, 5)) \ 31 ((FILE_IN_GROUP, 6, CT_MultiMedia_InGroup, 26)) \ 32 ((OBJECT_CUSTOM_PROPERTY, 7, CT_Item_CustomPropertyCheck, 6)) \ 33 ((OBJECT_IN_CHARACTER, 8, CT_Item_Held_By_Character, 8)) \ 34 ((OBJECT_IN_GROUP, 9, CT_Item_InGroup, 7)) \ 35 ((OBJECT_IN_OBJECT, 10, CT_Item_In_Object, 10)) \ 36 ((OBJECT_IN_PLAYER, 11, CT_Item_Held_By_Player, 9)) \ 37 ((OBJECT_IN_ROOM, 12, CT_Item_In_Room, 11)) \ 38 ((OBJECT_IN_ROOM_GROUP, 13, CT_Item_In_RoomGroup, 12)) \ 39 ((OBJECT_NOT_IN_OBJECT, 14, CT_Item_Not_In_Object, 14)) \ 40 ((OBJECT_NOT_IN_PLAYER, 15, CT_Item_Not_Held_By_Player, 13)) \ 41 ((OBJECT_STATE, 16, CT_Item_State_Check, 15)) \ 42 ((PLAYER_CUSTOM_PROPERTY, 17, CT_Player_CustomPropertyCheck, 27)) \ 43 ((PLAYER_GENDER, 18, CT_Player_Gender, 28)) \ 44 ((PLAYER_IN_ROOM, 19, CT_Player_In_Room, 29)) \ 45 ((PLAYER_IN_ROOM_GROUP, 20, CT_Player_In_RoomGroup, 30)) \ 46 ((PLAYER_IN_SAME_ROOM_AS, 21, CT_Player_In_Same_Room_As, 31)) \ 47 ((PLAYER_MOVING, 22, CT_Player_Moving, 32)) \ 48 ((ROOM_CUSTOM_PROPERTY, 23, CT_Room_CustomPropertyCheck, 33)) \ 49 ((TIMER_CUSTOM_PROPERTY, 24, CT_Timer_CustomPropertyCheck, 34)) \ 50 ((VARIABLE_COMPARE_IMMEDIATE, 25, CT_Variable_Comparison, 35)) \ 51 ((VARIABLE_COMPARE_VARIABLE, 26, CT_Variable_To_Variable_Comparison, 36)) \ 52 ((VARIABLE_CUSTOM_PROPERTY, 27, CT_Variable_CustomPropertyCheck, 37)) 53 #define SCRAPS_IF_COUNT 28 54 55 #define SCRAPS_LOOP_TYPES \ 56 ((WHILE, -1, CT_Loop_While, 16)) \ 57 ((CHARACTERS, -2, CT_Loop_Characters, 17)) \ 58 ((OBJECTS, -3, CT_Loop_Items, 18)) \ 59 ((OBJECTS_IN_GROUP, -4, CT_Loop_Item_Group, 19)) \ 60 ((OBJECTS_IN_CHARACTER, -5, CT_Loop_Item_Char_Inventory, 23)) \ 61 ((OBJECTS_IN_OBJECT, -6, CT_Loop_Item_Container, 20)) \ 62 ((OBJECTS_IN_PLAYER, -7, CT_Loop_Item_Inventory, 22)) \ 63 ((OBJECTS_IN_ROOM, -8, CT_Loop_Item_Room, 21)) \ 64 ((ROOMS, -9, CT_Loop_Rooms, 24)) \ 65 ((ROOM_EXITS, -10, CT_Loop_Exits, 25)) 66 #define SCRAPS_LOOP_COUNT 10 67 68 // naming convention: target verb [details] 69 // TODO: should I renumber the enum aswell? 70 #define SCRAPS_COMMAND_TYPES \ 71 ((UNINITIALIZED, 0, CT_UNINITIALIZED, 0)) \ 72 /* operating on an object with ID and state */ \ 73 ((ACTION_CUSTOM_CHOICE_ADD, 1, CT_ACTION_ADD_CUSTOMCHOICE, 1)) \ 74 ((ACTION_CUSTOM_CHOICE_CLEAR, 2, CT_ACTION_CLEAR_CUSTOMCHOICE, 2)) \ 75 ((ACTION_CUSTOM_CHOICE_REMOVE, 3, CT_ACTION_REMOVE_CUSTOMCHOICE, 3)) \ 76 ((CHARACTER_ACTION_SET, 10, CT_SETCHARACTION, 10)) \ 77 ((CHARACTER_CUSTOM_PROPERTY_SET, 11, CT_CHAR_SET_CUSTOM_PROPERTY, 11)) \ 78 ((CHARACTER_CUSTOM_PROPERTY_SET_JS, 12, CT_CHAR_SET_CUSTOM_PROPERTY_JS, 12)) \ 79 ((CHARACTER_DESCRIPTION_SET, 13, CT_SETCHARDESC, 13)) \ 80 ((CHARACTER_DESCRIPTION_SHOW, 4, CT_DISPLAYCHARDESC, 4)) \ 81 ((CHARACTER_GENDER_SET, 14, CT_CHAR_SET_GENDER, 14)) \ 82 ((CHARACTER_IMAGE_SET, 9, CT_CHAR_SETPORT, 9)) \ 83 ((CHARACTER_IMAGE_SHOW, 5, CT_CHAR_DISPLAYPORT, 5)) \ 84 ((CHARACTER_MOVE, 6, CT_MOVECHAR, 6)) \ 85 ((CHARACTER_MOVE_TO_OBJECT, 8, CT_CHAR_MOVETOOBJ, 8)) \ 86 ((CHARACTER_NAME_OVERRIDE_SET, 15, CT_CHAR_SET_NAME, 15)) \ 87 ((FILE_BACKGROUND_MUSIC_SET, 25, CT_MM_SET_BACKGROUND_MUSIC, 25)) \ 88 ((FILE_BACKGROUND_MUSIC_STOP, 26, CT_MM_STOP_BACKGROUND_MUSIC, 26)) \ 89 ((FILE_COMPASS_MAIN_SET, 28, CT_MM_SET_MAIN_COMPASS, 28)) \ 90 ((FILE_COMPASS_UP_DOWN_SET, 29, CT_MM_SET_UD_COMPASS, 29)) \ 91 ((FILE_LAYER_ADD, 30, CT_LAYEREDIMAGE_ADD, 30)) \ 92 ((FILE_LAYER_CLEAR, 31, CT_LAYEREDIMAGE_CLEAR, 31)) \ 93 ((FILE_LAYER_REMOVE, 32, CT_LAYEREDIMAGE_REMOVE, 32)) \ 94 ((FILE_LAYER_REPLACE, 33, CT_LAYEREDIMAGE_REPLACE, 33)) \ 95 ((FILE_SHOW, 24, CT_DISPLAYPICTURE, 24)) \ 96 ((FILE_SHOW_IN_OVERLAY, 23, CT_DISPLAYLAYEREDPICTURE, 23)) \ 97 ((FILE_SOUND_EFFECT_PLAY, 27, CT_MM_PLAY_SOUNDEFFECT, 27)) \ 98 ((OBJECTS_MOVE_CHARACTER_TO_PLAYER, 7, CT_MOVECHARINVTOPLAYER, 7)) \ 99 ((OBJECTS_MOVE_OBJECT_TO_OBJECT, 50, CT_ITEMS_MOVE_CONTAINER_TO_CONTAINER, 50)) \ 100 ((OBJECTS_MOVE_PLAYER_TO_CHARACTER, 55, CT_MOVEINVENTORYTOCHAR, 55)) \ 101 ((OBJECTS_MOVE_PLAYER_TO_ROOM, 56, CT_MOVEINVENTORYTOROOM, 56)) \ 102 ((OBJECTS_MOVE_ROOM_TO_PLAYER, 69, CT_ROOM_MOVE_ITEMS_TO_PLAYER, 69)) \ 103 ((OBJECT_ACTION_SET, 41, CT_SETOBJECTACTION, 41)) \ 104 ((OBJECT_CUSTOM_PROPERTY_SET, 42, CT_ITEM_SET_CUSTOM_PROPERTY, 42)) \ 105 ((OBJECT_CUSTOM_PROPERTY_SET_JS, 43, CT_ITEM_SET_CUSTOM_PROPERTY_JS, 43)) \ 106 ((OBJECT_DESCRIPTION_SET, 44, CT_SETITEMDESC, 44)) \ 107 ((OBJECT_DESCRIPTION_SHOW, 34, CT_DISPLAYITEMDESC, 34)) \ 108 ((OBJECT_LOCKED_SET, 46, CT_SETLOCKEDUNLOCKED, 46)) \ 109 ((OBJECT_MOVE_TO_CHARACTER, 37, CT_MOVEITEMTOCHAR, 37)) \ 110 ((OBJECT_MOVE_TO_OBJECT, 39, CT_MOVEITEMTOOBJ, 39)) \ 111 ((OBJECT_MOVE_TO_PLAYER, 38, CT_MOVEITEMTOINV, 38)) \ 112 ((OBJECT_MOVE_TO_ROOM, 40, CT_MOVEITEMTOROOM, 40)) \ 113 ((OBJECT_NAME_OVERRIDE_SET, 45, CT_ITEM_SET_NAME_OVERRIDE, 45)) \ 114 ((OBJECT_OPEN_SET, 47, CT_SETOPENCLOSED, 47)) \ 115 ((OBJECT_VISIBLE_SET, 49, CT_ITEM_SET_VISIBILITY, 49)) \ 116 ((OBJECT_WORN_SET, 48, CT_SETITEMTOWORN, 48)) \ 117 ((OBJECT_ZONE_REMOVE, 35, CT_ITEM_LAYERED_REMOVE, 35)) \ 118 ((OBJECT_ZONE_WEAR, 36, CT_ITEM_LAYERED_WEAR, 36)) \ 119 ((PLAYER_ACTION_SET, 62, CT_SETPLAYERACTION, 62)) \ 120 ((PLAYER_CUSTOM_PROPERTY_SET, 60, CT_PLAYER_SET_CUSTOM_PROPERTY, 60)) \ 121 ((PLAYER_CUSTOM_PROPERTY_SET_JS, 61, CT_PLAYER_SET_CUSTOM_PROPERTY_JS, 61)) \ 122 ((PLAYER_DESCRIPTION_SET, 63, CT_SETPLAYERDESC, 63)) \ 123 ((PLAYER_DESCRIPTION_SHOW, 53, CT_DISPLAYPLAYERDESC, 53)) \ 124 ((PLAYER_GENDER_SET, 64, CT_SETPLAYERGENDER, 64)) \ 125 ((PLAYER_IMAGE_SET, 66, CT_SETPLAYERPORTRAIT, 66)) \ 126 ((PLAYER_IMAGE_SET_OVERLAY, 54, CT_SETLAYEREDPLAYERPORTRAIT, 54)) \ 127 ((PLAYER_MOVE, 57, CT_MOVEPLAYER, 57)) \ 128 ((PLAYER_MOVE_TO_CHARACTER, 58, CT_MOVETOCHAR, 58)) \ 129 ((PLAYER_MOVE_TO_OBJECT, 59, CT_MOVETOOBJ, 59)) \ 130 ((PLAYER_NAME_OVERRIDE_SET, 65, CT_SETPLAYERNAME, 65)) \ 131 ((ROOM_ACTION_SET, 70, CT_SETROOMACTION, 70)) \ 132 ((ROOM_CUSTOM_PROPERTY_SET, 71, CT_ROOM_SET_CUSTOM_PROPERTY, 71)) \ 133 ((ROOM_CUSTOM_PROPERTY_SET_JS, 72, CT_ROOM_SET_CUSTOM_PROPERTY_JS, 72)) \ 134 ((ROOM_DESCRIPTION_SET, 73, CT_SETROOMDESCRIPTION, 73)) \ 135 ((ROOM_DESCRIPTION_SHOW, 67, CT_DISPLAYROOMDESCRIPTION, 67)) \ 136 ((ROOM_EXIT_ACTIVE_SET, 74, CT_SETEXIT, 74)) \ 137 ((ROOM_EXIT_DESTINATION_SET, 75, CT_SETEXITDESTINATION, 75)) \ 138 ((ROOM_IMAGE_SET, 78, CT_SETROOMPIC, 78)) \ 139 ((ROOM_IMAGE_SET_OVERLAY, 77, CT_SETROOMLAYEREDPIC, 77)) \ 140 ((ROOM_IMAGE_SHOW, 68, CT_DISPLAYROOMPICTURE, 68)) \ 141 ((ROOM_NAME_OVERRIDE_SET, 76, CT_ROOM_SET_NAME_OVERRIDE, 76)) \ 142 ((STATUS_BAR_ITEM_VISIBLE_SET, 79, CT_Status_ItemVisibleInvisible, 79)) \ 143 ((TIMER_ACTIVE_SET, 84, CT_SETTIMER, 84)) \ 144 ((TIMER_CUSTOM_PROPERTY_SET, 82, CT_TIMER_SET_CUSTOM_PROPERTY, 82)) \ 145 ((TIMER_CUSTOM_PROPERTY_SET_JS, 83, CT_TIMER_SET_CUSTOM_PROPERTY_JS, 83)) \ 146 ((TIMER_EXECUTE, 80, CT_EXECUTETIMER, 80)) \ 147 ((TIMER_RESET, 81, CT_RESETTIMER, 81)) \ 148 ((VARIABLE_CUSTOM_PROPERTY_SET, 92, CT_VARIABLE_SET_CUSTOM_PROPERTY, 92)) \ 149 ((VARIABLE_CUSTOM_PROPERTY_SET_JS, 93, CT_VARIABLE_SET_CUSTOM_PROPERTY_JS, 93)) \ 150 ((VARIABLE_EXPORT, 20, CT_EXPORTVARIABLE, 20)) \ 151 ((VARIABLE_IMPORT, 21, CT_IMPORTVARIABLE, 21)) \ 152 ((VARIABLE_SET, 86, CT_SETVARIABLE, 86)) \ 153 ((VARIABLE_SET_CHARACTER_PROPERTY, 95, CT_VARIABLE_SET_WITH_CHARPROPERTYVALUE, 95)) \ 154 ((VARIABLE_SET_INPUT_NUMBER, 91, CT_SETVARIABLE_NUMERIC_BYINPUT, 91)) \ 155 ((VARIABLE_SET_INPUT_STRING, 90, CT_SETVARIABLEBYINPUT, 90)) \ 156 ((VARIABLE_SET_JS, 89, CT_VARIABLE_SET_JAVASCRIPT, 89)) \ 157 ((VARIABLE_SET_OBJECT_PROPERTY, 96, CT_VARIABLE_SET_WITH_ITEMPROPERTYVALUE, 96)) \ 158 ((VARIABLE_SET_PLAYER_PROPERTY, 97, CT_VARIABLE_SET_WITH_PLAYERPROPERTYVALUE, 97)) \ 159 ((VARIABLE_SET_RANDOM, 94, CT_VARIABLE_SET_RANDOMLY, 94)) \ 160 ((VARIABLE_SET_RANDOM_FILE_GROUP, 88, CT_MM_GETRANDOMGROUP, 88)) \ 161 ((VARIABLE_SET_RANDOM_OBJECT_GROUP, 87, CT_ITEM_GETRANDOMGROUP, 87)) \ 162 ((VARIABLE_SET_ROOM_PROPERTY, 98, CT_VARIABLE_SET_WITH_ROOMPROPERTYVALUE, 98)) \ 163 ((VARIABLE_SET_TIMER_PROPERTY, 99, CT_VARIABLE_SET_WITH_TIMERPROPERTYVALUE, 99)) \ 164 ((VARIABLE_SET_VARIABLE, 100, CT_VARIABLE_SET_WITH_VARIABLE, 100)) \ 165 ((VARIABLE_SET_VARIABLE_PROPERTY, 101, CT_VARIABLE_SET_WITH_VARIABLEPROPERTYVALUE, 101)) \ 166 ((VARIABLE_SHOW, 85, CT_DISPLAYVARIABLE, 85)) \ 167 /* global & misc */ \ 168 ((BREAK, 51, CT_LOOP_BREAK, 51)) \ 169 ((COMMENT, 16, CT_COMMENT, 16)) \ 170 ((DEBUG_TEXT, 17, CT_DEBUGTEXT, 17)) \ 171 ((EVALUATE_JS, 18, CT_JAVA_SET_RAGS, 18)) \ 172 ((GAME_END, 102, CT_ENDGAME, 102)) \ 173 ((MOVE_CANCEL, 52, CT_CANCELMOVE, 52)) \ 174 ((PAUSE, 22, CT_PAUSEGAME, 22)) \ 175 ((SHOW_TEXT, 19, CT_DISPLAYTEXT, 19)) 176 #define SCRAPS_COMMAND_COUNT 103 177 178 #define SCRAPS_GEN_ENUM(name, val, rags_name, rags_val) name = val, 179 180 enum class IfType : std::int16_t 181 { SCRAPS_ACTION_FOR_EACH(SCRAPS_GEN_ENUM, SCRAPS_IF_TYPES) }; 182 enum class LoopType : std::int16_t 183 { SCRAPS_ACTION_FOR_EACH(SCRAPS_GEN_ENUM, SCRAPS_LOOP_TYPES) }; 184 enum class CommandType : std::uint16_t 185 { SCRAPS_ACTION_FOR_EACH(SCRAPS_GEN_ENUM, SCRAPS_COMMAND_TYPES) }; 186 187 #undef SCRAPS_GEN_ENUM 188 189 } 190 191 #endif