[WIP] Zeta-Windows

Projects that have specifically been abandoned or considered "dead" get moved here, so people will quit bumping them. If your project has wound up here and it should not be, contact a moderator to have it moved back to the land of the living.
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

Update - 22/10/2016
  1. Fixed a memory leak in the console logging functions which was introduced when I changed the functions to allow for unrestricted string length.
    Couple of new features are being added:
  2. Key-bound controls, which will allow Z-Windows to be either mouse-driven or key-bound driven, but not both at the same time. The idea is to allow for more retro-styled interfaces.
  3. Signalling of specific windows from a Z-Windows-specific signaler object, which allows windows to be updated from within a level for more dynamic interactions; this is actually based on an earlier concept for my R.A.I.D.-In.F.O. system that caused UI elements to be displayed when an actor signaled the R.A.I.D. that the player was within a specific proximity.
  4. Multi-player support, for the foreseeable future, is being removed as a Planned Feature. It's pretty apparent that Z-Windows mouse control is the main thing holding back multi-player. The keybound system may allow multi-player to make return, but don't hold your breath.
OP has been updated.


*edited: forgot to add my removal of multi-player support.

Further Update Edit:
Signalling objects have been templated and functionality added to Z-Windows. How the object works and what it does in-game doesn't matter, just how it gets the information it sends to Z-Windows matters, and how it sends the information matters.

OP updated, again.
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

Update - 14/11/2016
  1. New demo video!
  2. Finite windows are now a possibility.
  3. Still hunting memory leaks - accepting help and ideas Free text wrapping function to good home: here
OP has been updated.


Edit - 16/11/2016
Not hunting memory leaks anymore; but if you'd like a free text wrapping function, then check out the link above.

OP updated
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

Update 08/12/2016
  • Probably the biggest thing so far in Z-Windows!
  • No I won't keep the text that big, but I will say that I'm tentatively removing the Custom Engine Build Requirement! Two big optimizations have spurred this. First, window procedures are now ACS scripts; this should reset the counter. Second, window procedures are still called by priority, but access and organization is done in a linear fashion using a table. The original idea was to create a linked list for a priority-based call stack, but the table is much simpler; basically access the window table, put the window address into the call table using the window's priority as the index. The list assembles itself and each procedure gets fired on one tic, one after the next.
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

Update 16-01-2017
  • Text wrapping has been finalized!
  • Wrapping now effects other window objects
  • Hyphenated wrapping is an option

I'd also like to give a shoutout to Torm and the crew over at Realm667! I'm honored with the article guys! Thanks! :D
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49056
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: [WIP] Zeta-Windows

Post by Graf Zahl »

Interesting stuff, although what's a real pity is that it is run in ACS which cuts if off from the main engine and essentially reducing it to mod-side use.

For the scripting stuff it is nearly inevitable that I'll have to add some GUI stuff for inspecting actors and other entities as debugging aid, of course this needs either be done natively or partially in ZScript, but ACS is essentially worthless in that context - GDCC or not.
blood
Posts: 134
Joined: Thu Aug 25, 2011 3:17 pm

Re: [WIP] Zeta-Windows

Post by blood »

Very amazing! :shock:
Spoiler:
cybermind
Posts: 64
Joined: Mon Jan 03, 2011 3:33 pm

Re: [WIP] Zeta-Windows

Post by cybermind »

Wow, haven't noticed this until now. I've once developed a GUI widget system for ZDoom - libZDGUI, which was built by the original acc compiler, therefore its programming was kinda difficult and tricky (for example, I've implemented a dynamic string system, to get around limitations of ZDoom strings). It has modular structure to ease the addition of new widget types. I have developed only a small tech demo to show its capabilities, because I was really frustrated by limitations of ZDoom acc.

And yes, because of ZScript addition to ZDoom, I've decided to move it on GDCC as well, to use it in my new project. Well, it would be nice to have 2 GUI libraries for ZDoom, heh.
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

Hey, cybermind, I've checked out libZDGUI before, it's very neat; in fact it was one library I looked at when I first started experimenting with ACS GUI systems. Your system was full of advanced features I didn't need so it was cool to see what could be done, but I just needed basic mouse code at the time. My mouse system, I call it UMC now (Universal Mouse Control), is basically it's own thing now, but it began using a base Isle made (TY Isle, I finally understand what that wizardry is doing).

The fact that you made it work in ACS is mindblowing; I can't envision doing it without structures and pointers, or it'd be an unmanageable mess. Another issue is assigning HUDMessage IDs without overwriting incorrectly; that was goal #1 of Z-Windows. I can see it being done with ACS, but it'd be a mess; in Z-Windows you never touch a HUDMessage ID. And as for string management, again, you did it in ACS? :shock: My mind can't comprehend it, I want my c-strings.

I'm interested to see your system when you get it ported to GDCC :D
SanyaWaffles
Posts: 800
Joined: Thu Apr 25, 2013 12:21 pm
Preferred Pronouns: They/Them
Operating System Version (Optional): Windows 11 for the Motorola Powerstack II
Graphics Processor: nVidia with Vulkan support
Location: The Corn Fields
Contact:

Re: [WIP] Zeta-Windows

Post by SanyaWaffles »

Ice Sanya wants this.

Do you need any help making it/testing it?
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

HUGE UPDATE!
  • 23-2-2017
  • Ahead of schedule, buttons are fully functional; still a few things left but they aren't just pretty eye candy now. It's a matter of giving a button an action now. This took a full rewrite as part of the overhaul.
  • HUDMessage functionality is complete; Z-Window's doesn't actually let you use any of the various types, instead typing a string onto the screen or changes to alpha values are handled in the context of the main system loop.
  • Object handling has received a major overhaul, a switch from arrays to linked lists; Z-Windows easily lent itself to this as it was already based around lists of stuff. This also means everything is a pointer now. The upside is that elements are very easy to search for and manipulate.
  • The internal HUDMessage ID system has received work too! While globally redrawing a window's elements is what is usually called for, order of calls no longer matter, and it is perfectly possible to redraw a single element now.
  • The divider lines have been expanded into a generic graphic struct; this is your goto for health bars, mugshots, etc.
New demo video is up in the OP! Thank you everyone for your attention and patience!
User avatar
Nash
 
 
Posts: 17434
Joined: Mon Oct 27, 2003 12:07 am
Location: Kuala Lumpur, Malaysia
Contact:

Re: [WIP] Zeta-Windows

Post by Nash »

Do you plan to move this to ZScript? The built-in menu system is now fully scriptable.
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

I've been looking at ZScript, personally quite lost on it at the moment, but I'm wondering if it could be used to push the inputs to Z-Windows, which would make enforcing the left/right mouse buttons actually possible since I could drop GetPlayerInput. I could see accelerator keys being a possibility too (maybe tabbing too, but I'd have to devise a tab order system). Also I'm unsure if Z-Windows could use ZScript to become multiplayer compatible without a full rewrite; I'm also a bit fuzzy on script execution in net games anyway.

I do plan to play around with ZScript's menu scripting, but for the meantime a full port of Z-Windows to ZScript isn't on the books.

Spoiler: What would make me move to ZScript right now:
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows

Post by Sarah »

Z-Windows Alpha is now available!

I'm currently beginning to put Z-Windows to actual use as the basic HUD functionality is complete, so this has required finally getting the code up on GitHub to keep the continually changing source synced between projects. And now is as good a time as any to release the Z-Windows Pre-1.0 Alpha to the community!

Z-Windows Pre-1.0 Alpha Disclaimer:
Z-Windows is still in development and will change and will break your code as things are updated. There is also no guarantee of any kind that using this code won't cause your computer to halt and catch fire; please keep a fire extinguisher handy. Finally there is no guarantee that you will not spontaneously burst into flame with frustration as the code could/will benefit from some readability cleanup.


Getting Started with Z-Windows:
The 4 basic steps are listed in the OP: download the template, setup the template, read the documentation, download the Z-Windows source.

Please refer to "zWin_example.c" for an example implementation (the source to the demo windows). There are quite a few "user" settings available, you will find them in "zusr_defs.h" (global defaults) and "zusr_lang.h" (multilingual settings). You will find function documentation (use, arg list, etc.) with each function.

The only Z-Windows header you ever ever ever include is "zWin.h"

Any questions, comments, concerns, suggestions? Please ask, reply, discuss, and suggest away!!
Last edited by Sarah on Thu Nov 22, 2018 7:32 pm, edited 2 times in total.
User avatar
Sarah
Posts: 551
Joined: Wed Sep 06, 2006 12:36 pm
Preferred Pronouns: She/Her
Operating System Version (Optional): Debian 11 (bullseye), Windows 10
Location: Middle of Nowheresville Il.
Contact:

Re: [WIP] Zeta-Windows Alpha

Post by Sarah »

Spoiler: Original Post
Locked

Return to “Abandoned/Dead Projects”