scraps

Abandon all hope, ye who enter here.
git clone https://git.neptards.moe/neptards/scraps.git
Log | Files | Refs | Submodules | README | LICENSE

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