#ifndef GAME_DATA_H_9C42AC51#define GAME_DATA_H_9C42AC51#include<map>#include<optional>#include<string>#include<vector>enumclassLingoColor{kNone,kBlack,kRed,kBlue,kYellow,kGreen,kOrange,kPurple,kBrown,kGray};constexprintkLOCATION_NORMAL=1;constexprintkLOCATION_REDUCED=2;constexprintkLOCATION_INSANITY=4;structPanel{intid;introom;std::stringname;std::vector<LingoColor>colors;std::vector<int>required_rooms;std::vector<int>required_doors;std::vector<int>required_panels;boolcheck=false;boolexclude_reduce=false;boolachievement=false;std::stringachievement_name;boolnon_counting=false;};structProgressiveRequirement{std::stringitem_name;intquantity=0;};structDoor{introom;std::stringname;std::stringlocation_name;std::stringitem_name;std::stringgroup_name;boolskip_location=false;boolskip_item=false;boolis_event=false;std::vector<int>panels;boolexclude_reduce=true;std::vector<ProgressiveRequirement>progressives;};structExit{intdestination_room;std::optional<int>door;boolpainting=false;};structPaintingExit{std::stringid;std::optional<int>door;};structRoom{std::stringname;std::vector<Exit>exits;std::vector<PaintingExit>paintings;std::vector<int>panels;};structLocation{std::stringname;std::stringap_location_name;introom;std::vector<int>panels;intclassification=0;};structMapArea{intid;std::stringname;std::vector<Location>locations;intmap_x;intmap_y;intclassification=0;};conststd::vector<MapArea>&GD_GetMapAreas();constMapArea&GD_GetMapArea(intid);intGD_GetRoomByName(conststd::string&name);constRoom&GD_GetRoom(introom_id);conststd::vector<Door>&GD_GetDoors();constDoor&GD_GetDoor(intdoor_id);constPanel&GD_GetPanel(intpanel_id);intGD_GetRoomForPainting(conststd::string&painting_id);conststd::vector<int>&GD_GetAchievementPanels();#endif /* end of include guard: GAME_DATA_H_9C42AC51 */