├── .gitignore ├── AnimTile.h ├── CMakeLists.txt ├── DeltaShadow.Program.cpp ├── DeltaShadow.Program.h ├── DeltaShadow.SetupForm.cpp ├── DeltaShadow.SetupForm.h ├── DeltaShadow.pro ├── Environment ├── PrimaryScreen.cpp ├── PrimaryScreen.h ├── SpecialFolder.cpp └── SpecialFolder.h ├── EventsObjects.cpp ├── EventsObjects.h ├── GEngine.cpp ├── GEngine.h ├── GameObject.cpp ├── GameObject.h ├── GameObjectsSubprog.cpp ├── GameObjectsSubprog.h ├── LICENSE ├── Main.cpp ├── Main.h ├── Menu.cpp ├── Menu.h ├── ObjectAnimation.cpp ├── ObjectAnimation.h ├── ObjectData.cpp ├── ObjectData.h ├── Platforming.cpp ├── Platforming.h ├── ProcessingObjects.cpp ├── ProcessingObjects.h ├── Program.cpp ├── Program.h ├── Program2.h ├── README.md ├── RaceLevel.cpp ├── RaceLevel.h ├── RoomLayers.h ├── SEngine.cpp ├── SEngine.h ├── Scenes.cpp ├── Scenes.h ├── ScreensProject.cpp ├── ScreensProject.h ├── SdlDotNetCompat ├── Audio │ ├── Mixer.cpp │ ├── Mixer.h │ ├── Music.cpp │ ├── Music.h │ ├── MusicPlayer.cpp │ ├── MusicPlayer.h │ ├── Sound.cpp │ └── Sound.h ├── Core │ ├── BaseSdlResource.cpp │ ├── BaseSdlResource.h │ ├── EventHandler.cpp │ ├── EventHandler.h │ ├── Events.cpp │ ├── Events.h │ ├── QuitEventArgs.cpp │ ├── QuitEventArgs.h │ ├── SdlEventArgs.cpp │ ├── SdlEventArgs.h │ ├── SdlException.cpp │ ├── SdlException.h │ ├── TickEventArgs.cpp │ ├── TickEventArgs.h │ ├── UserEventArgs.cpp │ └── UserEventArgs.h ├── Drawing │ ├── Color.cpp │ ├── Color.h │ ├── Point.h │ ├── Rectangle.cpp │ ├── Rectangle.h │ └── Size.h ├── Graphics │ ├── Surface.cpp │ ├── Surface.h │ ├── Video.cpp │ ├── Video.h │ ├── VideoExposeEventArgs.cpp │ ├── VideoExposeEventArgs.h │ ├── VideoInfo.cpp │ ├── VideoInfo.h │ ├── VideoResizeEventArgs.cpp │ └── VideoResizeEventArgs.h └── Input │ ├── ActiveEventArgs.cpp │ ├── ActiveEventArgs.h │ ├── Joystick.cpp │ ├── Joystick.h │ ├── Joysticks.cpp │ ├── Joysticks.h │ ├── Keyboard.cpp │ ├── Keyboard.h │ ├── KeyboardEventArgs.cpp │ ├── KeyboardEventArgs.h │ ├── Mouse.cpp │ ├── Mouse.h │ ├── MouseButtonEventArgs.cpp │ ├── MouseButtonEventArgs.h │ ├── MouseMotionEventArgs.cpp │ └── MouseMotionEventArgs.h ├── SelectSuite.cpp ├── SelectSuite.h ├── SpawnObjects.cpp ├── SpawnObjects.h ├── StatusBar.cpp ├── StatusBar.h ├── Stealth.cpp ├── Stealth.h ├── System.cpp ├── System.h ├── Text.cpp ├── Text.h ├── Util ├── BinaryStreamReader.cpp ├── BinaryStreamReader.h ├── BinaryStreamWriter.cpp ├── BinaryStreamWriter.h ├── File.cpp ├── File.h ├── Random.cpp └── Random.h ├── cmake └── Modules │ └── FindSDL_gfx.cmake ├── program_main.cpp └── res ├── SFX ├── sfx_beetle.wav ├── sfx_bumerang.wav ├── sfx_damage.wav ├── sfx_dogscream.wav ├── sfx_dooropen.wav ├── sfx_doors.wav ├── sfx_droid.wav ├── sfx_elevator.wav ├── sfx_explosion.wav ├── sfx_gotonthewall.wav ├── sfx_lowpower.wav ├── sfx_missshoot.wav ├── sfx_powerup.wav ├── sfx_race_block_hit.wav ├── sfx_race_down.wav ├── sfx_race_jump.wav ├── sfx_race_wall_hit.wav ├── sfx_rocket.wav ├── sfx_shocker.wav ├── sfx_slide.wav ├── sfx_slime.wav ├── sfx_star.wav ├── sfx_start.wav ├── sfx_stealth.wav ├── sfx_steam.wav ├── sfx_stungun.wav ├── sfx_switch.wav ├── sfx_tanketteborn.wav ├── sfx_tanketteshoot.wav ├── sfx_terminal.wav ├── sfx_type.wav └── sfx_wave.wav ├── animations ├── AlienClawClassic.scproj ├── AlienClawNext.scproj ├── AlienPetClassic.scproj ├── AlienPetNext.scproj ├── AlienSlidermanClassic.scproj ├── AlienSlidermanNext.scproj ├── AlienWormClassic.scproj ├── AlienWormNext.scproj ├── BigSpiderClassic.scproj ├── BigSpiderNext.scproj ├── BugClassic.scproj ├── BugNext.scproj ├── CrabBossClassic.scproj ├── CrabBossNext.scproj ├── CrakenClassic.scproj ├── CrakenNext.scproj ├── DLCBossClassic.scproj ├── DLCBossNext.scproj ├── DLCJacquelineClassic.scproj ├── DLCJacquelineNext.scproj ├── DragonflyClassic.scproj ├── DragonflyNext.scproj ├── DronBomberClassic.scproj ├── DronBomberNext.scproj ├── DronClassic.scproj ├── DronNext.scproj ├── FighterBomberClassic.scproj ├── FighterBomberNext.scproj ├── FlyBossClassic.scproj ├── FlyBossNext.scproj ├── GunClassic.scproj ├── GunNext.scproj ├── ItemsClassic.scproj ├── ItemsNext.scproj ├── JacquelineClassic.scproj ├── JacquelineNext.scproj ├── JellyClassic.scproj ├── JellyNext.scproj ├── MegabrainClassic.scproj ├── MegabrainNext.scproj ├── MothClassic.scproj ├── MothNext.scproj ├── NovaClassic.scproj ├── NovaNext.scproj ├── PiranhaClassic.scproj ├── PiranhaNext.scproj ├── RaceClassic.scproj ├── RaceNext.scproj ├── RocketmanClassic.scproj ├── RocketmanNext.scproj ├── SlimeClassic.scproj ├── SlimeNext.scproj ├── SonusVenatorClassic.scproj ├── SonusVenatorNext.scproj ├── SpiderClassic.scproj ├── SpiderNext.scproj ├── SuitClassic.scproj ├── SuitNext.scproj ├── TanketteClassic.scproj └── TanketteNext.scproj ├── fonts ├── font.ch8 ├── font_english.ch8 ├── font_polish.ch8 ├── font_russian.ch8 ├── font_spanish.ch8 ├── platformer_mode_font.ch8 └── platformer_mode_font.png ├── icons ├── ico32.ico └── ico64.ico ├── locations ├── DLC.loc ├── DLCBoss.loc ├── Jacqueline.loc ├── boss 1.loc ├── boss 2.loc ├── boss 3.loc ├── dragon 1.loc ├── dragon 2.loc ├── dragon 3.loc ├── finalboss 0.loc ├── finalboss 1.loc ├── finalboss 2.loc ├── level 1-1.loc ├── level 1-2.loc ├── level 1-3.loc ├── level 1-4.loc ├── level 2-1.loc ├── level 2-2.loc ├── level 2-3.loc ├── level 2-4.loc ├── level 3-1.loc ├── level 3-2.loc ├── level 3-3.loc ├── level 3-4.loc ├── level 4-1.loc ├── level 4-2.loc ├── level 4-3.loc ├── level 4-4.loc ├── level 4-5.loc ├── level 4-6.loc ├── level 4-7.loc ├── level 4-8.loc ├── subboss 1.loc ├── subboss 2.loc ├── subboss 3.loc ├── subboss 4.loc ├── subboss 5.loc ├── subboss 6.loc └── system.loc ├── metall.png ├── music ├── 1-1-44100.ogg ├── 1-1-48.ogg ├── 1-1.ogg ├── 1-1_ts.ogg ├── 1-2.ogg ├── 1-2_ts.ogg ├── 1-3.ogg ├── 1-3_ts.ogg ├── 2-1.ogg ├── 2-1_ts.ogg ├── 2-2.ogg ├── 2-2_ts.ogg ├── 2-3.ogg ├── 2-3_ts.ogg ├── 3-1.ogg ├── 3-1_ts.ogg ├── 3-2.ogg ├── 3-2_ts.ogg ├── 3-3.ogg ├── 3-3_ts.ogg ├── 4-1.ogg ├── 4-1_ts.ogg ├── 5-1.ogg ├── 5-1_ts.ogg ├── Secret boss.ogg ├── Secret boss_ts.ogg ├── boss.ogg ├── boss_ts.ogg ├── clip.ogg ├── clip_ts.ogg ├── finalboss.ogg ├── finalboss_ts.ogg ├── finalcut.ogg ├── finalcut_ts.ogg ├── game_over.ogg ├── game_over_ts.ogg ├── intro.ogg ├── intro_ts.ogg ├── menu.ogg ├── menu_ts.ogg ├── motorbike.ogg ├── motorbike_ts.ogg ├── race.ogg ├── race_ts.ogg ├── stealth_1.ogg ├── stealth_1_ts.ogg ├── stealth_2.ogg ├── stealth_2_ts.ogg ├── stealth_3.ogg └── stealth_3_ts.ogg ├── palettes └── NextPalette.bin ├── screens ├── classic_bar.smproj ├── classic_escape_1.smproj ├── classic_escape_2.smproj ├── classic_escape_3.smproj ├── classic_final_boss.smproj ├── classic_finalcut.smproj ├── classic_intro.smproj ├── classic_j_bar.smproj ├── classic_j_escape.smproj ├── classic_main_menu.smproj ├── classic_race.smproj ├── classic_race_road.smproj ├── classic_race_top.smproj ├── classic_select_level.smproj ├── classic_select_suit.smproj ├── next_bar.smproj ├── next_escape_1.smproj ├── next_escape_2.smproj ├── next_escape_3.smproj ├── next_final_boss.smproj ├── next_finalcut.smproj ├── next_intro.smproj ├── next_j_bar.smproj ├── next_j_escape.smproj ├── next_main_menu.smproj ├── next_race.smproj ├── next_race_road.smproj ├── next_race_top.smproj ├── next_select_level.smproj └── next_select_suit.smproj └── texts ├── English.bin ├── Polish.bin ├── Russian.bin └── Spanish.bin /.gitignore: -------------------------------------------------------------------------------- 1 | build/ -------------------------------------------------------------------------------- /AnimTile.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | namespace DeltaShadow 6 | { 7 | class AnimTile : public std::enable_shared_from_this 8 | { 9 | public: 10 | int32_t num = 0; 11 | int32_t x = 0; 12 | int32_t y = 0; 13 | int32_t property = 0; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16) 2 | project(DeltaShadow VERSION 1.0 LANGUAGES CXX) 3 | 4 | set(CMAKE_INCLUDE_CURRENT_DIR ON) 5 | 6 | # Add CMake modules 7 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules) 8 | 9 | # Использовать стандарт C++11. 10 | set(CMAKE_CXX_STANDARD 11) 11 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 12 | set(CMAKE_CXX_EXTENSIONS OFF) 13 | 14 | # Инициализация зависимостей. 15 | find_package(SDL REQUIRED) 16 | find_package(SDL_image REQUIRED) 17 | find_package(SDL_gfx REQUIRED) 18 | find_package(SDL_mixer REQUIRED) 19 | 20 | add_executable(${PROJECT_NAME} 21 | AnimTile.h 22 | DeltaShadow.Program.cpp DeltaShadow.Program.h 23 | Environment/PrimaryScreen.cpp Environment/PrimaryScreen.h 24 | Environment/SpecialFolder.cpp Environment/SpecialFolder.h 25 | Program.h 26 | RoomLayers.h 27 | SdlDotNetCompat/Audio/Mixer.cpp SdlDotNetCompat/Audio/Mixer.h 28 | SdlDotNetCompat/Audio/Music.cpp SdlDotNetCompat/Audio/Music.h 29 | SdlDotNetCompat/Audio/MusicPlayer.cpp SdlDotNetCompat/Audio/MusicPlayer.h 30 | SdlDotNetCompat/Audio/Sound.cpp SdlDotNetCompat/Audio/Sound.h 31 | SdlDotNetCompat/Core/BaseSdlResource.cpp SdlDotNetCompat/Core/BaseSdlResource.h 32 | SdlDotNetCompat/Core/EventHandler.cpp SdlDotNetCompat/Core/EventHandler.h 33 | SdlDotNetCompat/Core/Events.cpp SdlDotNetCompat/Core/Events.h 34 | SdlDotNetCompat/Core/QuitEventArgs.cpp SdlDotNetCompat/Core/QuitEventArgs.h 35 | SdlDotNetCompat/Core/SdlEventArgs.cpp SdlDotNetCompat/Core/SdlEventArgs.h 36 | SdlDotNetCompat/Core/SdlException.cpp SdlDotNetCompat/Core/SdlException.h 37 | SdlDotNetCompat/Core/TickEventArgs.cpp SdlDotNetCompat/Core/TickEventArgs.h 38 | SdlDotNetCompat/Core/UserEventArgs.cpp SdlDotNetCompat/Core/UserEventArgs.h 39 | SdlDotNetCompat/Drawing/Color.cpp SdlDotNetCompat/Drawing/Color.h 40 | SdlDotNetCompat/Drawing/Point.h 41 | SdlDotNetCompat/Drawing/Rectangle.cpp SdlDotNetCompat/Drawing/Rectangle.h 42 | SdlDotNetCompat/Drawing/Size.h 43 | SdlDotNetCompat/Graphics/Surface.cpp SdlDotNetCompat/Graphics/Surface.h 44 | SdlDotNetCompat/Graphics/Video.cpp SdlDotNetCompat/Graphics/Video.h 45 | SdlDotNetCompat/Graphics/VideoExposeEventArgs.cpp SdlDotNetCompat/Graphics/VideoExposeEventArgs.h 46 | SdlDotNetCompat/Graphics/VideoInfo.cpp SdlDotNetCompat/Graphics/VideoInfo.h 47 | SdlDotNetCompat/Graphics/VideoResizeEventArgs.cpp SdlDotNetCompat/Graphics/VideoResizeEventArgs.h 48 | SdlDotNetCompat/Input/ActiveEventArgs.cpp SdlDotNetCompat/Input/ActiveEventArgs.h 49 | SdlDotNetCompat/Input/Joystick.cpp SdlDotNetCompat/Input/Joystick.h 50 | SdlDotNetCompat/Input/Joysticks.cpp SdlDotNetCompat/Input/Joysticks.h 51 | SdlDotNetCompat/Input/Keyboard.cpp SdlDotNetCompat/Input/Keyboard.h 52 | SdlDotNetCompat/Input/KeyboardEventArgs.cpp SdlDotNetCompat/Input/KeyboardEventArgs.h 53 | SdlDotNetCompat/Input/Mouse.cpp SdlDotNetCompat/Input/Mouse.h 54 | SdlDotNetCompat/Input/MouseButtonEventArgs.cpp SdlDotNetCompat/Input/MouseButtonEventArgs.h 55 | SdlDotNetCompat/Input/MouseMotionEventArgs.cpp SdlDotNetCompat/Input/MouseMotionEventArgs.h 56 | Util/BinaryStreamReader.cpp Util/BinaryStreamReader.h 57 | Util/BinaryStreamWriter.cpp Util/BinaryStreamWriter.h 58 | Util/File.cpp Util/File.h 59 | Util/Random.cpp Util/Random.h 60 | program_main.cpp 61 | ) 62 | 63 | # Сборка для Linux/Unix 64 | if(UNIX AND NOT MACOS) 65 | target_include_directories(${PROJECT_NAME} PRIVATE 66 | ${SDL_INCLUDE_DIR} 67 | ${SDL_IMAGE_INCLUDE_DIR} 68 | ${SDL_GFX_INCLUDE_DIR} 69 | ${SDL_MIXER_INCLUDE_DIR} 70 | ) 71 | 72 | target_link_libraries(${PROJECT_NAME} PRIVATE 73 | ${SDL_LIBRARY} 74 | ${SDL_IMAGE_LIBRARIES} 75 | ${SDL_GFX_LIBRARIES} 76 | ${SDL_MIXER_LIBRARY} 77 | ) 78 | endif() 79 | 80 | # Копирует папку res из корня проекта в папку сборки если они отличаются. 81 | if(NOT "${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") 82 | add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD 83 | COMMAND ${CMAKE_COMMAND} -E copy_directory 84 | ${CMAKE_SOURCE_DIR}/res ${CMAKE_BINARY_DIR}/res) 85 | endif() 86 | 87 | # Установка. 88 | #install(TARGETS DeltaShadow 89 | # BUNDLE DESTINATION . 90 | # RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} 91 | #) 92 | -------------------------------------------------------------------------------- /DeltaShadow.Program.cpp: -------------------------------------------------------------------------------- 1 | #include "DeltaShadow.Program.h" 2 | 3 | #include "Environment/PrimaryScreen.h" 4 | #include "Environment/SpecialFolder.h" 5 | 6 | #include "Util/File.h" 7 | #include "Util/BinaryStreamReader.h" 8 | #include "Util/BinaryStreamWriter.h" 9 | 10 | using namespace SdlDotNetCompat::Core; 11 | using namespace SdlDotNetCompat::Graphics; 12 | using namespace SdlDotNetCompat::Audio; 13 | using namespace SdlDotNetCompat::Input; 14 | using namespace SdlDotNetCompat::Drawing; 15 | using namespace Util; 16 | 17 | namespace DeltaShadow 18 | { 19 | 20 | template 21 | T **AllocateDynamicArray(int nRows, int nCols) 22 | { 23 | T **array = new T*[nCols]; 24 | for (int i = 0; i < nCols; ++i) 25 | { 26 | array[i] = new T[nRows]; 27 | } 28 | return array; 29 | } 30 | 31 | template 32 | void FreeDynamicArray(T** array) 33 | { 34 | delete [] *array; 35 | delete [] array; 36 | } 37 | 38 | void toLower(std::string &str) 39 | { 40 | for (auto &c : str) 41 | { 42 | c = tolower(c); 43 | } 44 | } 45 | 46 | #include "EventsObjects.cpp" 47 | #include "GameObject.cpp" 48 | #include "GameObjectsSubprog.cpp" 49 | #include "GEngine.cpp" 50 | #include "Main.cpp" 51 | #include "Menu.cpp" 52 | #include "ObjectAnimation.cpp" 53 | #include "Platforming.cpp" 54 | #include "ProcessingObjects.cpp" 55 | #include "Program.cpp" 56 | #include "RaceLevel.cpp" 57 | #include "Scenes.cpp" 58 | #include "ScreensProject.cpp" 59 | #include "SelectSuite.cpp" 60 | #include "SEngine.cpp" 61 | #include "SpawnObjects.cpp" 62 | #include "StatusBar.cpp" 63 | #include "Stealth.cpp" 64 | #include "System.cpp" 65 | #include "Text.cpp" 66 | 67 | } -------------------------------------------------------------------------------- /DeltaShadow.Program.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Program2.h" 4 | 5 | #include "AnimTile.h" 6 | #include "RoomLayers.h" 7 | 8 | #include "SdlDotNetCompat/Audio/Sound.h" 9 | #include "SdlDotNetCompat/Audio/Music.h" 10 | #include "SdlDotNetCompat/Audio/MusicPlayer.h" 11 | 12 | #include "SdlDotNetCompat/Core/Events.h" 13 | 14 | #include "SdlDotNetCompat/Graphics/Video.h" 15 | 16 | #include "SdlDotNetCompat/Input/Joystick.h" 17 | #include "SdlDotNetCompat/Input/Joysticks.h" 18 | #include "SdlDotNetCompat/Input/Keyboard.h" 19 | #include "SdlDotNetCompat/Input/KeyboardEventArgs.h" 20 | #include "SdlDotNetCompat/Input/Mouse.h" 21 | 22 | #include "SdlDotNetCompat/Drawing/Point.h" 23 | #include "SdlDotNetCompat/Drawing/Size.h" 24 | #include "SdlDotNetCompat/Drawing/Rectangle.h" 25 | #include "SdlDotNetCompat/Drawing/Color.h" 26 | 27 | #include "Util/Random.h" 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | #define NOT_PORTED_YET 35 | 36 | using namespace SdlDotNetCompat::Core; 37 | using namespace SdlDotNetCompat::Graphics; 38 | using namespace SdlDotNetCompat::Audio; 39 | using namespace SdlDotNetCompat::Input; 40 | 41 | //C# TO C++ CONVERTER NOTE: Forward class declarations: 42 | namespace DeltaShadow { class GameObject; } 43 | namespace DeltaShadow { class ObjectAnimation; } 44 | namespace SdlDotNetCompat { namespace Graphics { class Surface; } } 45 | namespace SdlDotNetCompat { namespace Input { class Joystick; } } 46 | namespace SdlDotNetCompat { namespace Core { class QuitEventArgs; } } 47 | namespace SdlDotNetCompat { namespace Core { class TickEventArgs; } } 48 | namespace SdlDotNetCompat { namespace Input { class MouseMotionEventArgs; } } 49 | namespace SdlDotNetCompat { namespace Input { class KeyboardEventArgs; } } 50 | namespace SdlDotNetCompat { namespace Graphics { class VideoResizeEventArgs; } } 51 | namespace SdlDotNetCompat { namespace Audio { class Music; } } 52 | namespace SdlDotNetCompat { namespace Audio { class Sound; } } 53 | 54 | namespace DeltaShadow 55 | { 56 | class Program : public std::enable_shared_from_this 57 | { 58 | 59 | #include "EventsObjects.h" 60 | #include "GameObject.h" 61 | #include "GameObjectsSubprog.h" 62 | #include "GEngine.h" 63 | #include "Main.h" 64 | #include "Menu.h" 65 | #include "ObjectAnimation.h" 66 | #include "Platforming.h" 67 | #include "ProcessingObjects.h" 68 | #include "Program.h" 69 | #include "RaceLevel.h" 70 | #include "Scenes.h" 71 | #include "ScreensProject.h" 72 | #include "SelectSuite.h" 73 | #include "SEngine.h" 74 | #include "SpawnObjects.h" 75 | #include "StatusBar.h" 76 | #include "Stealth.h" 77 | #include "System.h" 78 | #include "Text.h" 79 | 80 | // EventsObjects 81 | 82 | // GameObject 83 | 84 | // GameObjectsSubprog 85 | 86 | // GEngine 87 | 88 | // Main 89 | 90 | // Menu 91 | 92 | // ObjectAnimation 93 | 94 | // Platforming 95 | 96 | // ProcessingObjects 97 | 98 | // Program 99 | 100 | // RaceLevel 101 | 102 | // Scenes 103 | 104 | // ScreensProject 105 | 106 | // SelectSuite 107 | 108 | // SEngine 109 | 110 | // SpawnObjects 111 | 112 | // StatusBar 113 | 114 | // Stealth 115 | 116 | // System 117 | 118 | // Text 119 | 120 | }; 121 | } 122 | -------------------------------------------------------------------------------- /DeltaShadow.SetupForm.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "Program2.h" 4 | #include 5 | #include 6 | #include 7 | 8 | using namespace SdlDotNet::Input; 9 | 10 | namespace DeltaShadow 11 | { 12 | class SetupForm : public System::Windows::Forms::Form 13 | { 14 | private: 15 | bool now_redefine = false; 16 | std::shared_ptr