Advertisement
Guest User

Untitled

a guest
Jul 19th, 2023
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 2.23 KB | None | 0 0
  1. module util;
  2. import memory;
  3.  
  4. struct CStringList
  5. {
  6.     this (string [] items)
  7.     {
  8.         list = memory.allocator.makeArray!(const(char)*)(items.length,null);
  9.         foreach (i,item; items)
  10.         {
  11.             list[i] = cast(const(char)*) item.ptr;
  12.         }
  13.     }
  14.     this(int n)
  15.     {
  16.         list = memory.allocator.makeArray!(const(char)*)(n,null);
  17.     }
  18.     ~this ()
  19.     {
  20.         memory.allocator.dispose(list);
  21.     }
  22.     auto opIndexAssign(T)(T value, size_t index)
  23.     {
  24.         list[index] = value;
  25.         return value;
  26.     }
  27.     const(char) * [] list;
  28.     @property ptr ()
  29.     {
  30.         return list.ptr;
  31.     }
  32.     @property length ()
  33.     {
  34.         return list.length;
  35.     }
  36. }
  37.  
  38. ---------------------------------------------------------------
  39.  
  40. module memory;
  41.  
  42. import std.experimental.allocator : RCIAllocator, allocatorObject;
  43. public import std.experimental.allocator : make, dispose, makeArray,
  44.             makeMultidimensionalArray, disposeMultidimensionalArray;
  45. import std.experimental.allocator.mallocator;
  46.  
  47. alias allocator = Mallocator.instance;
  48. alias stringAllocator = Mallocator.instance;
  49. alias sharedAllocator = Mallocator.instance;
  50.  
  51. --------------------------------------------------------------
  52.  
  53. module video;
  54. import std.exception : enforce;
  55.  
  56. import bindbc.sdl;
  57. import vulkan;
  58.  
  59. void init()
  60. {
  61.     SDL_Vulkan_LoadLibrary(null);
  62.     window = SDL_CreateWindow("subterrainian", SDL_WINDOWPOS_UNDEFINED,
  63.         SDL_WINDOWPOS_UNDEFINED, 400, 300, SDL_WINDOW_VULKAN | SDL_WINDOW_SHOWN);
  64.     enforce (window, " failed to create SDL Window");
  65.  
  66.     vulkan.init(window);
  67.    
  68. }
  69.  
  70. void shutdown()
  71. {
  72.     vulkan.shutdown();
  73.     SDL_DestroyWindow(window);
  74. }
  75.  
  76. private:
  77. SDL_Window * window;
  78.  
  79. -------------------------------------------------------
  80.  
  81. import bindbc.sdl;
  82. import bindbc.opengl;
  83.  
  84. import std.stdio;
  85. import std.string;
  86. import std.exception : enforce;
  87.  
  88. import video;
  89.  
  90. int main()
  91. {
  92.     enforce ( loadSDL() == sdlSupport, "Failed to Load sdlStatus");
  93.     enforce ( SDL_Init(SDL_INIT_VIDEO) >= 0,  "SDL init failed" );
  94.  
  95.     import erupted.vulkan_lib_loader;
  96.     loadGlobalLevelFunctions();
  97.  
  98.     video.init();
  99.     scope (exit) video.shutdown();
  100.  
  101.     while (!SDL_QuitRequested())
  102.     {
  103.     }
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement