r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!Liquid] any questions about liquid dataflow core.

Maxim
1-Mar-2009
[675x3]
btw wrt the old code, I realised the issue... I had cleaned up the 
lib, and stopped half way....   so the naming changed, a few features 
missing... :-(
fixing it up... will have something during the week..  its the fabled 
week of at school... so I'll have my kids with me the whole week...
of = off
Maxim
2-Mar-2009
[678x6]
ok, so I have something to send to you... what I have is not really 
usefull to send to rebol.org without any kind of discussion, documentation. 
 I did something different than expected.  I just built a simple 
dataflow driven fsm engine which switches aspects on demand.  then 
I defined aspects which operated on a face, and made a very simple 
feel which sets the various states.
this is the whole feel:
	feel: make feel [
		engage: func [face action event][
			switch action [
				down [fsm/set-state 'pressed]
				up [fsm/clear-state 'pressed]
			]
		]
		
		over: func [ face action pos][
			either action [
				fsm/set-state 'over
			][
				fsm/clear-state 'over
			]
		]
	]
the dataflow takes care of calling any aspect which are built up 
from linked nodes.  basically, you build up a stylesheet by connecting 
nodes together and can branch off at any point, simply reusing the 
previous styles as a base... the cool thing is that the styles aren't 
absolute, you can define more than one style for a single state, 
so that a series of nodes can handle only the edge, others the color, 
yet you can include both in another style  (in my case, the base 
style has both)
I'll add a few more aspects to the system to show how this all scales, 
tomorrow and send you a copy.   :-)
next step will be to add some data to manipulate... I'll do a character 
attributes builder.  all 6 stats with a +/- counter besides each 
which you press and all the display magically adapts, even stopping 
the buttons when out of range, or no more points to attribute   :-)
all is built using direct faces... no VID no GLayout... just make 
face []   so you can understand exactly what happens, and realize 
how easy it is to replace VID, even in R2.
Josh
2-Mar-2009
[684x2]
So are you not using !plug for the examples?s
Or your just talking about the graphical portion?
Josh
5-Mar-2009
[686x2]
Any news?   I'm curious to see your examples...
Sometimes I wish there was a delete button for messages I type, got 
some dumb ones from time to time
Maxim
5-Mar-2009
[688x4]
hehe, while working on stuff, I suddently entered one of those rare 
brainstorming states... so I've basically been in my mind for the 
last 3 days... but I now have a nice roadmap for something that will 
help me to make clear examples or liquid.
or = of
plus, its spring break and I'm with my kids... so taking time with 
them.
ok, so I have a bit of spare time tonight and will build you a stand-alone 
example of a small RPG character editor.   Using !plug objects directly, 
so you can see the process of subclassing the core plug to have it 
do something usefull.
Josh
6-Mar-2009
[692]
Awesome!  I understand the busyness.  I am in the midst of my final 
semester of my master's program.   Enjoy your time with your kids!
Maxim
6-Mar-2009
[693x2]
did most of the work yesterday, and will revise it to use VID.  it 
just going to take a little less code.  I think.
yippe, I'm almost done  :-)
Josh
6-Mar-2009
[695]
Wonderful :)
Maxim
6-Mar-2009
[696x5]
its already working, but will add a few gizmos to give it more depth. 
  liquid makes more and more sense, as an application grows.


so adding a few features will show you how simple an application 
remains, even when many things interdepend.
right now I have str, dex, int fields, which cannot contain anything 
else than an integer value, and which are bounded in value...

the detail here is that the bounding is NOT done in the field, but 
at the value level itself.  nothing can cause the data to be invalid.
not even trying to set it with the wrong data type!
it will just fall back to values within bounds, or the the previous 
value otherwise.
and the field, thus gets refreshed since its piped to the value.
Josh
6-Mar-2009
[701]
That's neat!  I will try not to set them to non integers! ;-)   j/k 
   I'll have to see how it all works under the hood, once I get it
Maxim
6-Mar-2009
[702x2]
it will definitely be available tonight.  btw, I found and squashed 
a little but in liquid, so will also release a newer version on rebol.org 
when I release the example.
I am now in the process of adding a skill editor (note, not in any 
way a valid D&D chargen, just a simple example to understand by anyone).
Josh
6-Mar-2009
[704]
Congrats on the bug squashing.  Just save some work for me to do! 
:)
Maxim
6-Mar-2009
[705x2]
hehe it was really minor, but probably something that's caused me 
some headaches in the past.  wouldn't have been possible without 
slim's verbose printing management  :-)
(finding the bug, that is)
Maxim
7-Mar-2009
[707x3]
the example is DONE, it has MANY interconnected plugs which handle 
all maner of data integrity, button style effects, even disabling 
some buttons, when values get out of bounds!

built with VID, latest version of liquid.
currently working on updating the stuff to rebol.org.
will also add a little integrated lib downloader.... to make it extra 
easy to use.
Ammon
7-Mar-2009
[710]
Sweet!  I'll be playing with it this weekend. =D
Maxim
7-Mar-2009
[711x2]
(in example app)
the code isn't intended to be compact... the goal is to help people 
understand.  I added a few comments which explain what/how/why some 
of the things.
Ammon
7-Mar-2009
[713]
How hard do you think it's going to be for you to port Liquid to 
R3?
Maxim
7-Mar-2009
[714x6]
I might also add a doc to explain some of the unobvious technical 
merits of the example.  people can say: "All that code just for that?" 
if they don't understand what is going on.
liquid R3... it could go really well, as it could be a bitch... if 
one little detail in a function breaks up the integrity of the whole.
the beauty of liquid is that broken code doesn't work, the side effect 
is that working code is unbreakable.
you can't "forget" to update something, everything is broken up into 
little systems.  the systems don't grow, you only have more of them, 
which is easier to manage and design, IMHO.
the one lib i can't wait to port is glob.  its like super gob, already 
in R2.
so in R3 its just going to be sooooo much faster.
Ammon
7-Mar-2009
[720]
You have such a strange way of wording things some times.  "broken 
code doesn't work, the side effect is that working code is unbreakable" 
 I'm not really sure what that means...
Maxim
7-Mar-2009
[721]
hehehe... means a system doesn't work at all until it does... and 
from that point on... its almost impossible to mess up.
Josh
7-Mar-2009
[722]
Where is the example?
Ammon
7-Mar-2009
[723x2]
What I've seen working in Liquid really is phenominal but I've never 
really groked it so I was never able to figure out where to start 
when I tried to build things with it.
I'm hoping this example of yours will break the ice for me.