Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.72 KB | None | 0 0
  1. uses Resources; // Resources.pas генерится автоматически по содержимому каталога ресурсов и содержит объявления енумов TRawResource, TSprite, TSound, TButton, TTileMap, TFont
  2.  
  3. const
  4.   BLACK = $000000FF;
  5.   MAROON = $800000FF;
  6.   GREEN = $008000FF;
  7.   OLIVE = $808000FF;
  8.   NAVY = $000080FF;
  9.   PURPLE = $800080FF;
  10.   TEAL = $008080FF;
  11.   GRAY = $808080FF;
  12.   SILVER = $C0C0C0FF;
  13.   RED = $FF0000FF;
  14.   LIME = $00FF00FF;
  15.   YELLOW = $FFFF00FF;
  16.   BLUE = $0000FFFF;
  17.   FUCHSIA = $FF00FFFF;
  18.   AQUA = $00FFFFFF;
  19.   WHITE = $FFFFFFFF;
  20.   MONEYGREEN = $C0DCC0FF;
  21.   SKYBLUE = $A6CAF0FF;
  22.   CREAM = $FFFBF0FF;
  23.   MEDGRAY = $A0A0A4FF;
  24.  
  25. type
  26.   TKey = (
  27.     KeyA, KeyB, KeyC, KeyD, KeyE, KeyF, KeyG, KeyH,
  28.     KeyI, KeyJ, KeyK, KeyL, KeyM, KeyN, KeyO, KeyP,
  29.     KeyQ, KeyR, KeyS, KeyT, KeyU, KeyV, KeyW, KeyX,
  30.     KeyY, KeyZ,
  31.     KeyNum0, KeyNum1, KeyNum2, KeyNum3,
  32.     KeyNum4, KeyNum5, KeyNum6, KeyNum7,
  33.     KeyNum8, KeyNum9,
  34.     KeyEscape,
  35.     KeyLControl, KeyLShift, KeyLAlt, KeyLSystem,
  36.     KeyRControl, KeyRShift, KeyRAlt, KeyRSystem,
  37.     KeyMenu,         ///< The Menu key
  38.     KeyLBracket,     ///< The [ key
  39.     KeyRBracket,     ///< The ] key
  40.     KeySemiColon,    ///< The ; key
  41.     KeyComma,        ///< The , key
  42.     KeyPeriod,       ///< The . key
  43.     KeyQuote,        ///< The ' key
  44.     KeySlash,        ///< The / key
  45.     KeyBackSlash,    ///< The \ key
  46.     KeyTilde,        ///< The ~ key
  47.     KeyEqual,        ///< The = key
  48.     KeyDash,         ///< The - key
  49.     KeySpace,        ///< The Space key
  50.     KeyReturn,       ///< The Return key
  51.     KeyBack,         ///< The Backspace key
  52.     KeyTab,          ///< The Tabulation key
  53.     KeyPageUp,       ///< The Page up key
  54.     KeyPageDown,     ///< The Page down key
  55.     KeyEnd,          ///< The End key
  56.     KeyHome,         ///< The Home key
  57.     KeyInsert,       ///< The Insert key
  58.     KeyDelete,       ///< The Delete key
  59.     KeyAdd,          ///< +
  60.     KeySubtract,     ///< -
  61.     KeyMultiply,     ///< *
  62.     KeyDivide,       ///< /
  63.     KeyLeft,         ///< Left arrow
  64.     KeyRight,        ///< Right arrow
  65.     KeyUp,           ///< Up arrow
  66.     KeyDown,         ///< Down arrow
  67.     KeyNumpad0, KeyNumpad1, KeyNumpad2, KeyNumpad3,
  68.     KeyNumpad4, KeyNumpad5, KeyNumpad6, KeyNumpad7,
  69.     KeyNumpad8, KeyNumpad9,
  70.     KeyF1, KeyF2, KeyF3, KeyF4, KeyF5, KeyF6, KeyF7, KeyF8,
  71.     KeyF9, KeyF10, KeyF11, KeyF12, KeyF13, KeyF14, KeyF15,
  72.     KeyPause,        ///< The Pause key
  73.     Quit
  74.     );
  75.  
  76.  
  77.   TPanel = integer;
  78.   TCoord = single;
  79.   TColor = cardinal;
  80.   TMouseButton = (LeftButton, RightButton, MiddleButton);
  81.   TMouseAxis = (CursorX, CursorY, ScrollPos);
  82.   TKeyState = (ksUp, ksDown, ksPressed);
  83.   TMouseButtonState = (mbsUp, mbsDown, mbsClicked);
  84.  
  85.   TVAlign = (vaNone, vaTop, vaCenter, vaBottom, vaFlow);
  86.   THAlign = (haNone, haLeft, haCenter, haRight, haFlow);
  87.  
  88.   TEngineValue = (
  89.     Fullscreen, Width, Height, VSync, Antialias, Log, Autoscale, Volume,
  90.     RealWidth, RealHeight, FPS, DeltaTime);
  91.   TEngineConfig = Fullscreen..Volume;
  92.  
  93.   TFontStyle = (Bold, Italic, Underlined);
  94.   TFontStyles = set of TFontStyle;
  95.  
  96.   TButtonState = (bsNormal, bsHover, bsPressed, bsClicked);
  97.  
  98.   TGUICoord = (gcX, gcY, gcWidth, gcHeight, gcMouseX, gcMouseY);
  99.  
  100.   TPathfindCallback = function(fromx, fromy, tox, toy: integer; opaque: pointer): single;
  101.   TPathfindAlgorithm = (AStarNew, AStarReuse, DijkstraNew, DijkstraReuse);
  102.  
  103. const
  104.   nonoengine = 'nonoengine.dll';
  105.  
  106. //Общие функции движка
  107. procedure EngineInit(ResDir: string); external nonoengine;
  108. procedure EngineSet(param: TEngineConfig; Value: integer); external nonoengine;
  109. function EngineGet(param: TEngineValue): integer; external nonoengine;
  110. procedure EngineProcess; external nonoengine;
  111. function RawResource(res: TRawResource; out size: Integer): pointer;
  112.  
  113. //Обработка ввода
  114. function KeyState(key: TKey): TKeyState; external nonoengine;
  115. function MouseGet(axis: TMouseAxis): TCoord; external nonoengine;
  116. function MouseState(btn: TMouseButton): TMouseButtonState; external nonoengine;
  117.  
  118. //2д-рендер - спрайты
  119. procedure Draw(sprite: TSprite; x, y: TCoord; kx: single = 1; ky: single = 1; angle: single = 0;
  120.   Color: TColor = WHITE); external nonoengine;
  121. procedure DrawTiled(tiled: TTileMap; frame: integer; x, y: TCoord; kx: single = 1; ky: single = 1;
  122.   angle: single = 0; Color: TColor = WHITE);
  123.   external nonoengine;
  124. procedure Background(sprite: TSprite; kx: single = 1; ky: single = 1; dx: single = 0;
  125.   dy: single = 0; Color: TColor = WHITE);
  126.   external nonoengine;
  127.  
  128. //2д-рендер - примитивы
  129. procedure Line(x1, y1, x2, y2: TCoord; color1, color2: TColor); overload; external nonoengine;
  130. procedure Line(x1, y1, x2, y2: TCoord; color: TColor); overload;
  131. procedure LineSettings(Width: single; Stipple: cardinal = $FFFFFFFF; StippleScale: single = 1); external nonoengine;
  132. procedure Ellipse(x, y, rx, ry: TCoord; filled: boolean; color1, color2: TColor; angle: single = 0);
  133.   external nonoengine; overload;
  134. procedure Ellipse(x, y, rx, ry: TCoord; filled: boolean; color: TColor); overload;
  135. procedure Rect(x0, y0, w, h: TCoord; filled: boolean; Color1, Color2, Color3, Color4: TColor; Angle: single = 0);
  136.   external nonoengine; overload;
  137. procedure Rect(x0, y0, w, h: TCoord; filled: boolean; Color: TColor); overload;
  138. procedure Point(x, y: TCoord; color: TColor); external nonoengine;
  139. procedure Triangle(x1, y1: TCoord; color1: TColor; x2, y2: TCoord; color2: TColor; x3, y3: TCoord; color3: TColor);
  140.   external nonoengine; overload;
  141. procedure Triangle(x1, y1: TCoord; x2, y2: TCoord; x3, y3: TCoord; color: TColor); overload;
  142. procedure TexturedTriangle(sprite: TSprite; x1, y1, tx1, ty1, x2, y2, tx2, ty2, x3, y3, tx3, ty3: TCoord);
  143.   external nonoengine; overload;
  144. procedure TexturedTriangle(sprite: TSprite; x1, y1, x2, y2, x3, y3: TCoord; dx: TCoord = 0; dy: TCoord = 0;
  145.   kx: TCoord = 1; ky: TCoord = 1); overload;
  146.  
  147. //2д-рендер - дополнительные функции
  148. function GetPixel(x, y: TCoord; sprite: TSprite = THE_SCREEN): TColor; external nonoengine;
  149. procedure SetLayer(z: integer); external nonoengine;
  150. procedure Camera(dx, dy: TCoord; kx: single = 1; ky: single = 1; angle: single = 0); external nonoengine;
  151. procedure RenderTo(sprite: TSprite); external nonoengine;
  152.  
  153. //2д-рендер - вывод текста
  154. procedure FontConfig(font: TFont; CharSize: integer = 24; color: TColor = WHITE; Styles: TFontStyles = [];
  155.   kx: single = 1; ky: single = 1); external nonoengine;
  156. procedure DrawText(font: TFont; Text: PChar; x, y: TCoord); external nonoengine;
  157. procedure DrawTextBoxed(font: TFont; Text: PChar; x, y, w, h: TCoord; HAlign: THAlign = haLeft;
  158.   VAlign: TVAlign = vaCenter);
  159.   external nonoengine;
  160.  
  161. //ГУИ
  162. procedure Panel(id: TPanel; Parent: TPanel; x, y, w, h: TCoord; HAlign: THAlign = haNone; VAlign: TVAlign = vaNone);
  163.   external nonoengine;
  164. function Button(btn: TButton; Parent: TPanel; x, y, w, h: TCoord; HAlign: THAlign = haNone;
  165.   VAlign: TVAlign = vaNone; Text: PChar = nil; Font: TFont = TFont(0); Data: pointer = nil): TButtonState;
  166.   external nonoengine;
  167. function GetGUICoord(Coord: TGUICoord): TCoord; external nonoengine;
  168.  
  169. //Звук
  170. procedure Play(sound: TSound; volume: single = 100; Data: Pointer = nil); external nonoengine;
  171. procedure Music(music: TSound; volume: single = 100); external nonoengine;
  172. function SoundPlaying(sound: TSound; Data: Pointer = nil): boolean; external nonoengine;
  173.  
  174. //Поиск пути
  175. function Pathfind(SizeX, SizeY: integer; algorithm: TPathfindAlgorithm; diagonal_cost: single;
  176.   fromx, fromy, tox, toy: integer; out x: integer; out y: integer; callback: TPathfindCallback;
  177.   opaque: pointer = nil): boolean; external nonoengine;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement