Quote: "Should a GUI not be seperate to everything else? This is how I have been taught in my uni courses and so far it seems to make sense. "
Separation in what way? A separate thread? Use separate memory resources? A separate plug-in? I did not have intentions of distributing MAUI 2.0 as a separate plug-in.
Commercial game engines Torque, UDK, others have their own version of a GUI system and use scripting for implementation. We're not doing anything out of ordinary in this regard.
Quote: "Also, in what situation would a GUI gadget need physics?"
MAUI uses the physics engine for high performance collision detection. The simulation is a plus. You could build a point n click game entirely with MAUI alone, if desired.
Quote: "
Can I use maui without scripting?"
We have the source, but, hard-coding a GUI is not flexible, nor recommended. You would have to recompile the entire engine/application when changes are made. This would be equivalent to hard-coding a game level.
MAUI will come with pre-packaged scripts for behaviors, transitions, etc for typical window-like buttons. Users will not have to script this functionality but, have the option to modify or create new ones if desired. I'm developing these scripts as I flush out MAUI features.
Quote: "The video does help alot although what we really need is an example of how to get a simple button on-screen and how do we interact with that button? I took a look at the maui header file last night but that didn't really help. Seems you are doing everything in a LUA file, how do I look at this?"
MAUI loads a XML File (main.maui) to build User Interfaces. Its located in
directory. This is what it currently looks like:
<maui version="2.01(DGDK)">
<script language="darklua" type="1">
<![CDATA[
-- keep all maui related function and tables under pseudo maui namespace
bugboardDisable()
]]>
</script>
<!-- STATES -->
<state name="IDLE"/> <!-- default state (required first) -->
<state name="ENTER"/>
<state name="HOVER"/>
<state name="DOWN"/>
<state name="HOLD"/>
<state name="DRAG"/>
<state name="UP"/>
<state name="EXIT"/>
<state name="SCROLLUP"/>
<state name="SCROLLDOWN"/>
<state name="SCROLLLOCKUP"/>
<state name="SCROLLLOCKDOWN"/>
<state name="MOVE"/>
<state name="LOAD"/>
<state name="UNLOAD"/>
<state name="HIDE"/>
<state name="SHOW"/>
<state name="SELECT"/>
<state name="UNSELECT"/>
<!-- BEHAVIORS -->
<behavior description="label">
<event state="IDLE">
<script language="darklua" type="1">
<![CDATA[
uiGizmoNextEventstate = IDLE
]]>
</script>
</event>
</behavior>
<behavior name="button" description="Button">
<event state="IDLE">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
uiGizmoNextEventstate = ENTER
else
uiGizmoNextEventstate = IDLE
end
]]>
</script>
</event>
<event state="ENTER">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter > 3 then
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = HOVER
else
uiGizmoNextEventstate = ENTER
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="HOVER">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = DOWN
else
uiGizmoNextEventstate = HOVER
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="DOWN">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 16 then
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = HOLD
else
uiGizmoNextEventstate = DOWN
end
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="HOLD">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = HOLD
else
uiGizmoNextEventstate = UP
end
else
if uiPointerContact == 1 then
uiGizmoNextEventstate = DRAG
end
end
]]>
</script>
</event>
<event state="DRAG">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = HOLD
else
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 10 then
uiGizmoNextEventstate = UP
end
end
else
if uiPointerContact == 1 then
uiGizmoNextEventstate = DRAG
else
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 10 then
uiGizmoNextEventstate = UP
end
end
end
]]>
</script>
</event>
<event state="UP">
<script language="darklua" type="1">
<![CDATA[
uiGizmoPropertySet(this,'EventstateCounter',0)
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = DOWN
else
uiGizmoNextEventstate = HOVER
end
else
uiGizmoNextEventstate = DRAG
end
]]>
</script>
</event>
<event state="EXIT">
<script language="darklua" type="1">
<![CDATA[
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = IDLE
]]>
</script>
</event>
</behavior>
<behavior name="textfield" description="Button">
<event state="IDLE">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
uiGizmoNextEventstate = ENTER
else
uiGizmoNextEventstate = IDLE
end
]]>
</script>
</event>
<event state="ENTER">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter > 3 then
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = HOVER
else
uiGizmoNextEventstate = ENTER
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="HOVER">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = DOWN
else
uiGizmoNextEventstate = HOVER
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="DOWN">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 16 then
uiGizmoPropertySet(this,'EventstateCounter',0)
--uiGizmoCaptionLocate(this)
uiGizmoNextEventstate = HOLD
else
uiGizmoNextEventstate = DOWN
end
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="HOLD">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = HOLD
else
uiGizmoNextEventstate = UP
end
else
if uiPointerContact == 1 then
uiGizmoNextEventstate = DRAG
end
end
]]>
</script>
</event>
<event state="DRAG">
<script language="darklua" type="1">
<![CDATA[
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = HOLD
else
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 10 then
uiGizmoNextEventstate = UP
end
end
else
if uiPointerContact == 1 then
uiGizmoNextEventstate = DRAG
else
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 10 then
uiGizmoNextEventstate = UP
end
end
end
]]>
</script>
</event>
<event state="UP">
<script language="darklua" type="1">
<![CDATA[
uiGizmoPropertySet(this,'EventstateCounter',0)
if uiPointerBound == 1 then
if uiPointerContact == 1 then
uiGizmoNextEventstate = DOWN
else
uiGizmoNextEventstate = HOVER
end
else
uiGizmoNextEventstate = DRAG
end
]]>
</script>
</event>
<event state="EXIT">
<script language="darklua" type="1">
<![CDATA[
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = IDLE
]]>
</script>
</event>
<event state="SELECT">
<script language="darklua" type="1">
<![CDATA[
--cursor update
]]>
</script>
</event>
</behavior>
<behavior name="singlekey" description="Single Keyboard Input">
<event state="IDLE">
<script language="darklua" type="1">
<![CDATA[
if uiGizmoContact > 0 then
uiGizmoNextEventstate = ENTER
else
uiGizmoNextEventstate = IDLE
end
]]>
</script>
</event>
<event state="ENTER">
<script language="darklua" type="1">
<![CDATA[
if uiGizmoContact > 0 then
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter > 1 then
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = DOWN
else
uiGizmoNextEventstate = ENTER
end
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="DOWN">
<script language="darklua" type="1">
<![CDATA[
if uiGizmoContact > 0 then
uiGizmoEventstateCounter = uiGizmoPropertyGet(this,'EventstateCounter') + 1
uiGizmoPropertySet(this,'EventstateCounter',uiGizmoEventstateCounter)
if uiGizmoEventstateCounter == 2 then
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = HOLD
else
uiGizmoNextEventstate = DOWN
end
else
uiGizmoNextEventstate = UP
end
]]>
</script>
</event>
<event state="HOLD">
<script language="darklua" type="1">
<![CDATA[
if uiGizmoContact > 0 then
uiGizmoNextEventstate = HOLD
else
uiGizmoNextEventstate = UP
end
]]>
</script>
</event>
<event state="UP">
<script language="darklua" type="1">
<![CDATA[
uiGizmoPropertySet(this,'EventstateCounter',0)
if uiGizmoContact > 0 then
uiGizmoNextEventstate = DOWN
else
uiGizmoNextEventstate = EXIT
end
]]>
</script>
</event>
<event state="EXIT">
<script language="darklua" type="1">
<![CDATA[
uiGizmoPropertySet(this,'EventstateCounter',0)
uiGizmoNextEventstate = IDLE
]]>
</script>
</event>
</behavior>
<!-- TRANSITIONS -->
<transition description="Default Transition: ghost">
<event state="IDLE"/>
<event state="ENTER"/>
<event state="HOVER"/>
<event state="DOWN"/>
<event state="HOLD"/>
<event state="DRAG"/>
<event state="UP"/>
<event state="EXIT"/>
</transition>
<transition name="ghostly" description="Fade In: Fade Out">
<event state="IDLE">
<script language="darklua" type="1">
<![CDATA[
if uiGizmoPreviousEventstate ~= IDLE then
uiGizmoSpriteQuad = uiGizmoPropertyGet(this,'SpriteQuad')
uiGizmoSpriteQuadAlpha = dbSpriteAlphaGet(uiGizmoSpriteQuad)
if uiGizmoSpriteQuadAlpha > 150 then
dbSpriteAlphaSet(uiGizmoSpriteQuad, uiGizmoSpriteQuadAlpha - 5)
else
dbSpriteAlphaSet(uiGizmoSpriteQuad, 150)
uiGizmoPreviousEventstate = IDLE
end
end
]]>
</script>
</event>
<event state="ENTER"/>
<event state="HOVER">
<script language="darklua" type="1">
<![CDATA[
if uiGizmoPreviousEventstate == ENTER then
uiGizmoSpriteQuad = uiGizmoPropertyGet(this,'SpriteQuad')
uiGizmoSpriteQuadAlpha = dbSpriteAlphaGet(uiGizmoSpriteQuad)
if uiGizmoSpriteQuadAlpha < 255 then
dbSpriteAlphaSet(uiGizmoSpriteQuad, uiGizmoSpriteQuadAlpha + 15)
else
dbSpriteAlphaSet(uiGizmoSpriteQuad, 255)
uiGizmoPreviousEventstate = HOVER
end
end
]]>
</script>
</event>
<event state="DOWN"/>
<event state="HOLD"/>
<event state="DRAG"/>
<event state="UP"/>
<event state="EXIT"/>
</transition>
<!-- STYLES -->
<style description="Default Style">
<event state="IDLE">
<font face="arial" size="18" red="255" green="255" blue="255"/><alpha value="150"/>
</event>
<event state="ENTER">
<font face="arial" size="18" red="224" green="224" blue="224"/>
</event>
<event state="HOVER">
<font face="arial" size="18" red="255" green="255" blue="255"/>
</event>
<event state="DOWN">
<font face="arial" size="18" red="255" green="255" blue="255"/>
</event>
<event state="HOLD">
<font face="arial" size="18" red="255" green="255" blue="255" bold="1"/>
</event>
<event state="DRAG">
<font face="arial" size="18" red="255" green="255" blue="255" bold="1"/>
</event>
<event state="UP">
<font face="arial" size="18" red="255" green="255" blue="255" bold="1" italic="1"/>
</event>
<event state="EXIT">
<font face="arial" size="18" red="255" green="255" blue="255"/>
</event>
</style>
<style name="cyantext" description="Cyan Text">
<event state="IDLE">
<font face="courier new" size="18" red="0" green="255" blue="255"/><alpha value="150"/>
</event>
<event state="ENTER">
<font face="courier new" size="18" red="0" green="255" blue="255"/><alpha value="150"/>
</event>
<event state="HOVER">
<font face="courier new" size="18" red="0" green="255" blue="255"/><alpha value="150"/>
</event>
<event state="DOWN">
<font face="courier new" size="18" red="0" green="255" blue="255"/><alpha value="150"/>
</event>
<event state="HOLD">
<font face="courier new" size="18" red="0" green="255" blue="255" bold="1"/><alpha value="150"/>
</event>
<event state="DRAG">
<font face="courier new" size="18" red="0" green="127" blue="127" bold="1"/><alpha value="150"/>
</event>
<event state="UP">
<font face="courier new" size="18" red="255" green="255" blue="0" bold="1" italic="1"/><alpha value="150"/>
</event>
<event state="EXIT">
<font face="courier new" size="18" red="0" green="255" blue="255"/><alpha value="150"/>
</event>
</style>
<!-- THEMES -->
<theme description="default">
<event state="IDLE">
<border
topcentersize="1" topcenterred="127" topcentergreen="127" topcenterblue="127" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="127" middleleftgreen="127" middleleftblue="127" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="95" middlecentergreen="95" middlecenterblue="95" middlecenteralpha="255"
middlerightsize="1" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="63" bottomcentergreen="63" bottomcenterblue="63" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="ENTER">
<border
topcentersize="1" topcenterred="127" topcentergreen="127" topcenterblue="127" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="127" middleleftgreen="127" middleleftblue="127" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="95" middlecentergreen="95" middlecenterblue="95" middlecenteralpha="255"
middlerightsize="1" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="63" bottomcentergreen="63" bottomcenterblue="63" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="HOVER">
<border
topcentersize="1" topcenterred="159" topcentergreen="159" topcenterblue="159" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="159" middleleftgreen="159" middleleftblue="159" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="127" middlecentergreen="127" middlecenterblue="127" middlecenteralpha="255"
middlerightsize="1" middlerightred="95" middlerightgreen="95" middlerightblue="95" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="95" bottomcentergreen="95" bottomcenterblue="95" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="DOWN">
<border
topcentersize="1" topcenterred="95" topcentergreen="95" topcenterblue="95" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="95" middleleftgreen="95" middleleftblue="95" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="127" middlecentergreen="127" middlecenterblue="127" middlecenteralpha="255"
middlerightsize="1" middlerightred="159" middlerightgreen="159" middlerightblue="159" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="159" bottomcentergreen="159" bottomcenterblue="159" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="HOLD">
<border
topcentersize="1" topcenterred="95" topcentergreen="95" topcenterblue="95" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="95" middleleftgreen="95" middleleftblue="95" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="127" middlecentergreen="127" middlecenterblue="127" middlecenteralpha="255"
middlerightsize="1" middlerightred="159" middlerightgreen="159" middlerightblue="159" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="159" bottomcentergreen="159" bottomcenterblue="159" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="DRAG">
<border
topcentersize="1" topcenterred="127" topcentergreen="127" topcenterblue="127" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="127" middleleftgreen="127" middleleftblue="127" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="159" middlecentergreen="159" middlecenterblue="159" middlecenteralpha="255"
middlerightsize="1" middlerightred="191" middlerightgreen="191" middlerightblue="191" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="191" bottomcentergreen="191" bottomcenterblue="191" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="UP">
<border
topcentersize="1" topcenterred="223" topcentergreen="223" topcenterblue="223" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="223" middleleftgreen="223" middleleftblue="223" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="191" middlecentergreen="191" middlecenterblue="191" middlecenteralpha="255"
middlerightsize="1" middlerightred="159" middlerightgreen="159" middlerightblue="159" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="159" bottomcentergreen="159" bottomcenterblue="159" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="EXIT">
<border
topcentersize="1" topcenterred="127" topcentergreen="127" topcenterblue="127" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="1" middleleftred="127" middleleftgreen="127" middleleftblue="127" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="1" middlecenterred="255" middlecentergreen="0" middlecenterblue="0" middlecenteralpha="255"
middlerightsize="1" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="1" bottomcenterred="63" bottomcentergreen="63" bottomcenterblue="63" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
</theme>
<theme name="xray" description="Xray Theme">
<event state="IDLE">
<border
topcentersize="2" topcenterred="224" topcentergreen="0" topcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middleleftred="162" middleleftgreen="162" middleleftblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="193" middlecenterblue="0" middlecenteralpha="255"
middlerightsize="2" middlerightred="31" middlerightgreen="31" middlerightblue="31" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" bottomcenterred="31" bottomcentergreen="31" bottomcenterblue="31" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="ENTER">
<border
topcentersize="2" topcenterred="224" topcentergreen="0" topcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middleleftred="162" middleleftgreen="162" middleleftblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="193" middlecenterblue="0" middlecenteralpha="255"
middlerightsize="2" middlerightred="31" middlerightgreen="31" middlerightblue="31" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" bottomcenterred="31" bottomcentergreen="31" bottomcenterblue="31" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="HOVER">
<border
topcentersize="2" topcenterred="255" topcentergreen="0" topcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middleleftred="193" middleleftgreen="193" middleleftblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="193" middlecenterblue="0" middlecenteralpha="255"
middlerightsize="2" middlerightred="62" middlerightgreen="62" middlerightblue="62" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" bottomcenterred="62" bottomcentergreen="62" bottomcenterblue="62" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="DOWN">
<border
topcentersize="2" bottomcenterred="255" bottomcentergreen="0" bottomcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middlerightred="193" middlerightgreen="193" middlerightblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="193" middlecenterblue="0" middlecenteralpha="255"
middlerightsize="2" middleleftred="62" middleleftgreen="62" middleleftblue="62" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" topcenterred="62" topcentergreen="62" topcenterblue="62" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="HOLD">
<border
topcentersize="2" bottomcenterred="255" bottomcentergreen="0" bottomcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middlerightred="193" middlerightgreen="193" middlerightblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="255" middlecenterblue="0" middlecenteralpha="255"
middlerightsize="2" middleleftred="62" middleleftgreen="62" middleleftblue="62" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" topcenterred="62" topcentergreen="62" topcenterblue="62" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="DRAG">
<border
topcentersize="2" bottomcenterred="255" bottomcentergreen="0" bottomcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middlerightred="193" middlerightgreen="193" middlerightblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="255" middlecenterblue="255" middlecenteralpha="255"
middlerightsize="2" middleleftred="62" middleleftgreen="62" middleleftblue="62" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" topcenterred="62" topcentergreen="62" topcenterblue="62" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="UP">
<border
topcentersize="2" bottomcenterred="255" bottomcentergreen="0" bottomcenterblue="0" topcenteralpha="255" topcenterlinestyle="0"
middleleftsize="2" middlerightred="255" middlerightgreen="255" middlerightblue="0" middleleftalpha="255" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="255" middlecenterblue="255" middlecenteralpha="255"
middlerightsize="2" middleleftred="255" middleleftgreen="255" middleleftblue="255" middlerightalpha="255" middlerightlinestyle="0"
bottomcentersize="2" topcenterred="255" topcentergreen="255" topcenterblue="255" bottomcenteralpha="255" bottomcenterlinestyle="0"
/>
</event>
<event state="EXIT">
<border
topcentersize="2" topcenterred="193" topcentergreen="0" topcenterblue="0" topcenteralpha="193" topcenterlinestyle="0"
middleleftsize="2" middleleftred="131" middleleftgreen="131" middleleftblue="0" middleleftalpha="193" middleleftlinestyle="0"
middlecentersize="2" middlecenterred="0" middlecentergreen="193" middlecenterblue="0" middlecenteralpha="193"
middlerightsize="2" middlerightred="1" middlerightgreen="1" middlerightblue="1" middlerightalpha="193" middlerightlinestyle="0"
bottomcentersize="2" bottomcenterred="1" bottomcentergreen="1" bottomcenterblue="1" bottomcenteralpha="193" bottomcenterlinestyle="0"
/>
</event>
</theme>
<theme name="blkbox" description="The Black Box">
<event state="IDLE">
<border topcentersize="1" topcenterred="0" topcentergreen="0" topcenterblue="0" topcenteralpha="255" topcenterlinestyle="0" middleleftsize="1" middleleftred="0" middleleftgreen="0" middleleftblue="2" middleleftalpha="0" middleleftlinestyle="0" middlecentersize="0" middlecenterred="0" middlecentergreen="0" middlecenterblue="127" middlecenteralpha="0" middlerightsize="1" middlerightred="128" middlerightgreen="0" middlerightblue="255" middlerightalpha="255" middlerightlinestyle="0" bottomcentersize="1" bottomcenterred="0" bottomcentergreen="0" bottomcenterblue="0" bottomcenteralpha="255" bottomcenterlinestyle="0" colorkeyred="0" colorkeygreen="255"/>
</event>
<event state="ENTER"/>
<event state="HOVER">
<border topcentersize="2" topcenterred="255" topcentergreen="0" topcenterblue="2" topcenteralpha="255" topcenterlinestyle="0" middleleftsize="2" middleleftred="191" middleleftgreen="191" middleleftblue="2" middleleftalpha="255" middleleftlinestyle="0" middlecentersize="2" middlecenterred="0" middlecentergreen="255" middlecenterblue="0" middlecenteralpha="255" middlerightsize="2" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0" bottomcentersize="2" bottomcenterred="63" bottomcentergreen="63" bottomcenterblue="63" bottomcenteralpha="255" bottomcenterlinestyle="0" />
</event>
<event state="DOWN">
<border topcentersize="2" topcenterred="255" topcentergreen="0" topcenterblue="127" topcenteralpha="255" topcenterlinestyle="0" middleleftsize="2" middleleftred="191" middleleftgreen="191" middleleftblue="2" middleleftalpha="255" middleleftlinestyle="0" middlecentersize="2" middlecenterred="127" middlecentergreen="92" middlecenterblue="255" middlecenteralpha="255" middlerightsize="2" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0" bottomcentersize="2" bottomcenterred="63" bottomcentergreen="63" bottomcenterblue="63" bottomcenteralpha="255" bottomcenterlinestyle="0" />
</event>
<event state="HOLD">
<border topcentersize="4" topcenterred="63" topcentergreen="63" topcenterblue="63" topcenteralpha="255" topcenterlinestyle="0" middleleftsize="4" middleleftred="191" middleleftgreen="191" middleleftblue="191" middleleftalpha="255" middleleftlinestyle="0" middlecentersize="4" middlecenterred="127" middlecentergreen="127" middlecenterblue="127" middlecenteralpha="255" middlerightsize="4" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0" bottomcentersize="4" bottomcenterred="15" bottomcentergreen="15" bottomcenterblue="15" bottomcenteralpha="255" bottomcenterlinestyle="0"/>
</event>
<event state="DRAG">
<border topcentersize="4" topcenterred="63" topcentergreen="63" topcenterblue="63" topcenteralpha="255" topcenterlinestyle="0" middleleftsize="4" middleleftred="191" middleleftgreen="191" middleleftblue="191" middleleftalpha="255" middleleftlinestyle="0" middlecentersize="4" middlecenterred="255" middlecentergreen="63" middlecenterblue="127" middlecenteralpha="255" middlerightsize="4" middlerightred="63" middlerightgreen="63" middlerightblue="63" middlerightalpha="255" middlerightlinestyle="0" bottomcentersize="4" bottomcenterred="15" bottomcentergreen="15" bottomcenterblue="15" bottomcenteralpha="255" bottomcenterlinestyle="0"/>
</event>
<event state="UP"/>
<event state="EXIT"/>
</theme>
<theme name="fade1" description="Image Based Theme Border">
<event state="IDLE">
<border
topleftsrc="assets/2D/border_ie_topleft.png"
topcentersrc="assets/2D/border_ie_topcenter.png"
toprightsrc="assets/2D/border_ie_topright.png"
middleleftsrc="assets/2D/border_ie_middleleft.png"
middlecentersrc="assets/2D/border_ie_middlecenter.png"
middlerightsrc="assets/2D/border_ie_middleright.png"
bottomrightsrc="assets/2D/border_ie_bottomright.png"
bottomcentersrc="assets/2D/border_ie_bottomcenter.png"
bottomleftsrc="assets/2D/border_ie_bottomleft.png"
/>
</event>
<event state="ENTER"/>
<event state="HOVER"/>
<event state="DOWN"/>
<event state="HOLD"/>
<event state="DRAG"/>
<event state="UP"/>
<event state="EXIT"/>
</theme>
<!-- SCHEMES -->
<scheme description="Default Scheme"/>
<scheme name="ambience" description="First Audio Implementation">
<event state="IDLE">
<audio system="dgdk" type="music" loop="0" src="assets/audio/music/intro.mp3"/>
</event>
</scheme>
<scheme name="pointingFX" description="Pointer Sound FX">
<event state="IDLE"/>
<event state="ENTER">
<audio system="dgdk" type="sound" loop="0" src="assets/audio/sound/mouseover.wav"/>
</event>
<event state="HOVER"/>
<event state="DOWN"/>
<event state="HOLD"/>
<event state="DRAG"/>
<event state="UP"/>
<event state="EXIT">
<audio system="dgdk" type="sound" loop="0" src="assets/audio/sound/mouseout.wav"/>
</event>
</scheme>
<!-- GIZMOS & DEVICES -->
<!-- Base Canvas, Base Gizmo, Pointer, Caret (Required First) -->
<canvas description="Base Canvas" camera="0" fov="90" nearrange="1" farrange="3000" width="screen" height="screen" zoomfactorx="1.5" zoomfactory="1.5" backdrop="false" backdropcolorred="0" backdropcolorgreen="0" backdropcolorblue="0" base="true">
<orientate x="0" y="0" z="0" width="screen" height="screen">
<physics gravityx="0" gravityy="10" timestep="60" iterations="10" allowsleep="true"/>
</orientate>
</canvas>
<gizmo description="Base Gizmo" visible="0" collision="1" base="true">
<orientate x="0" y="0" z="0" width="screen" height="screen"><physics friction="0.0" density="0.0" restitution="0.0" noresponse="true"/></orientate>
<event state="IDLE" scheme="ambience"/>
</gizmo>
<device name="pointerdevice" type="mouse"/>
<device name="kbdevice" type="keyboard"/>
<!-- END Base Canvas & Gizmo, Pointer -->
<gizmo name="floor" description="floor" visible="1" collision="1">
<orientate x="0" y="764" z="0" width="1023" height="2"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
</gizmo>
<gizmo name="ceiling" description="ceiling" visible="1" collision="1">
<orientate x="0" y="0" z="0" width="1023" height="2"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" caption="L"/>
</gizmo>
<gizmo name="lwall" description="lwall" visible="1" collision="1">
<orientate x="0" y="2" z="0" width="2" height="764"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" caption="L"/>
</gizmo>
<gizmo name="rwall" description="rwall" visible="1" collision="1">
<orientate x="1020" y="2" z="0" width="2" height="764"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" caption="R"/>
</gizmo>
<gizmo name="xmlgizmo" description="first xml gizmo (*.maui)" visible="1" collision="1">
<orientate x="400" y="25" z="0" width="64" height="64"><physics friction="0.1" density="1.0" restitution="0.1"/></orientate>
<event state="IDLE" behavior="button" transition="ghostly" theme="blkbox" caption="S3GE" src="assets/2D/maui_big.bmp"/>
<event state="ENTER" caption="S3GE"/>
<event state="HOVER" caption="S3GE"/>
<event state="DOWN" caption="S3GE"/>
<event state="HOLD" caption="S3GE"/>
<event state="DRAG" caption="S3GE"/>
<event state="UP" caption="S3GE"/>
<event state="EXIT" caption="S3GE"/>
</gizmo>
<gizmo parent="xmlgizmo" name="min" description="gray button" visible="1" collision="1">
<orientate ref="lwall" xalign="right" width="30" height="30"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" behavior="button" transition="ghostly" scheme="pointingFX" caption="IDLE"/>
<event state="ENTER" caption="ENTER"/>
<event state="HOVER" caption="HOVER"/>
<event state="DOWN" caption="DOWN">
<script language="darklua" type="1">
<![CDATA[
dbObjectSpinX(1,3)
dbObjectSpinY(1,3)
]]>
</script>
</event>
<event state="HOLD" caption="HOLD">
<script language="darklua" type="1">
<![CDATA[
dbObjectSpinX(1,3)
dbObjectSpinY(1,3)
]]>
</script>
</event>
<event state="DRAG" caption="DRAG">
<script language="darklua" type="1">
<![CDATA[
dbObjectSpinY(1,3)
dbObjectSpinX(1,3)
]]>
</script>
</event>
<event state="UP" caption="UP"/>
<event state="EXIT" caption="EXIT"/>
</gizmo>
<gizmo parent="xmlgizmo" name="min2" description="copy min" visible="1" collision="1">
<orientate ref="min" width="100" height="28" xalign="right"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<variable name="linecount" value="1"/>
<variable name="1" value="Hello World"/>
<event state="IDLE" behavior="button" transition="ghostly" theme="fade1" style="cyantext" scheme="pointingFX" caption="Iexplore"/>
<event state="ENTER" caption="Iexplore"/>
<event state="HOVER" caption="Iexplore"/>
<event state="DOWN" caption="Iexplore"/>
<event state="HOLD" caption="Iexplore"/>
<event state="DRAG" caption="Iexplore"/>
<event state="UP" caption="Iexplore"/>
<event state="EXIT" caption="Iexplore"/>
</gizmo>
<gizmo type="wizmo" name="button3D" description="First 3D Button" visible="1" collision="1" value="Hello World">
<orientate width="100" height="28" xalign="right">
<physics friction="0.0" density="0.0" restitution="0.0"/>
</orientate>
<event state="IDLE" caption="3D"/>
</gizmo>
<form name="testform" description="HTTP Test Form" method="POST" host="www.hpquest.com" port="80" src="/MOR/Data/UI/mmo_clientlaunch.php" path="test.maui">
<gizmo parent="xmlgizmo" name="username" description="copy min" visible="1" collision="1" value="Guest">
<orientate ref="min2" width="100" height="28" xalign="right"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" behavior="button" transition="ghostly" theme="xray" style="cyantext" scheme="pointingFX" caption="HTTP Test 1"/>
<event state="ENTER" caption="HTTP Test 1"/>
<event state="HOVER" caption="Get Data"/>
<event state="DOWN" caption="HTTP Test 1"/>
<event state="HOLD" caption="HTTP Test 1"/>
<event state="DRAG" caption="HTTP Test 1"/>
<event state="UP" caption="Executing...">
<script language="darklua" type="1">
<![CDATA[
testBed('HTTP Test',1,'www.hpquest.com',80,'/MOR/Data/UI/maui_behaviors.php','maui_behaviors.maui')
]]>
</script>
</event>
<event state="EXIT" caption="HTTP Test 1"/>
</gizmo>
<gizmo parent="xmlgizmo" name="password" description="copy min" visible="1" collision="1" value="Guest">
<orientate ref="username" width="100" height="28" xalign="right"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" behavior="button" transition="ghostly" theme="xray" style="cyantext" scheme="pointingFX" caption="HTTP Test 2"/>
<event state="ENTER" caption="HTTP Test 2"/>
<event state="HOVER" caption="Get Media"/>
<event state="DOWN" caption="HTTP Test 2"/>
<event state="HOLD" caption="HTTP Test 2"/>
<event state="DRAG" caption="HTTP Test 2"/>
<event state="UP" caption="Executing...">
<script language="darklua" type="1">
<![CDATA[
testBed('HTTP Test',1,'www.hpquest.com',80,'/MOR/2D/splash3.jpg','splash3.jpg')
]]>
</script>
</event>
<event state="EXIT" caption="HTTP Test 2"/>
</gizmo>
<gizmo parent="xmlgizmo" name="submit" description="submit button" visible="1" collision="1" value="submit">
<orientate ref="password" width="100" height="28" xalign="right"><physics friction="0.0" density="0.0" restitution="0.0"/></orientate>
<event state="IDLE" behavior="button" transition="ghostly" theme="xray" style="cyantext" scheme="pointingFX" caption="Submit"/>
<event state="ENTER" caption="Submit"/>
<event state="HOVER" transition="ghostly" caption="Send"/>
<event state="DOWN" caption="Send"/>
<event state="HOLD" caption="Send"/>
<event state="DRAG" caption="Pending..."/>
<event state="UP" caption="Sending...">
<script language="darklua" type="1">
<![CDATA[
uiFormSubmit("testform")
]]>
</script>
</event>
<event state="EXIT" caption="Submit"/>
</gizmo>
</form>
<gizmo name="movecamforward" type="widget" device="kbdevice" value="W" collision="1" >
<event state="IDLE" behavior="singlekey"/>
<event state="ENTER" />
<event state="HOVER" />
<event state="DOWN" />
<event state="HOLD" >
<script language="darklua" type="1">
<![CDATA[
dbCameraMove(0,1.0)
]]>
</script>
</event>
<event state="UP"/>
<event state="EXIT"/>
</gizmo>
<gizmo name="movecamback" type="widget" device="kbdevice" value="S" collision="1" >
<event state="IDLE" behavior="singlekey"/>
<event state="ENTER" />
<event state="HOVER" />
<event state="DOWN" />
<event state="HOLD" >
<script language="darklua" type="1">
<![CDATA[
dbCameraMove(0,-1.0)
]]>
</script>
</event>
<event state="UP"/>
<event state="EXIT"/>
</gizmo>
<gizmo name="caret" description="Textbox Caret" visible="1" collision="0" caret="true">
<orientate y="100" x="100" width="2" height="30">
<physics friction="0.0" density="0.0" restitution="0.0" noresponse="true"/>
</orientate>
<event state="IDLE" caption="Caret"/>
</gizmo>
<gizmo name="point" description="Mouse Controlled Gizmo" visible="1" collision="1" device="pointerdevice" pointer="true">
<orientate x="0" y="0" z="0" width="2" height="2"><physics type="mousejoint"/></orientate>
<event state="IDLE" caption="."/>
</gizmo>
</maui>
The MAUI Help Docs will explain tag usage and rules. However, you may be able to grasp the flow of things from this file. You define the event states, behaviors, transitions, style, themes, schemes first. Then the base canvas, gizmo, devices. Finally the gizmos. MAUI currently only has a Button Behavior and I'm developing a Textbox now.
Quote: "My gut just tells me that alot of what is integrated into maui should be seperate systems"
I'm not sure what you mean by separate systems. The goal should be to integrate systems together to create a engine. Currently, MAUI is the only core system in the engine.
Quote: " take the id handling system, this is really cool but why is it tied up with the GUI stuff."
Testing. I realize the need for common resource managers that are globally accessible to other systems. I intend to relocate the Resource Managers in MAUI into Common lib when more systems make an appearance. This may also change when Scenergy is built up to handle all game level loading.
Quote: "maybe im wrong , but isnt Maui actually controls everything on screen?"
MAUI will manage all User Interfaces. The current goal is to build up MAUI to provide typical GUI function. A GUI editor will follow.