View Single Post
  #1  
Old 08-12-2024, 01:51
BLACKFIRE69's Avatar
BLACKFIRE69 BLACKFIRE69 is offline
Registered User
 
Join Date: Mar 2019
Location: In the Hell
Posts: 692
Thanks: 481
Thanked 2,566 Times in 565 Posts
BLACKFIRE69 is on a distinguished road
Arrow Layered.dll - Re-Written in Pure Zig

A few days ago, I met some of my classmates, and I learned that several of them had started game development projects using Zig . After talking to them, I felt motivated and, on my way home, decided to start my own project in Zig. However, my mind was blank, and I realized I had forgotten much of the language since I hadn't worked with Zig for months.

To refresh my skills, I began converting some of old C++ projects into Zig. One of these was the Layered project, originally developed by David D. Rocco.


Why Zig?
Quote:
Zig is a modern, straightforward language that's easy to learn and enforces strict type matching for safer, more predictable code.
Designed as a powerful alternative to C, it combines performance and simplicity with seamless C interoperability,
advanced memory management, and built-in tooling for streamlined development.

Here is the Layered project, completely re-written in pure Zig.

Code:
Module:          Layered.dll
Rewritten by:    BLACKFIRE69
Compiler:        Zig v0.14.0-dev.2371+c013f45ad
I started this project just for fun and don't intend to develop it further. For those who are interested, I've included the Zig source code, so feel free to take a look.

Also, if anyone has the latest version of the Layered C++ source code, I'd appreciate it if you could share it with me.

Example:
Code:
procedure TimerProc(hwnd: HWND; uMsg: UINT; idEvent: UINT_PTR; dwTime: DWORD);
begin
  lBeginRender(scene);
    lRenderHint(true);

    lFillRectangle(b1, 0, 0, WizardForm.Width, WizardForm.Height);
    lDrawRectangle(pen, 0, 0, WizardForm.Width, WizardForm.Height);

    lSetImageTransparent(70);
    lDrawImage(skip, 110, 210);
 
    lSetStringAlignment(StringAlignmentCenter);
    lSetStringLineAlignment(StringAlignmentCenter);

    lDrawStringRectW(WizardForm.Caption, 0, 190, WizardForm.Width, 25, font, b7);

  lEndRender();
end;
Code:
procedure InitializeWizard();
begin
  lStartup;

  scene := lCreateScene(WizardForm.Handle, WizardForm.Width, WizardForm.Height);

  skip := lCreateTextureW(ExpandConstant('{tmp}\skip.gif'))
  tex := lCreateTextureW(ExpandConstant('{tmp}\tex.png'));

  b1 := lCreateTextureBrush(tex);
  b6 := lCreateGradientBrush(0, 0, WizardForm.Width, 0, $ff00ff00, $ff0000ff);
  b7 := lCreateSolidBrush($ffffffff);
  pen := lCreatePen($ffff0000, 2);

  TimerID := SetTimer(0, 0, 100, wrapEventProc(@TimerProc,4));
end;

procedure DeinitializeSetup();
begin
  lShutdown;
end;

.
Attached Images
File Type: png 0.png (142.8 KB, 141 views)
File Type: png 1.png (92.8 KB, 141 views)
File Type: png 2.png (81.8 KB, 136 views)
File Type: png 3.png (142.6 KB, 138 views)
Attached Files
File Type: rar Test - Layered Library.rar (595.6 KB, 29 views)
File Type: rar Src - Layered Library.rar (17.0 KB, 16 views)
Reply With Quote
The Following 8 Users Say Thank You to BLACKFIRE69 For This Useful Post:
audiofeel (08-12-2024), Cesar82 (08-12-2024), Ele (20-12-2024), hitman797 (09-12-2024), L33THAK0R (08-12-2024), ScOOt3r (10-12-2024), Sergey3695 (09-12-2024), Wanterlude (09-12-2024)
Sponsored Links