added blocks, templates, unifcation, basic preview pane

This commit is contained in:
User 2017-09-03 14:13:21 +02:00
commit 224f4c46c5
147 changed files with 10811 additions and 0 deletions

175
Project3.project.gmx Normal file
View File

@ -0,0 +1,175 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<assets>
<Configs name="configs">
<Config>Configs\Default</Config>
</Configs>
<NewExtensions/>
<sounds name="sound"/>
<sprites name="sprites">
<sprite>sprites\pixel</sprite>
<sprites name="placeholders">
<sprite>sprites\placeholder\placeholder</sprite>
<sprite>sprites\placeholder\placeholderBlock</sprite>
<sprite>sprites\placeholder\placeholderInputAnchor</sprite>
<sprite>sprites\placeholder\placeholderInputAnchorWhite</sprite>
<sprite>sprites\placeholder\placeholderOutputAnchor</sprite>
<sprite>sprites\placeholder\placeholderOutputAnchorWhite</sprite>
<sprite>sprites\placeholder\placeholderVariableType</sprite>
<sprite>sprites\placeholder\placeholderMonoType</sprite>
<sprite>sprites\placeholder\placeholderFunctionType</sprite>
<sprite>sprites\placeholder\placeholderTypeTrait</sprite>
<sprite>sprites\placeholder\placeholderParameter</sprite>
<sprite>sprites\placeholder\placeholderError</sprite>
<sprite>sprites\placeholder\placeholderLine</sprite>
<sprite>sprites\placeholder\placeholderOrderLink</sprite>
<sprite>sprites\placeholder\placeholderPane</sprite>
<sprite>sprites\placeholder\placeholderOneUse</sprite>
</sprites>
<sprites name="masks">
<sprite>sprites\mask\maskConnection</sprite>
</sprites>
</sprites>
<backgrounds name="background"/>
<paths name="paths"/>
<scripts name="scripts">
<scripts name="debug">
<script>scripts\debug\sceneNodeToString.gml</script>
<script>scripts\debug\typesToDot.gml</script>
</scripts>
<scripts name="generic">
<script>scripts\generic\assert.gml</script>
<script>scripts\generic\assertInstanceof.gml</script>
<script>scripts\generic\cancelTouchEvent.gml</script>
<script>scripts\generic\delete.gml</script>
<script>scripts\generic\format.gml</script>
<script>scripts\generic\getInstObjName.gml</script>
<script>scripts\generic\hermite.gml</script>
<script>scripts\generic\instanceof.gml</script>
<script>scripts\generic\new.gml</script>
<script>scripts\generic\performAs.gml</script>
<script>scripts\generic\string_base.gml</script>
</scripts>
<scripts name="graph">
<script>scripts\graph\addLink.gml</script>
<script>scripts\graph\removeLink.gml</script>
<script>scripts\graph\replaceLink.gml</script>
</scripts>
<scripts name="scene">
<script>scripts\scene\layout.gml</script>
<script>scripts\scene\setMargin.gml</script>
<script>scripts\scene\setPadding.gml</script>
</scripts>
<scripts name="set">
<script>scripts\set\ds_set_add_all.gml</script>
<script>scripts\set\ds_set_add.gml</script>
<script>scripts\set\ds_set_choose.gml</script>
<script>scripts\set\ds_set_clear.gml</script>
<script>scripts\set\ds_set_copy.gml</script>
<script>scripts\set\ds_set_create.gml</script>
<script>scripts\set\ds_set_delete.gml</script>
<script>scripts\set\ds_set_destroy.gml</script>
<script>scripts\set\ds_set_empty.gml</script>
<script>scripts\set\ds_set_exists.gml</script>
<script>scripts\set\ds_set_first.gml</script>
<script>scripts\set\ds_set_is_disjoint.gml</script>
<script>scripts\set\ds_set_is_equal.gml</script>
<script>scripts\set\ds_set_is_subset.gml</script>
<script>scripts\set\ds_set_last.gml</script>
<script>scripts\set\ds_set_next.gml</script>
<script>scripts\set\ds_set_previous.gml</script>
<script>scripts\set\ds_set_size.gml</script>
</scripts>
<scripts name="treenode">
<script>scripts\treenode\addChild.gml</script>
<script>scripts\treenode\hasChild.gml</script>
<script>scripts\treenode\hasParentNode.gml</script>
<script>scripts\treenode\removeChild.gml</script>
</scripts>
<scripts name="typing">
<script>scripts\typing\copyType.gml</script>
<script>scripts\typing\freshTypes.gml</script>
<script>scripts\typing\getRandomType.gml</script>
<script>scripts\typing\removeType.gml</script>
<script>scripts\typing\setParameter.gml</script>
<script>scripts\typing\testUnify.gml</script>
<script>scripts\typing\unify.gml</script>
<script>scripts\typing\unifyAnchors.gml</script>
</scripts>
<scripts name="blocks">
<script>scripts\blocks\blockFromTemplate.gml</script>
<script>scripts\blocks\createBlock.gml</script>
<script>scripts\blocks\createTypeInstance.gml</script>
<script>scripts\blocks\detachConnectionEnd.gml</script>
<script>scripts\blocks\getBlockCluster.gml</script>
<script>scripts\blocks\getConnectionsForCluster.gml</script>
<script>scripts\blocks\layoutCluster.gml</script>
</scripts>
</scripts>
<objects name="objects">
<objects name="generic">
<objects name="scene">
<object>objects\generic\scene\SceneNode</object>
<object>objects\generic\scene\SpritelessSceneNode</object>
</objects>
<object>objects\generic\Draggable</object>
<object>objects\generic\Error</object>
<object>objects\generic\MaximizeView</object>
<object>objects\generic\MultitouchEventGenerator</object>
<object>objects\generic\OrderedTree</object>
</objects>
<objects name="types">
<object>objects\types\ConcreteType</object>
<object>objects\types\FreeType</object>
<object>objects\types\FunctionType</object>
<object>objects\types\Parametric</object>
<object>objects\types\Trait</object>
<object>objects\types\Type</object>
<object>objects\types\TypeCon1Link</object>
<object>objects\types\TypeConLink</object>
</objects>
<objects name="scene">
<objects name="types">
<object>objects\scene\types\ConcreteTypeInstance</object>
<object>objects\scene\types\FreeTypeInstance</object>
<object>objects\scene\types\FunctionTypeInstance</object>
<object>objects\scene\types\ParametricInstance</object>
<object>objects\scene\types\TraitInstance</object>
<object>objects\scene\types\TypeCon1Instance</object>
<object>objects\scene\types\TypeConInstance</object>
</objects>
<objects name="blocks">
<object>objects\scene\blocks\Anchor</object>
<object>objects\scene\blocks\Block</object>
<object>objects\scene\blocks\Connection</object>
<object>objects\scene\blocks\ConnectionDrain</object>
<object>objects\scene\blocks\ConnectionEnd</object>
<object>objects\scene\blocks\ConnectionSource</object>
<object>objects\scene\blocks\InputAnchor</object>
<object>objects\scene\blocks\OutputAnchor</object>
</objects>
<object>objects\scene\PreviewPane</object>
</objects>
<objects name="blueprint">
<object>objects\blueprint\AnchorTemplate</object>
<object>objects\blueprint\BlockTemplate</object>
<object>objects\blueprint\HigherOrderLink</object>
<object>objects\blueprint\InputTemplate</object>
<object>objects\blueprint\OneUse</object>
<object>objects\blueprint\OutputTemplate</object>
<object>objects\blueprint\ParameterLink</object>
</objects>
<object>objects\Debug</object>
<object>objects\TypeParser</object>
</objects>
<rooms name="rooms">
<room>rooms\room0</room>
</rooms>
<help>
<rtf>help.rtf</rtf>
</help>
<TutorialState>
<IsTutorial>0</IsTutorial>
<TutorialName></TutorialName>
<TutorialPage>0</TutorialPage>
</TutorialState>
</assets>

4
help.rtf Normal file
View File

@ -0,0 +1,4 @@
{\rtf1\ansi\ansicpg1252\deff0\deflang1043{\fonttbl{\f0\fnil\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\fs24\par
}

358
objects/Debug.object.gmx Normal file
View File

@ -0,0 +1,358 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>&lt;undefined&gt;</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Build object tree
objectList = ds_list_create();
objectNames = ds_map_create();
var objects = ds_priority_create();
for (var obj = 0; obj &lt; 200; obj++)
if (object_exists(obj)) {
var prio = obj;
for (var parent = object_get_parent(obj); object_exists(parent); parent = object_get_parent(parent))
prio = parent+prio/200;
ds_priority_add(objects, obj, prio);
}
repeat (ds_priority_size(objects)) {
var obj = ds_priority_delete_min(objects);
ds_list_add(objectList, obj);
var dep = 0;
for (var parent = object_get_parent(obj); object_exists(parent); parent = object_get_parent(parent))
dep++;
objectNames[?obj] = string_repeat(" ", dep)+object_get_name(obj);
}
ds_priority_destroy(objects);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>ds_list_destroy(objectList);
ds_map_destroy(objectNames);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="3" enumb="2">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>visible</string>
</argument>
<argument>
<kind>0</kind>
<string>DEBUG</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="2">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Initialize DEBUG value
globalvar DEBUG;
DEBUG = false;
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="64">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Draw instance counts
var objs = ds_map_create();
with (all)
if (ds_map_exists(objs, self.object_index))
objs[?self.object_index]++;
else
objs[?self.object_index] = 1;
str = "";
for (var i = 0; i &lt; ds_list_size(objectList); i++) {
var obj = objectList[|i];
if (ds_map_exists(objs, obj))
str += objectNames[?obj]+": "+string(objs[?obj])+"#";
}
ds_map_destroy(objs);
draw_text(x, y, str);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Draw sprites of invisible objects
with (all)
if (!self.visible &amp;&amp; sprite_exists(self.sprite_index))
draw_self();
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///highlight ParameterLink endpoints
var col = draw_get_colour();
draw_set_colour(c_red);
with (ParameterLink)
if (collision_point(mouse_x, mouse_y, id, true, false) != noone) {
with (self.source)
draw_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, true);
with (self.drain)
draw_rectangle(bbox_left, bbox_top, bbox_right, bbox_bottom, true);
}
draw_set_colour(col);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="9" enumb="117">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>DEBUG</string>
</argument>
<argument>
<kind>0</kind>
<string>!DEBUG</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="9" enumb="116">
<action>
<libid>1</libid>
<id>331</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_restart_game</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="9" enumb="67">
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>keyboard_check(vk_control)</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///copy type DOT to clipboard
clipboard_set_text(typesToDot());
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="9" enumb="27">
<action>
<libid>1</libid>
<id>332</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_end_game</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,233 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>&lt;undefined&gt;</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>typeMap</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_map_create()</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Create built-in types
root = new(TypeConLink);
//functor = new(Trait);
function = new(TypeCon1Link);
function.type = new(FunctionType);
addLink(root, function);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Destroy typeMap
ds_map_destroy(typeMap);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="12">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Create free types
var types = ds_map_create();
with (FunctionType)
if (id != other.function.type)
other.typeMap[?id] = other.function;
with (Parametric)
if (self.object_index == Parametric) {
var type = new(FreeType);
types[?id] = new(TypeCon1Link);
types[?id].type = type;
}
with (ParameterLink) {
if (!instanceof(self.source, Trait))
other.typeMap[?self.drain] = types[?self.source];
}
with (ParameterLink) {
if (instanceof(self.source, Trait)) {
var t1 = types[?self.drain];
var t2 = t1.type;
var t3 = t2.traits;
ds_set_add(t3, self.source);
}
}
ds_map_destroy(types);
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Call User 2 for all block templates
with (BlockTemplate) {
event_user(2);
}
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="4">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Call User 2
event_user(2);
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Create preview blocks for all templates
with (BlockTemplate) {
var preview = blockFromTemplate(id);
addChild(PreviewPane.id, preview);
}
layout(PreviewPane);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,106 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>con</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="12">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Find type root and call User 2 recursively
var links = ds_priority_create();
var block = noone;
with (BlockTemplate)
if (place_meeting(self.x, self.y, other))
block = id;
with (HigherOrderLink)
if (place_meeting(self.x, self.y, block))
if (instance_nearest(self.x, self.y, AnchorTemplate) == other.id)
ds_priority_add(links, id, self.x);
if (ds_priority_empty(links))
with (Type)
if (place_meeting(self.x, self.y, block))
if (instance_nearest(self.x, self.y, AnchorTemplate) == other.id)
ds_priority_add(links, id, self.x);
assert(!ds_priority_empty(links), "No type found for anchor "+getInstObjName(id));
var root = ds_priority_delete_min(links);
ds_priority_destroy(links);
with (root)
event_user(2);
if (instanceof(root, Type)) {
with (TypeParser)
other.con = self.typeMap[?root];
}
else
self.con = root.con;
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,178 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderBlock</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>2</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>inputs</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_list_create()</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>outputs</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_list_create()</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>allowedUses</string>
</argument>
<argument>
<kind>0</kind>
<string>1</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Count number of allowed uses of this template
var uses = 0;
with (OneUse) {
if (place_meeting(x, y, other))
uses++;
}
if (uses &gt; 0)
allowedUses = uses;
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="12">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Find anchors, call User 2 recursively, attach inputs and outputs
var anchors = ds_priority_create();
with (InputTemplate) {
if (place_meeting(self.x, self.y, other))
ds_priority_add(anchors, id, self.x);
}
with (OutputTemplate) {
if (place_meeting(self.x, self.y, other))
ds_priority_add(anchors, id, self.x);
}
repeat (ds_priority_size(anchors)) {
var anchor = ds_priority_delete_min(anchors);
with (anchor)
event_user(2);
with (TypeParser)
addLink(self.root, anchor.con);
if (instanceof(anchor, InputTemplate))
ds_list_add(self.inputs, anchor.con);
else
ds_list_add(self.outputs, anchor.con);
}
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,100 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderOrderLink</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>1</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>con</string>
</argument>
<argument>
<kind>0</kind>
<string>new(TypeConLink)</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="12">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Find con arguments, call User 2 recursively, build con
var links = ds_priority_create();
var myCon = self.con;
with (Type)
if (place_meeting(self.x, self.y, other))
ds_priority_add(links, id, self.x);
with (HigherOrderLink)
if (id != other.id &amp;&amp; self.x &gt; other.x &amp;&amp; place_meeting(self.x, self.y, other))
ds_priority_add(links, id, self.x);
repeat (ds_priority_size(links)) {
with (ds_priority_delete_min(links)) {
event_user(2);
if (instanceof(id, Type)) {
var t = id;
with (TypeParser)
addLink(myCon, self.typeMap[?t]);
}
else
addLink(other.con, self.con);
}
}
ds_priority_destroy(links);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderInputAnchor</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>AnchorTemplate</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderOneUse</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderOutputAnchor</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>AnchorTemplate</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,74 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderLine</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>1</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>source</string>
</argument>
<argument>
<kind>0</kind>
<string>collision_point(x, y, Parametric, false, true)</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>drain</string>
</argument>
<argument>
<kind>0</kind>
<string>collision_point(x+lengthdir_x(sprite_width, image_angle), y+lengthdir_y(sprite_width, image_angle), Parametric, false, true)</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,508 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>&lt;undefined&gt;</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>mid</string>
</argument>
<argument>
<kind>0</kind>
<string>-2</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="6" enumb="56">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>4</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>mid</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>mid</string>
</argument>
<argument>
<kind>0</kind>
<string>-2</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="6" enumb="50">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>4</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>mid</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>xoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>touch_x-dx</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>yoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>touch_y-dy</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="6" enumb="4">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>4</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>mid</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>1</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>mid</string>
</argument>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>dx</string>
</argument>
<argument>
<kind>0</kind>
<string>touch_x-xoffset</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>dy</string>
</argument>
<argument>
<kind>0</kind>
<string>touch_y-yoffset</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderError</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,226 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>&lt;undefined&gt;</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>-1</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>109</id>
<kind>0</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_move_to</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>view_wview[0]</string>
</argument>
<argument>
<kind>0</kind>
<string>view_hview[0]</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="76">
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>window_get_width() &gt; 0 and window_get_height() &gt; 0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>109</id>
<kind>0</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_move_to</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>window_get_width()</string>
</argument>
<argument>
<kind>0</kind>
<string>window_get_height()</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>x == xprevious and y == yprevious</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Set view and application surface to the window size
view_wview[0] = x;
view_hview[0] = y;
view_wport[0] = x;
view_hport[0] = y;
surface_resize(application_surface, x, y);
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="8" enumb="65">
<action>
<libid>1</libid>
<id>109</id>
<kind>0</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_move_to</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>window_get_width()</string>
</argument>
<argument>
<kind>0</kind>
<string>window_get_height()</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Set view and application surface to the window size
view_wview[0] = x;
view_hview[0] = y;
view_wport[0] = x;
view_hport[0] = y;
surface_resize(application_surface, x, y);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,274 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>&lt;undefined&gt;</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>-1</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>global.touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>-1</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>global.touch_x</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>global.touch_y</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>Remove if globalvar is deprecated and use global. qualifier in your project.</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Register touch_ variables as globalvars
globalvar touch_id, touch_x, touch_y;
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="3" enumb="1">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Copy mouse_x, mouse_y to touch_x, touch_y
global.touch_x = mouse_x;
global.touch_y = mouse_y;
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="3" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Fire mouse events for multiple mouse devices
for (var mid = 0; mid &lt;= 4; mid++) {
global.touch_x = device_mouse_x(mid);
global.touch_y = device_mouse_y(mid);
//Perform button press
global.touch_id = mid;
if (device_mouse_check_button_pressed(mid, mb_left))
with (all) {
event_perform(ev_mouse, ev_global_left_press);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_left_press);
}
global.touch_id = mid;
if (device_mouse_check_button_pressed(mid, mb_right))
with (all) {
event_perform(ev_mouse, ev_global_right_press);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_right_press);
}
global.touch_id = mid;
if (device_mouse_check_button_pressed(mid, mb_middle))
with (all) {
event_perform(ev_mouse, ev_global_middle_press);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_middle_press);
}
//Perform button hold
global.touch_id = mid;
if (device_mouse_check_button(mid, mb_left))
with (all) {
event_perform(ev_mouse, ev_global_left_button);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_left_button);
}
global.touch_id = mid;
if (device_mouse_check_button(mid, mb_right))
with (all) {
event_perform(ev_mouse, ev_global_right_button);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_right_button);
}
global.touch_id = mid;
if (device_mouse_check_button(mid, mb_middle))
with (all) {
event_perform(ev_mouse, ev_global_middle_button);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_middle_button);
}
//Perform button release
global.touch_id = mid;
if (device_mouse_check_button_released(mid, mb_left))
with (all) {
event_perform(ev_mouse, ev_global_left_release);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_left_release);
}
global.touch_id = mid;
if (device_mouse_check_button_released(mid, mb_right))
with (all) {
event_perform(ev_mouse, ev_global_right_release);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_right_release);
}
global.touch_id = mid;
if (device_mouse_check_button_released(mid, mb_middle))
with (all) {
event_perform(ev_mouse, ev_global_middle_release);
if (collision_point(device_mouse_x(mid), device_mouse_y(mid), id, true, false))
event_perform(ev_mouse, ev_middle_release);
}
}
global.touch_id = -1;
global.touch_x = 0;
global.touch_y = 0;
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,122 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>&lt;undefined&gt;</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>Defines the attributes `parent` and `children`. Children are implemented as an ordered list.</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>parent</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>children</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_list_create()</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Clear all children's parent and remove the children list
for (i = 0; i &lt; ds_list_size(children); i++)
children[|i].parent = noone;
ds_list_destroy(children);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,685 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>OrderedTree</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>Base class for SceneNodes. Defines size, offset, margins, padding alignment.</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>width</string>
</argument>
<argument>
<kind>0</kind>
<string>sprite_width</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>sprite_height</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>xoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>x</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>yoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>y</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>halign</string>
</argument>
<argument>
<kind>0</kind>
<string>fa_left</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>valign</string>
</argument>
<argument>
<kind>0</kind>
<string>fa_top</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>setMargin</script>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>setPadding</script>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Destroy children and children list
while (!ds_list_empty(children))
with (children[|0])
instance_destroy();
ds_list_destroy(children);
if (instance_exists(parent))
removeChild(parent, id);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="11">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>Recalculate position event</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>default implementation: set position from local offset and call children</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>parent</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>visible</string>
</argument>
<argument>
<kind>0</kind>
<string>parent.visible</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Calculate absolute position from offsets
x = xoffset+paddingLeft;
y = yoffset+paddingTop;
if (instance_exists(parent)) {
x += parent.x;
y += parent.y;
switch (parent.halign) {
case fa_center:
x -= width/2;
break;
case fa_right:
x -= width;
break;
}
switch (parent.valign) {
case fa_middle:
y += parent.height/2;
y -= height/2;
break;
case fa_bottom:
y += parent.height;
y -= height;
break;
}
}
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Call children
for (var i = 0; i &lt; ds_list_size(children); i++)
with (children[|i]) {
event_user(1);
/* switch (other.halign) {
case fa_center:
x += other.width/2;
break;
case fa_right:
x += other.width;
break;
}
switch (other.valign) {
case fa_middle:
y += other.height/2;
break;
case fa_bottom:
y += other.height;
break;
}*/
}
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>Recalculate dimensions event</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>default implementation: call children</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Call children
for (var i = 0; i &lt; ds_list_size(children); i++)
with (children[|i])
event_user(0);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="64">
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>DEBUG</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Debug draw outline of SceneNode
var alp = draw_get_alpha();
var col = draw_get_colour();
var x2, y2;
switch (halign) {
case fa_left:
x2 = x;
break;
case fa_center:
x2 = x-width/2;
break;
case fa_right:
x2 = x-width;
break;
default:
show_error("Unknown h-alignment "+string(halign)+" in "+object_get_name(object_index)+"@"+string(id)+".", true);
}
switch (valign) {
case fa_top:
y2 = y;
break;
case fa_middle:
y2 = y-height/2;
break;
case fa_bottom:
y2 = y-height;
break;
default:
show_error("Unknown v-alignment "+string(valign)+" in "+object_get_name(object_index)+"@"+string(id)+".", true);
}
draw_set_colour(make_colour_hsv(256/7.5*object_index, 255, 255));
draw_set_alpha(0.3);
draw_rectangle(x2, y2, x2+width, y2+height, false);
draw_set_alpha(0.7);
draw_rectangle(x2, y2, x2+width, y2+height, true);
if (instance_exists(parent))
draw_line(x, y, parent.x, parent.y);
draw_set_alpha(alp);
draw_set_colour(col);
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,328 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>pixel</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>For rectangular SceneNodes that have no sensible sprite but require mouse events.</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>width</string>
</argument>
<argument>
<kind>0</kind>
<string>sprite_width</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>sprite_height</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>541</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_set</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>5</kind>
<sprite>pixel</sprite>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>1</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>542</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_transform</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>width</string>
</argument>
<argument>
<kind>0</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>override default implementation: set image scale to width and height</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>542</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_transform</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>width</string>
</argument>
<argument>
<kind>0</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="64">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>override default implementation: only debug draw outline</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>DEBUG</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Debug draw outline of SceneNode
var alp = draw_get_alpha();
var col = draw_get_colour();
draw_set_colour(make_colour_hsv(256/7*object_index, 255, 255));
draw_set_alpha(0.3);
draw_rectangle(x, y, x+width, y+height, false);
draw_set_alpha(0.7);
draw_rectangle(x, y, x+width, y+height, true);
if (instance_exists(parent))
draw_line(x, y, parent.x, parent.y);
draw_set_alpha(alp);
draw_set_colour(col);
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,237 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderPane</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>2</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>width</string>
</argument>
<argument>
<kind>0</kind>
<string>sprite_width</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>sprite_height</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>halign</string>
</argument>
<argument>
<kind>0</kind>
<string>fa_center</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>setPadding</script>
</argument>
<argument>
<kind>0</kind>
<string>20</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>20</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Layout blocks from top to bottom
var yoff = 0;
var lastMargin = 0;
var newWidth = 0;
for (var i = 0; i &lt; ds_list_size(self.children); i++)
with (self.children[|i]) {
self.xoffset = other.width/2;
self.yoffset = yoff+max(self.marginTop, lastMargin);
newWidth = max(self.width, newWidth);
yoff = self.yoffset+self.height;
lastMargin = self.marginBottom;
}
/*self.width = max(newWidth, 20);
self.height = max(yoff+lastMargin, 60);
*/
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>542</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_transform</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>width/sprite_get_width(sprite_index)</string>
</argument>
<argument>
<kind>0</kind>
<string>height/sprite_get_height(sprite_index)</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,311 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>setMargin</script>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>10</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>10</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>halign</string>
</argument>
<argument>
<kind>0</kind>
<string>fa_center</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>freshType</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>currentType</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>removeType</script>
</argument>
<argument>
<kind>0</kind>
<string>freshType</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>removeType</script>
</argument>
<argument>
<kind>0</kind>
<string>currentType</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Increase width if type is larger
width = max(sprite_width, children[|0].width);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,289 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>Vertical spline between two endpoints.</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>FADETIME</string>
</argument>
<argument>
<kind>0</kind>
<string>3*1000000</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>destroyTime</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Create source and drain endpoints
source = new(ConnectionSource);
drain = new(ConnectionDrain);
addChild(id, source);
addChild(id, drain);
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="3" enumb="0">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>destroyTime</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>2</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>destroyTime</string>
</argument>
<argument>
<kind>0</kind>
<string>get_timer()</string>
</argument>
<argument>
<kind>4</kind>
<string>3</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>203</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_kill_object</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="8" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>other</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///draw spline
var overshoot = max(200, abs(source.x-drain.x))+max(0, source.y-drain.y);
if (destroyTime &gt; get_timer())
draw_set_alpha(min(1, (destroyTime-get_timer())/2000000));
draw_primitive_begin(pr_linestrip);
for (var t = 0; t &lt;= 1; t += 1/40)
draw_vertex(hermite(source.x, 0, drain.x, 0, t), hermite(source.y, overshoot, drain.y, overshoot, t));
draw_primitive_end();
draw_set_alpha(1);
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>DEBUG</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///draw debug text
draw_text((source.x+drain.x)/2, (source.y+drain.y)/2,
"source: "+getInstObjName(source.target)+" "+string(source.x)+","+string(source.y)+"#"+
"drain: "+getInstObjName(drain.target)+" "+string(drain.x)+","+string(drain.y)+"#"+
"sourceTouch: "+string(source.mid)+", drainTouch: "+string(drain.mid)+"#"
);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,115 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>-1</depth>
<persistent>0</persistent>
<parentName>ConnectionEnd</parentName>
<maskName>maskConnection</maskName>
<events>
<event eventtype="6" enumb="56">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>mid</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Snap to InputAnchor if possible
var nearest = instance_nearest(x, y, InputAnchor);
if (place_meeting(x, y, nearest) &amp;&amp; !hasParentNode(nearest, PreviewPane)) {
if (self.parent.source.target == noone)
self.target = nearest;
else
if (testUnify(nearest.currentType, self.parent.source.target.currentType))
self.target = nearest;
}
if (self.target != noone) {
with (self.target.line) {
self.drain.target = noone;
self.destroyTime = get_timer()+Connection.FADETIME;
}
self.target.line = self.parent;
if (self.parent.source.target != noone)
unifyAnchors(self.parent.source.target, self.target);
layoutCluster(self.target.parent);
}
else
self.parent.destroyTime = get_timer()+1.5*Connection.FADETIME;
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,798 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>-1</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>maskConnection</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>performAs</script>
</argument>
<argument>
<kind>0</kind>
<string>Draggable</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>target</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>target</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>target.line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="3" enumb="2">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>target</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>xoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>target.x</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>yoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>target.y</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>layout</script>
</argument>
<argument>
<kind>0</kind>
<string>id</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="6" enumb="56">
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>performAs</script>
</argument>
<argument>
<kind>0</kind>
<string>Draggable</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
</event>
<event eventtype="6" enumb="50">
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>performAs</script>
</argument>
<argument>
<kind>0</kind>
<string>Draggable</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>mid</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>layout</script>
</argument>
<argument>
<kind>0</kind>
<string>parent</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
</event>
<event eventtype="6" enumb="4">
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>performAs</script>
</argument>
<argument>
<kind>0</kind>
<string>Draggable</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>4</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>cancelTouchEvent</script>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>parent.destroyTime</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>target</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>detachConnectionEnd</script>
</argument>
<argument>
<kind>0</kind>
<string>id</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="7" enumb="11">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>DEBUG</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>visible</string>
</argument>
<argument>
<kind>0</kind>
<string>true</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>421</id>
<kind>3</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>visible</string>
</argument>
<argument>
<kind>0</kind>
<string>false</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,115 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>-1</depth>
<persistent>0</persistent>
<parentName>ConnectionEnd</parentName>
<maskName>maskConnection</maskName>
<events>
<event eventtype="6" enumb="56">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>mid</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Snap to OutputAnchor if possible
var nearest = instance_nearest(x, y, OutputAnchor);
if (place_meeting(x, y, nearest) &amp;&amp; !hasParentNode(nearest, PreviewPane)) {
if (self.parent.drain.target == noone)
self.target = nearest;
else
if (testUnify(nearest.currentType, self.parent.drain.target.currentType))
self.target = nearest;
}
if (self.target != noone) {
with (self.target.line) {
self.source.target = noone;
self.destroyTime = get_timer()+Connection.FADETIME;
}
self.target.line = self.parent;
if (self.parent.drain.target != noone)
unifyAnchors(self.target, self.parent.drain.target);
layoutCluster(self.target.parent);
}
else
self.parent.destroyTime = get_timer()+1.5*Connection.FADETIME;
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,475 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderInputAnchorWhite</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>Anchor</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>line.destroyTime</string>
</argument>
<argument>
<kind>0</kind>
<string>get_timer()+Connection.FADETIME</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>detachConnectionEnd</script>
</argument>
<argument>
<kind>0</kind>
<string>line.drain</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="3" enumb="2">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>self.line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Light up if compatible, unconnected line nearby
var nearest = noone;
var distance = 0;
with (ConnectionDrain)
if (self.target == noone &amp;&amp; self.parent.source.target != noone) {
var d = distance_to_object(other);
if (d &lt; 100 &amp;&amp; (nearest == noone || d &lt; distance)) {
nearest = id;
distance = d;
}
}
if (nearest != noone) {
if (testUnify(self.currentType, nearest.parent.source.target.currentType))
self.image_blend = c_green;
else
self.image_blend = c_red;
}
else
self.image_blend = c_black;
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>421</id>
<kind>3</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>543</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_color</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>13</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>1</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="6" enumb="4">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>4</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>hasParentNode(id, PreviewPane)</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Create connection
line = new(Connection);
line.drain.target = id;
with (line.source) {
xoffset = touch_x;
yoffset = touch_y;
event_perform(ev_mouse, ev_left_press);
}
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>children[|0].height</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,539 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderOutputAnchorWhite</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>Anchor</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>valign</string>
</argument>
<argument>
<kind>0</kind>
<string>fa_bottom</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>line.destroyTime</string>
</argument>
<argument>
<kind>0</kind>
<string>get_timer()+Connection.FADETIME</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>601</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_execute_script</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>9</kind>
<script>detachConnectionEnd</script>
</argument>
<argument>
<kind>0</kind>
<string>line.source</string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
<argument>
<kind>0</kind>
<string></string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="3" enumb="2">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>self.line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Light up if compatible, unconnected line nearby
var nearest = noone;
var distance = 0;
with (ConnectionSource)
if (self.target == noone &amp;&amp; self.parent.drain.target != noone) {
var d = distance_to_object(other);
if (d &lt; 100 &amp;&amp; (nearest == noone || d &lt; distance)) {
nearest = id;
distance = d;
}
}
if (nearest != noone) {
if (testUnify(self.currentType, nearest.parent.drain.target.currentType))
self.image_blend = c_green;
else
self.image_blend = c_red;
}
else
self.image_blend = c_black;
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>421</id>
<kind>3</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>543</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_color</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>13</kind>
<string>0</string>
</argument>
<argument>
<kind>0</kind>
<string>1</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="6" enumb="4">
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>touch_id</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
<argument>
<kind>4</kind>
<string>4</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>408</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>hasParentNode(id, PreviewPane)</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>line</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>422</id>
<kind>1</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Create connection
line = new(Connection);
line.source.target = id;
with (line.drain) {
xoffset = touch_x;
yoffset = touch_y;
event_perform(ev_mouse, ev_left_press);
}
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>424</id>
<kind>2</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>height</string>
</argument>
<argument>
<kind>0</kind>
<string>children[|0].height</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>children[|0].yoffset</string>
</argument>
<argument>
<kind>0</kind>
<string>-children[|0].height</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderMonoType</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>TypeCon1Instance</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderVariableType</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>TypeCon1Instance</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,40 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderFunctionType</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>TypeCon1Instance</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="8" enumb="0">
<action>
<libid>1</libid>
<id>500</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring>draw_self();</codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,107 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>parameter</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="0">
<action>
<libid>1</libid>
<id>500</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring>draw_self();</codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Draw parameter
with (parameter)
draw_sprite_ext(self.sprite_index, self.image_index, other.x, other.y, self.image_xscale, self.image_yscale, self.image_angle, self.image_blend, self.image_alpha);
if (parameter == noone)
draw_sprite_stretched(placeholder, 0, x, y, sprite_width, sprite_height);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,23 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderTypeTrait</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>ParametricInstance</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events/>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,172 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>ParametricInstance</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>type</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>override default</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///layout all children from left to right
var tempWidth = sprite_width;
for (var i = 0; i &lt; ds_list_size(children); i++)
with (children[|i]) {
tempWidth += self.marginLeft;
self.xoffset = tempWidth;
event_user(0);
tempWidth += self.width;
tempWidth += self.marginRight;
}
self.width = tempWidth;
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>parent</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>valign</string>
</argument>
<argument>
<kind>0</kind>
<string>parent.valign</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,226 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>-1</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>SceneNode</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="7" enumb="11">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Set offsets of children
var tempOffset = 0;
var yoff;
if (hasParentNode(id, InputAnchor))
yoff = 3;
else
yoff = -3;
for (var i = 0; i &lt; ds_list_size(children); i++)
with (children[|i]) {
self.xoffset = tempOffset;
self.yoffset = yoff;
tempOffset += self.width;
}
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>612</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>-1</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_if_variable</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>-1</isnot>
<arguments>
<argument>
<kind>0</kind>
<string>parent</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
<argument>
<kind>4</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>valign</string>
</argument>
<argument>
<kind>0</kind>
<string>parent.valign</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
</event>
<event eventtype="7" enumb="10">
<action>
<libid>1</libid>
<id>605</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>0</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>override default</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///determine width and height
var tempWidth = 0, tempHeight = 0;
for (var i = 0; i &lt; ds_list_size(children); i++)
with (children[|i]) {
tempWidth += self.marginLeft;
event_user(0);
tempWidth += self.width;
tempWidth += self.marginRight;
tempHeight = max(tempHeight, self.height);
}
self.width = tempWidth;
self.height = tempHeight+3;
</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="8" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Draw self at offset
var xCombiner, yCombiner;
if (hasParentNode(id, InputAnchor)) {
xCombiner = x;
yCombiner = y;
}
else {
xCombiner = x;
yCombiner = y+height-3;
}
draw_set_colour(c_white);
draw_rectangle(xCombiner, yCombiner, xCombiner+width, yCombiner+3, false);
draw_set_colour(c_black);
draw_rectangle(xCombiner, yCombiner, xCombiner+width, yCombiner+3, true);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,64 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderMonoType</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>Type</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>instance</string>
</argument>
<argument>
<kind>0</kind>
<string>ConcreteTypeInstance</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,64 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderVariableType</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>Type</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>instance</string>
</argument>
<argument>
<kind>0</kind>
<string>FreeTypeInstance</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,64 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderFunctionType</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>ConcreteType</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>instance</string>
</argument>
<argument>
<kind>0</kind>
<string>FunctionTypeInstance</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,102 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderParameter</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>&lt;undefined&gt;</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>541</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>1</exetype>
<functionname>action_sprite_set</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>5</kind>
<sprite>placeholderParameter</sprite>
</argument>
<argument>
<kind>0</kind>
<string>irandom_range(0, sprite_get_number(placeholderParameter)-1)</string>
</argument>
<argument>
<kind>0</kind>
<string>0</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>image_blend</string>
</argument>
<argument>
<kind>0</kind>
<string>make_colour_hsv(irandom(255), 255, 255)</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>instance</string>
</argument>
<argument>
<kind>0</kind>
<string>Error</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,89 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholderTypeTrait</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>Parametric</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>traits</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_set_create()</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Destroy traits set
ds_set_destroy(traits);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,89 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>Parametric</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>traits</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_set_create()</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Destroy traits set
ds_set_destroy(traits);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,64 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>TypeConLink</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>604</id>
<kind>0</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>0</useapplyto>
<exetype>1</exetype>
<functionname>action_inherited</functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>type</string>
</argument>
<argument>
<kind>0</kind>
<string>noone</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

View File

@ -0,0 +1,123 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<object>
<spriteName>placeholder</spriteName>
<solid>0</solid>
<visible>0</visible>
<depth>0</depth>
<persistent>0</persistent>
<parentName>self</parentName>
<maskName>&lt;undefined&gt;</maskName>
<events>
<event eventtype="0" enumb="0">
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>to</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_list_create()</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>611</id>
<kind>6</kind>
<userelative>-1</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>from</string>
</argument>
<argument>
<kind>0</kind>
<string>ds_set_create()</string>
</argument>
</arguments>
</action>
</event>
<event eventtype="1" enumb="0">
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Check whether no links left
assert(ds_list_empty(to) &amp;&amp; ds_set_empty(from), "'"+getInstObjName(id)+"' still connected.");
</string>
</argument>
</arguments>
</action>
<action>
<libid>1</libid>
<id>603</id>
<kind>7</kind>
<userelative>0</userelative>
<isquestion>0</isquestion>
<useapplyto>-1</useapplyto>
<exetype>2</exetype>
<functionname></functionname>
<codestring></codestring>
<whoName>self</whoName>
<relative>0</relative>
<isnot>0</isnot>
<arguments>
<argument>
<kind>1</kind>
<string>///Clear up `from` and `to` links
ds_set_destroy(from);
ds_list_destroy(to);
</string>
</argument>
</arguments>
</action>
</event>
</events>
<PhysicsObject>0</PhysicsObject>
<PhysicsObjectSensor>0</PhysicsObjectSensor>
<PhysicsObjectShape>0</PhysicsObjectShape>
<PhysicsObjectDensity>0.5</PhysicsObjectDensity>
<PhysicsObjectRestitution>0.100000001490116</PhysicsObjectRestitution>
<PhysicsObjectGroup>0</PhysicsObjectGroup>
<PhysicsObjectLinearDamping>0.100000001490116</PhysicsObjectLinearDamping>
<PhysicsObjectAngularDamping>0.100000001490116</PhysicsObjectAngularDamping>
<PhysicsObjectFriction>0.200000002980232</PhysicsObjectFriction>
<PhysicsObjectAwake>-1</PhysicsObjectAwake>
<PhysicsObjectKinematic>0</PhysicsObjectKinematic>
<PhysicsShapePoints/>
</object>

151
rooms/room0.room.gmx Normal file
View File

@ -0,0 +1,151 @@
<!--This Document is generated by GameMaker, if you edit it by hand then you do so at your own risk!-->
<room>
<caption></caption>
<width>4000</width>
<height>4000</height>
<vsnap>16</vsnap>
<hsnap>16</hsnap>
<isometric>0</isometric>
<speed>1000</speed>
<persistent>0</persistent>
<colour>12632256</colour>
<showcolour>-1</showcolour>
<code></code>
<enableViews>-1</enableViews>
<clearViewBackground>-1</clearViewBackground>
<clearDisplayBuffer>-1</clearDisplayBuffer>
<makerSettings>
<isSet>-1</isSet>
<w>980</w>
<h>600</h>
<showGrid>0</showGrid>
<showObjects>-1</showObjects>
<showTiles>-1</showTiles>
<showBackgrounds>-1</showBackgrounds>
<showForegrounds>-1</showForegrounds>
<showViews>0</showViews>
<deleteUnderlyingObj>0</deleteUnderlyingObj>
<deleteUnderlyingTiles>-1</deleteUnderlyingTiles>
<page>0</page>
<xoffset>-75</xoffset>
<yoffset>-95</yoffset>
</makerSettings>
<backgrounds>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
<background visible="0" foreground="0" name="" x="0" y="0" htiled="-1" vtiled="-1" hspeed="0" vspeed="0" stretch="0"/>
</backgrounds>
<views>
<view visible="-1" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
<view visible="0" objName="&lt;undefined&gt;" xview="0" yview="0" wview="1024" hview="768" xport="0" yport="0" wport="1024" hport="768" hborder="32" vborder="32" hspeed="-1" vspeed="-1"/>
</views>
<instances>
<instance objName="MaximizeView" x="336" y="0" name="inst_BF2ED050" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="MultitouchEventGenerator" x="352" y="0" name="inst_F353B671" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="Debug" x="368" y="0" name="inst_099EBE8B" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="BlockTemplate" x="406" y="340" name="inst_E5F776A5" locked="0" code="" scaleX="5.15000009536743" scaleY="8.80645179748535" colour="4290567902" rotation="0"/>
<instance objName="BlockTemplate" x="966" y="375" name="inst_BC9D9691" locked="0" code="" scaleX="3.0759494304657" scaleY="7.19354820251465" colour="4291755982" rotation="0"/>
<instance objName="BlockTemplate" x="700" y="727" name="inst_CCB3C2D0" locked="0" code="" scaleX="6.26582288742065" scaleY="6.74193525314331" colour="4294950847" rotation="0"/>
<instance objName="ParameterLink" x="474" y="455" name="inst_7D52012C" locked="0" code="" scaleX="1.45000004768372" scaleY="1" colour="4278223040" rotation="90"/>
<instance objName="ParameterLink" x="475" y="456" name="inst_0AD8ACB0" locked="0" code="" scaleX="4.09999990463257" scaleY="1" colour="4278223040" rotation="21"/>
<instance objName="ParameterLink" x="556" y="459" name="inst_B5B9A3F4" locked="0" code="" scaleX="1.70000004768372" scaleY="1" colour="4294944591" rotation="122"/>
<instance objName="ParameterLink" x="557" y="457" name="inst_03005EAE" locked="0" code="" scaleX="2.20000004768372" scaleY="1" colour="4294944591" rotation="-87"/>
<instance objName="ParameterLink" x="623" y="458" name="inst_DF1C0390" locked="0" code="" scaleX="2.70000004768372" scaleY="1" colour="4284866655" rotation="-123"/>
<instance objName="ParameterLink" x="624" y="457" name="inst_8FE1C2BB" locked="0" code="" scaleX="1.64999997615814" scaleY="1" colour="4284405079" rotation="66"/>
<instance objName="ParameterLink" x="934" y="307" name="inst_F5755416" locked="0" code="" scaleX="5.40000009536743" scaleY="1" colour="4289749759" rotation="206"/>
<instance objName="ParameterLink" x="1077" y="485" name="inst_34036969" locked="0" code="" scaleX="1.5" scaleY="1" colour="4294946398" rotation="-82"/>
<instance objName="ParameterLink" x="1077" y="482" name="inst_821CC915" locked="0" code="" scaleX="1.29999995231628" scaleY="1" colour="4294946398" rotation="105"/>
<instance objName="ParameterLink" x="935" y="307" name="inst_1C700CB2" locked="0" code="" scaleX="3.04999995231628" scaleY="1" colour="4290740479" rotation="-64"/>
<instance objName="HigherOrderLink" x="1058" y="577" name="inst_A3352B2A" locked="0" code="" scaleX="1.375" scaleY="0.387096762657166" colour="4294967295" rotation="0"/>
<instance objName="HigherOrderLink" x="662" y="350" name="inst_253C8B33" locked="0" code="" scaleX="1.875" scaleY="0.349999994039536" colour="4294967295" rotation="0"/>
<instance objName="HigherOrderLink" x="522" y="594" name="inst_A806A4C0" locked="0" code="" scaleX="1.74000000953674" scaleY="0.375" colour="4294967295" rotation="0"/>
<instance objName="HigherOrderLink" x="439" y="351" name="inst_944CF49F" locked="0" code="" scaleX="2" scaleY="0.484848499298096" colour="4294967295" rotation="0"/>
<instance objName="FunctionType" x="432" y="355" name="inst_69290DC7" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="465" y="355" name="inst_E05C3F1F" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="490" y="356" name="inst_9378F066" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="658" y="352" name="inst_4E21E078" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="712" y="353" name="inst_AC105FC0" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="522" y="592" name="inst_35BD8E0E" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="556" y="590" name="inst_3082976E" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="Trait" x="927" y="297" name="inst_7E7323C3" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1049" y="393" name="inst_67F8EA6B" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1059" y="570" name="inst_BDDB5D7E" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1082" y="571" name="inst_D9C7BCE6" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="Parametric" x="1068" y="475" name="inst_F8F88040" locked="0" code="" scaleX="1" scaleY="1" colour="4294934528" rotation="0"/>
<instance objName="Parametric" x="466" y="449" name="inst_7DDA2A93" locked="0" code="" scaleX="1" scaleY="1" colour="4278190335" rotation="0"/>
<instance objName="Parametric" x="548" y="449" name="inst_A5B1DCEC" locked="0" code="" scaleX="1" scaleY="1" colour="4294934528" rotation="0"/>
<instance objName="Parametric" x="616" y="449" name="inst_1F1768D6" locked="0" code="" scaleX="1" scaleY="1" colour="4278222848" rotation="0"/>
<instance objName="FunctionType" x="725" y="750" name="inst_2D9C653F" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FunctionType" x="788" y="764" name="inst_76CE1CB5" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="754" y="751" name="inst_0552041D" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="813" y="762" name="inst_6DE05713" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="837" y="762" name="inst_419B49DF" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1067" y="746" name="inst_54A4421D" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1101" y="747" name="inst_4B202803" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="868" y="912" name="inst_2785F773" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="Parametric" x="807" y="828" name="inst_D40047C9" locked="0" code="" scaleX="1" scaleY="1" colour="4278255360" rotation="0"/>
<instance objName="Parametric" x="1065" y="830" name="inst_BD88AA92" locked="0" code="" scaleX="1" scaleY="1" colour="4294934528" rotation="0"/>
<instance objName="HigherOrderLink" x="724" y="749" name="inst_935C3CB8" locked="0" code="" scaleX="2.19000005722046" scaleY="0.419354826211929" colour="4294967295" rotation="0"/>
<instance objName="HigherOrderLink" x="785" y="759" name="inst_142BBFF2" locked="0" code="" scaleX="2.28999996185303" scaleY="0.389999985694885" colour="4294967295" rotation="0"/>
<instance objName="HigherOrderLink" x="1067" y="744" name="inst_2DA66580" locked="0" code="" scaleX="1.54838705062866" scaleY="0.479999989271164" colour="4294967295" rotation="0"/>
<instance objName="Parametric" x="866" y="828" name="inst_C2D9F438" locked="0" code="" scaleX="1" scaleY="1" colour="4278190335" rotation="0"/>
<instance objName="ParameterLink" x="1074" y="839" name="inst_6514ACA6" locked="0" code="" scaleX="1.29999995231628" scaleY="1" colour="4294945107" rotation="90"/>
<instance objName="ParameterLink" x="936" y="307" name="inst_3A8B3F51" locked="0" code="" scaleX="8.60000038146973" scaleY="1" colour="4291466751" rotation="284.5"/>
<instance objName="ParameterLink" x="816" y="836" name="inst_9875E93E" locked="0" code="" scaleX="4.69999980926514" scaleY="1" colour="4288020373" rotation="15"/>
<instance objName="ParameterLink" x="814" y="837" name="inst_8C1CC0D6" locked="0" code="" scaleX="1.45000004768372" scaleY="1" colour="4288020373" rotation="124"/>
<instance objName="ParameterLink" x="875" y="837" name="inst_7FB660CD" locked="0" code="" scaleX="1.35000002384186" scaleY="1" colour="4287401215" rotation="129"/>
<instance objName="ParameterLink" x="875" y="838" name="inst_62753B61" locked="0" code="" scaleX="1.14999997615814" scaleY="1" colour="4287401215" rotation="113"/>
<instance objName="ParameterLink" x="875" y="836" name="inst_3779D346" locked="0" code="" scaleX="1.29999995231628" scaleY="1" colour="4287401215" rotation="-89"/>
<instance objName="FreeType" x="947" y="742" name="inst_2E79FC3E" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="ParameterLink" x="875" y="836" name="inst_81EEB4C0" locked="0" code="" scaleX="1.79999995231628" scaleY="1" colour="4288388095" rotation="47"/>
<instance objName="InputTemplate" x="468" y="345" name="inst_2F2E3D0A" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="InputTemplate" x="690" y="344" name="inst_6FB51AD3" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="InputTemplate" x="1057" y="380" name="inst_D880C890" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="InputTemplate" x="811" y="731" name="inst_CCE9F8A5" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="InputTemplate" x="955" y="733" name="inst_D74AD4FE" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="InputTemplate" x="1091" y="733" name="inst_4B0C061D" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="OutputTemplate" x="548" y="615" name="inst_673BF23C" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="OutputTemplate" x="1083" y="603" name="inst_908C390B" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="OutputTemplate" x="876" y="938" name="inst_17B7FF11" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="Parametric" x="1012" y="475" name="inst_89BE2ADE" locked="0" code="" scaleX="1" scaleY="1" colour="4278190335" rotation="0"/>
<instance objName="ParameterLink" x="1021" y="484" name="inst_CE199BAD" locked="0" code="" scaleX="1.64999997615814" scaleY="1" colour="4286743295" rotation="295"/>
<instance objName="TypeParser" x="384" y="0" name="inst_0CCD2FC5" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="BlockTemplate" x="1381" y="326" name="inst_7E8DCA5D" locked="0" code="" scaleX="4.61250019073486" scaleY="6.4193549156189" colour="4288471010" rotation="0"/>
<instance objName="InputTemplate" x="1452" y="331" name="inst_D78610D9" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="InputTemplate" x="1657" y="332" name="inst_0281850D" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="OutputTemplate" x="1555" y="524" name="inst_0B32BB86" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="Parametric" x="1602" y="420" name="inst_4601A169" locked="0" code="" scaleX="1" scaleY="1" colour="4294934528" rotation="0"/>
<instance objName="Parametric" x="1480" y="421" name="inst_1128BD9B" locked="0" code="" scaleX="1" scaleY="1" colour="4278222848" rotation="0"/>
<instance objName="HigherOrderLink" x="1409" y="340" name="inst_B58872CD" locked="0" code="" scaleX="2.74193549156189" scaleY="0.516129016876221" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1452" y="347" name="inst_6D9F6AE0" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1477" y="347" name="inst_35C6E794" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1545" y="500" name="inst_FD4D1D98" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FreeType" x="1651" y="341" name="inst_53F87FF2" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="FunctionType" x="1416" y="349" name="inst_84857CDB" locked="0" code="" scaleX="1" scaleY="1" colour="4294967295" rotation="0"/>
<instance objName="ParameterLink" x="1490" y="428" name="inst_35277574" locked="0" code="" scaleX="1.20000004768372" scaleY="1" colour="4288148121" rotation="111"/>
<instance objName="ParameterLink" x="1489" y="430" name="inst_A0990D83" locked="0" code="" scaleX="2.95000004768372" scaleY="1" colour="4288148121" rotation="25.5"/>
<instance objName="ParameterLink" x="1611" y="430" name="inst_9BA355BE" locked="0" code="" scaleX="2.29999995231628" scaleY="1" colour="4294949493" rotation="150"/>
<instance objName="ParameterLink" x="1611" y="427" name="inst_01781C5F" locked="0" code="" scaleX="1.60000002384186" scaleY="1" colour="4294949493" rotation="-124"/>
<instance objName="PreviewPane" x="0" y="64" name="inst_6D910659" locked="0" code="" scaleX="4" scaleY="11" colour="4294967295" rotation="0"/>
</instances>
<tiles/>
<PhysicsWorld>0</PhysicsWorld>
<PhysicsWorldTop>0</PhysicsWorldTop>
<PhysicsWorldLeft>0</PhysicsWorldLeft>
<PhysicsWorldRight>1024</PhysicsWorldRight>
<PhysicsWorldBottom>768</PhysicsWorldBottom>
<PhysicsWorldGravityX>0</PhysicsWorldGravityX>
<PhysicsWorldGravityY>10</PhysicsWorldGravityY>
<PhysicsWorldPixToMeters>0.100000001490116</PhysicsWorldPixToMeters>
</room>

View File

@ -0,0 +1,19 @@
///blockFromTemplate(template)
/**
* blockFromTemplate :: BlockTemplate -> Instance
*
* Creates a block from the given template.
*
* @param template the block tempalte to use
* @returns the id of the block instance
*/
var template = argument0;
assertInstanceof(template, BlockTemplate);
var block = createBlock(template.inputs, template.outputs);
block.template = template;
return block;

View File

@ -0,0 +1,36 @@
///createBlock(inputTypes, outputTypes)
/**
* createBlock :: List Type -> List Type -> Instance
*
* Creates a block with the given types and returns the id of the block.
*
* @param inputTypes a list of input types
* @param outputTypes a list of output types
* @returns the id of the block instance
*/
var inputTypes = argument0;
var outputTypes = argument1;
var block = new(Block);
for (var i = 0; i < ds_list_size(inputTypes); i++) {
var anchor = new(InputAnchor);
anchor.freshType = new(TypeConLink);
addLink(anchor.freshType, inputTypes[|i]);
addChild(block, anchor);
}
for (var i = 0; i < ds_list_size(outputTypes); i++) {
var anchor = new(OutputAnchor);
anchor.freshType = new(TypeConLink);
addLink(anchor.freshType, outputTypes[|i]);
addChild(block, anchor);
}
freshTypes(block);
layout(block);
return block;

View File

@ -0,0 +1,36 @@
///createTypeInstance(con)
/**
* createTypeInstance :: TypeConLink -> TypeConInstance
*
* Creates a visual type instance for a type.
*
* @param con the type for which to make a type instance
* @returns a type instance
*/
var con = argument0;
assertInstanceof(con, TypeConLink);
var inst;
if (instanceof(con, TypeCon1Link)) {
inst = new(con.type.instance);
inst.parameter = con.type;
var traits = con.type.traits;
for (var trait = ds_set_first(traits); ds_set_exists(traits, trait); trait = ds_set_next(traits, trait)) {
var traitInst = new(TraitInstance);
traitInst.parameter = trait;
addChild(inst, traitInst);
}
}
else {
inst = new(TypeConInstance);
for (var i = 0; i < ds_list_size(con.to); i++)
addChild(inst, createTypeInstance(con.to[|i]));
}
return inst;

View File

@ -0,0 +1,47 @@
///detachConnectionEnd(conn)
/**
* layoutCluster :: ConnectionEnd -> ()
*
* Detaches a connection end from an anchor
*
* @param conn the end point to detach
*/
var conn = argument0;
if (conn.target == noone)
show_error("Connection not attached.", true);
var targetBlock = conn.target.parent;
var otherEnd = noone;
var blocks = getBlockCluster(targetBlock);
if (instanceof(conn, ConnectionSource))
otherEnd = conn.parent.drain;
if (instanceof(conn, ConnectionDrain))
otherEnd = conn.parent.source;
if (otherEnd.target != noone) {
for (var block = ds_set_first(blocks); ds_set_exists(blocks, block); block = ds_set_next(blocks, block))
freshTypes(block);
conn.target.line = noone;
conn.target = noone;
var lines = getConnectionsForCluster(blocks);
for (var line = ds_set_first(lines); ds_set_exists(lines, line); line = ds_set_next(lines, line))
unifyAnchors(line.source.target, line.drain.target);
layoutCluster(ds_set_first(blocks));
for (var block = ds_set_first(blocks); ds_set_exists(blocks, block); block = ds_set_next(blocks, block))
layout(block);
ds_set_destroy(lines);
}
else {
conn.target.line = noone;
conn.target = noone;
}
ds_set_destroy(blocks);

View File

@ -0,0 +1,41 @@
///getBlockCluster(block)
/**
* getBlockCluster :: Block -> Set Block
*
* Returns a set of all blocks in the connected component.
*
* @param block a block within the cluster
*/
var discovered = ds_set_create();
var visited = ds_set_create();
ds_set_add(discovered, argument0);
while (!ds_set_empty(discovered)) {
var block = ds_set_first(discovered);
ds_set_delete(discovered, block);
ds_set_add(visited, block);
for (var i = 0; i < ds_list_size(block.children); i++)
with (block.children[|i]) {
var otherEnd = noone;
if (instanceof(id, OutputAnchor))
if (self.line != noone)
var otherEnd = self.line.drain;
if (instanceof(id, InputAnchor))
if (self.line != noone)
var otherEnd = self.line.source;
with (otherEnd)
if (self.target != noone)
if (!ds_set_exists(visited, self.target.parent))
ds_set_add(discovered, self.target.parent);
}
}
ds_set_destroy(discovered);
return visited;

View File

@ -0,0 +1,20 @@
///getConnectionsForCluster(blocks)
/**
* getConnectionsForCluster :: Set Block -> Set Connection
*
* Returns a set of all connections connecting two blocks within the cluster of blocks.
*
* @param blocks a set of blocks
*/
var blocks = argument0;
var connections = ds_set_create();
with (Connection) {
if (self.source.target != noone && self.drain.target != noone)
if (ds_set_exists(blocks, self.source.target.parent) && ds_set_exists(blocks, self.drain.target.parent))
ds_set_add(connections, id);
}
return connections;

View File

@ -0,0 +1,27 @@
///layoutCluster(block)
/**
* layoutCluster :: Block -> ()
*
* Performs layout() for all blocks in a cluster.
*
* @param block a block within the cluster
*/
var blocks = getBlockCluster(argument0);
for (var block = ds_set_first(blocks); ds_set_exists(blocks, block); block = ds_set_next(blocks, block))
with (block) {
for (var i = 0; i < ds_list_size(children); i++)
if (instanceof(children[|i], Anchor)) {
var typeInst = children[|i].children[|0];
removeChild(children[|i], typeInst);
delete(typeInst);
addChild(children[|i], createTypeInstance(children[|i].currentType.to[|0]));
}
layout(id);
}
ds_set_destroy(blocks);

View File

@ -0,0 +1,29 @@
///sceneNodeToString(id)
/**
* sceneNodeToString :: SceneNode -> String
*
* Returns the scene node with all its children as a string.
*
* @param id the scene node to convert to a string
* @returns the scene node as a string
*/
var node = argument0;
var str = object_get_name(node.object_index)+"@"+string(node.id);
/*
str += " parent: "+string(argument0.parent);
str += " x: "+string(argument0.x)+" y: "+string(argument0.y);
str += " dx: "+string(argument0.xoffset)+" dy: "+string(argument0.yoffset);
str += " width: "+string(argument0.width)+" height: "+string(argument0.height);
*/
for (var i = 0; i < ds_list_size(node.children); i++) {
if (is_real(node.children[|i]) && instance_exists(node.children[|i]))
str += string_replace_all("#"+sceneNodeToString(node.children[|i]), "#", "# ");
else
str += "# [error]: child is "+string(node.children[|i]);
}
return str;

View File

@ -0,0 +1,112 @@
///typesToDot()
/**
* typesToDot :: () -> String
*
* Builds a DOT string for all types.
*
* @returns the DOT string representation of all types
*/
var nl = chr(13)+chr(10);
var dq = '"';
var str = "digraph {";
str += "{rank = same"+nl;
with (Block) {
str += format("i%i[shape=rectangle,style=dashed,label=%'%o%']%n", id, id);
}
if (DEBUG)
with (BlockTemplate) {
str += format("i%i[shape=rectangle,color=%'%c%',style=dashed,label=%'%o%']%n",id,self.image_blend,id);
}
str += "}"+nl;
if (DEBUG) {
str += "{rank = same"+nl;
with (HigherOrderLink) {
str += format("i%i[shape=rectangle,color=darkgreen,style=dashed,label=%'%o%']%n", id, id);
}
with (AnchorTemplate) {
str += format("i%i[shape=rectangle,color=darkgreen,style=dashed,label=%'%o%']%n", id, id);
}
str += "}"+nl;
}
with (Block) {
for (var i = 0; i < ds_list_size(self.children); i++)
if (instanceof(self.children[|i], Anchor)) {
str += format("i%i->i%i[style=dashed,label=%'curr%i%']%n", id, self.children[|i].currentType, i);
str += format("i%i->i%i[style=dashed,label=%'fresh%i%']%n", id, self.children[|i].freshType, i);
}
}
if (DEBUG) {
with (BlockTemplate) {
for (var i = 0; i < ds_list_size(self.inputs); i++)
str += format("i%i->i%i[color=%'%c%',style=dashed,label=%'%o%']%n", id, self.inputs[|i], self.image_blend, id);
for (var i = 0; i < ds_list_size(self.outputs); i++)
str += format("i%i->i%i[color=%'%c%',style=dashed,label=%'%o%']%n", id, self.outputs[|i], self.image_blend, id);
var coll = id;
with (AnchorTemplate)
if (place_meeting(self.x, self.y, coll))
str += format("i%i->i%i[color=%'%c%',style=dashed]%n", coll, id, coll.image_blend);
}
with (HigherOrderLink)
str += format("i%i->i%i[color=darkgreen,style=dashed]%n", id, self.con);
with (AnchorTemplate)
str += format("i%i->i%i[color=darkgreen,style=dashed]%n", id, self.con);
with (ParameterLink)
str += format("i%i->i%i[color=%'%c%',label=%'%o%']%n", self.source, self.drain, self.image_blend, id);
}
with (TypeConLink) {
if (instanceof(id, TypeCon1Link)) {
str += format("i%i[shape=diamond,label=%'s-con%']%n", id);
str += format("i%i->i%i%n", id, self.type);
}
else {
str += format("i%i[shape=diamond,label=%'%i-con%']%n", id, ds_list_size(self.to));
}
for (var i = 0; i < ds_list_size(self.to); i++) {
var err = "";
if (!ds_set_exists(self.to[|i].from, id))
err = "color=red,";
str += format("i%i->i%i[%slabel=%'%i%']%n", id, self.to[|i], err, i);
}
for (var from = ds_set_first(self.from); ds_set_exists(self.from, from); from = ds_set_next(self.from, from)) {
if (ds_list_find_index(from.to, id) == -1)
str += format("i%i->i%i[color=red,style=dashed]%n", from, id);
}
}
with (Parametric) {
if (instanceof(id, FreeType))
str += format("i%i[shape=ellipse,label=%'%o%']%n", id, id);
else if (instanceof(id, ConcreteType))
str += format("i%i[shape=rectangle,label=%'%o%']%n", id, id);
else
str += format("i%i[shape=ellipse,style=dashed,color=%'%c%',label=%'%o%']%n", id, self.image_blend, id);
if (instanceof(id, Type))
for (var trait = ds_set_first(self.traits); ds_set_exists(self.traits, trait); trait = ds_set_next(self.traits, trait))
str += format("i%i->i%i%n", id, trait);
}
with (Trait) {
str += format("i%i[shape=house,label=%'%o%']%n", id, id);
for (var trait = ds_set_first(self.traits); ds_set_exists(self.traits, trait); trait = ds_set_next(self.traits, trait))
str += format("i%i->i%i%n", id, trait);
}
str += "}";
return str;

View File

@ -0,0 +1,13 @@
///assert(expr, msg)
/**
* assert :: Boolean -> a[a->String] -> ()
*
* Asserts an expression is true. If not, the program halts with the given message.
*
* @param expr the expression to test
* @param msg the message shown if the assertion fails
*/
if (!argument0)
show_error(string(argument1), true);

View File

@ -0,0 +1,17 @@
///assertInstanceof(id, ind)
/**
* assertInstanceof :: Instance -> Class -> Bool
*
* Asserts `id` is of type `ind`, either directly or via the parent hierarchy.
*
* @param id the instance to check
* @param ind the object type to check for
* @returns true if id is of type ind, false otherwise
*/
var res = instanceof(argument0, argument1);
assert(res, "'"+getInstObjName(argument0)+"' is not an instance of "+getInstObjName(argument1));
return res;

View File

@ -0,0 +1,9 @@
///cancelTouchEvent()
/**
* cancelTouchEvent :: () -> ()
*
* Stops a touch event by resetting the touch_id.
*/
global.touch_id = -1;

View File

@ -0,0 +1,12 @@
///delete(id)
/**
* delete :: Instance -> ()
*
* Removes an instance.
*
* @param the instance id
*/
with (argument0)
instance_destroy();

107
scripts/generic/format.gml Normal file
View File

@ -0,0 +1,107 @@
#define format
///format(str, arg...)
/**
* format :: String -> ... -> String
*
* Formats a string by replacing parameters `%` by the given values.
* A parameter is either an escape sequence or a conversion type.
*
* Available escape sequences:
* - `%%` for a percent sign `%`
* - `%'` for a double quote `"`
* - `%"` for a single quote `'`
* - `%t` for a tab character
* - `%n` for a newline
*
* Available parameter conversions:
* - `%s` for a string
* - `%i` for a decimal integer
* - `%x` for a hexadecimal integer
* - `%f` for a real value
* - `%o` for an instance or object
* - `%c` for a HTML colour code (`#RRGGBB`)
* - `%dm` for a ds_map
*
* @param str the format string
* @param arg any value that is compatible with its respective conversion format
* @returns a formatted string
*/
var str = argument[0];
var in = str;
var out = "";
var i = 1;
for (var pos = string_pos("%", in); pos > 0; pos = string_pos("%", in)) {
out += string_copy(in, 1, pos-1);
var token = _format_get_token(string_delete(in, 1, pos));
in = string_delete(in, 1, pos+string_length(token));
if (token == "")
show_error("Unexpected format parameter.", false);
else
switch (token) {
case "%":
out += "%";
break;
case "'":
out += '"';
break;
case '"':
out += "'";
break;
case "n":
out += chr($A);
break;
case "t":
out += chr($9);
break;
case "s":
out += string(argument[i]);
i++;
break;
case "i":
out += string(floor(argument[i]));
i++;
break;
case "x":
out += string_base(floor(argument[i]), 16);
i++;
break;
case "f":
out += string(argument[i]);
i++;
break;
case "o":
out += getInstObjName(argument[i]);
i++;
break;
case "c":
var r = ((argument[i] >> 0) mod 256) << 16;
var g = ((argument[i] >> 8) mod 256) << 8;
var b = ((argument[i] >> 16) mod 256) << 0;
out += "#"+string_base(r+g+b, 16);
i++;
break;
default:
show_error("Unexpected format parameter '%"+token+"'.", false);
}
}
out += in;
return out;
#define _format_get_token
if (string_pos(string_char_at(argument0, 1), "%'nt"+'"') > 0)
return string_copy(argument0, 1, 1);
if (string_pos(string_char_at(argument0, 1), "sixfoc") > 0)
return string_copy(argument0, 1, 1);
if (string_pos(string_char_at(argument0, 1), "d") > 0)
return string_copy(argument0, 1, 2);
return "";

View File

@ -0,0 +1,36 @@
///getInstObjName(i)
/**
* getInstObjName :: Any -> String
*
* Returns the given instance/object/keyword as a string.
*/
if (!is_real(argument0))
return "[NaN "+string(argument0)+"]";
if (argument0 >= 0) {
if (object_exists(argument0))
return "<"+object_get_name(argument0)+">";
if (instance_exists(argument0))
return "<"+object_get_name(argument0.object_index)+"@"+string(argument0)+">";
return "[unknown "+string(argument0)+"]";
}
switch (argument0) {
case global:
return "global";
case -7:
return "local";
case self:
return "self";
case other:
return "other";
case noone:
return "noone";
case all:
return "all";
}
return "[unknown "+string(argument0)+"]";

View File

@ -0,0 +1,17 @@
///hermite(x0, dx0, x1, dx1, t)
/**
* hermite :: Real -> Real -> Real -> Real -> Real -> Real
*
* Cubic Hermite interpolation between `x0` and `x1` with tangents `dx0` and `dx1` given a time 0 <= `t` <= 1.
*
* @param x0 the value of x at t=0
* @param dx0 the tangent of x at t=0
* @param x1 the value of x at t=1
* @param dx1 the tangent of x at t=1
* @param t the interpolation parameter 0<=t<=1
* @returns the value x(t)
*/
var t = argument4, t2 = t*t, t3 = t2*t;
return (2*t3-3*t2+1)*argument0+(t3-2*t2+t)*argument1+(-2*t3+3*t2)*argument2+(t3-t2)*argument3;

View File

@ -0,0 +1,23 @@
///instanceof(id, ind)
/**
* instanceof :: Instance -> Class -> Boolean
*
* Returns whether `id` is of type `ind`, either directly or via the parent hierarchy.
*
* @param id the instance to check
* @param ind the object type to check for
* @returns true if id is of type ind, false otherwise
*/
var inst = argument0;
var ind = argument1;
if (!instance_exists(inst))
return false;
for (var obj = inst.object_index; object_exists(obj); obj = object_get_parent(obj))
if (obj == ind)
return true;
return false;

12
scripts/generic/new.gml Normal file
View File

@ -0,0 +1,12 @@
///new(ind)
/**
* new :: Class -> Instance
*
* Creates an instance of object `ind`.
*
* @param ind the object class of the desired instance
* @returns an instance id
*/
return instance_create(0, 0, argument0);

View File

@ -0,0 +1,11 @@
///performAs(ind)
/**
* performAs :: Class -> ()
*
* Performs the current event within another class on the current instance.
*
* @param ind the object whose event to perform
*/
event_perform_object(argument0, event_type, event_number);

View File

@ -0,0 +1,39 @@
///string_base(val, base)
/**
* string_base :: Integer -> Integer -> String
*
* Converts an integer to a string using a given base.
*
* @param val the number to convert
* @param base the number base to use
* @returns a string representation of the number
*/
var val = floor(argument0);
var base = floor(argument1);
var symbols = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
if (base == 10)
return string(val);
if (val < 0)
return "-"+string_base(val, base);
if (base == 1)
return string_repeat("1", val);
if (base <= 0 || base > string_length(symbols)) {
show_error("Unsupported base '"+string(base)+"'.", false);
return "0";
}
if (val == 0)
return "0";
for (var str = ""; val > 0; val = val div base)
str = string_char_at(symbols, 1+(val mod base))+str;
return str;

19
scripts/graph/addLink.gml Normal file
View File

@ -0,0 +1,19 @@
///addLink(from, to)
/**
* addLink :: TypeConLink -> TypeConLink -> ()
*
* Adds an edge from one type con to another.
*
* @param from the source of the edge
* @param to the target of the edge
*/
var from = argument0;
var to = argument1;
assertInstanceof(from, TypeConLink);
assertInstanceof(to, TypeConLink);
ds_list_add(from.to, to);
ds_set_add(to.from, from);

View File

@ -0,0 +1,21 @@
///removeLink(from, to)
/**
* removeLink :: TypeConLink -> TypeConLink -> ()
*
* Removes an edge from one type con to another.
*
* @param from the source of the edge
* @param to the target of the edge
*/
var from = argument0;
var to = argument1;
assertInstanceof(from, TypeConLink);
assertInstanceof(to, TypeConLink);
ds_list_delete(from.to, ds_list_find_index(from.to, to));
if (ds_list_find_index(from.to, to) == -1)
ds_set_delete(to.from, from);

View File

@ -0,0 +1,26 @@
///replaceLink(from, toOld, toNew)
/**
* replaceLink :: TypeConLink -> TypeConLink -> TypeConLink -> ()
*
* Replaces an edge between one type con and another with a new target.
*
* @param from the source of the edge
* @param toOld the current target of the edge
* @param toNew the new target of the edge
*/
var from = argument0;
var toOld = argument1;
var toNew = argument2;
assertInstanceof(from, TypeConLink);
assertInstanceof(toOld, TypeConLink);
assertInstanceof(toNew, TypeConLink);
assert(toOld != toNew, "Replacing link from "+getInstObjName(from)+" to "+getInstObjName(toOld)+" by itself.");
ds_list_replace(from.to, ds_list_find_index(from.to, toOld), toNew);
if (ds_list_find_index(from.to, toOld) == -1)
ds_set_delete(toOld.from, from);
ds_set_add(toNew.from, from);

14
scripts/scene/layout.gml Normal file
View File

@ -0,0 +1,14 @@
///layout(id)
/**
* layout :: SceneNode -> ()
*
* Updates the dimensions and position of a scene node.
*
* @param id the SceneNode to update
*/
with (argument0) {
event_user(0);
event_user(1);
}

View File

@ -0,0 +1,20 @@
///setMargin(top, right, bottom, left)
/**
* setMargin :: Real -> Real -> Real -> Real -> ()
*
* Sets the margins of a scene node.
*
* @param top the new top margin
* @param right the new right margin
* @param bottom the new bottom margin
* @param left the new left margin
*/
if (!instanceof(id, SceneNode))
show_error("Cannot set margins because this instance is not a "+object_get_name(SceneNode), true);
self.marginTop = argument0;
self.marginRight = argument1;
self.marginBottom = argument2;
self.marginLeft = argument3;

View File

@ -0,0 +1,20 @@
///setPadding(top, right, bottom, left)
/**
* setPadding :: Real -> Real -> Real -> Real -> ()
*
* Sets the padding of a scene node.
*
* @param top the new top padding
* @param right the new right padding
* @param bottom the new bottom padding
* @param left the new left padding
*/
if (!instanceof(id, SceneNode))
show_error("Cannot set padding because this instance is not a "+object_get_name(SceneNode), true);
self.paddingTop = argument0;
self.paddingRight = argument1;
self.paddingBottom = argument2;
self.paddingLeft = argument3;

View File

@ -0,0 +1,13 @@
///ds_set_add(set, val)
/**
* ds_set_add :: Set a -> a -> Boolean
*
* Adds an element to the set. Returns whether the element was newly added.
*
* @param set the set resource
* @param val the value to add to the set
* @returns true if the element was added, false if it already exists
*/
return ds_map_add(argument0, argument1, 0);

View File

@ -0,0 +1,16 @@
///ds_set_add_all(a, b)
/**
* ds_set_add_all :: Set a -> Set a -> ()
*
* Adds all elements from set `b` to `a`.
*
* @param a the set to add elements to
* @param b the set of elements to add
*/
var a = argument0;
var b = argument1;
for (var el = ds_set_first(b); ds_set_exists(b, el); el = ds_set_next(b, el))
ds_set_add(a, el);

View File

@ -0,0 +1,18 @@
///ds_set_choose(set)
/**
* ds_set_choose :: Set a -> a
*
* Returns a random element from the set or `undefined` if the set is empty.
*
* @param set the set resource
* @returns an element of the set or undefined
*/
var set = argument0;
var element = ds_map_find_first(set);
repeat (irandom(ds_map_size(set)-1))
element = ds_map_find_next(set, element);
return element;

View File

@ -0,0 +1,10 @@
///ds_set_clear(set)
/**
* ds_set_clear :: Set a -> ()
*
* Removes all element from a set.
*
* @param set the set resource
*/
ds_map_clear(argument0);

View File

@ -0,0 +1,11 @@
///ds_set_copy(set)
/**
* ds_set_copy :: Set a -> Set a
*
* Returns a copy of the given set.
*
* @param set the set resource
* @returns a copy of all elements of this set
*/
return ds_map_copy(argument0, ds_map_create());

View File

@ -0,0 +1,10 @@
///ds_set_create()
/**
* ds_set_create :: () -> Set a
*
* Creates a new set.
*
* @returns the set id
*/
return ds_map_create();

View File

@ -0,0 +1,17 @@
///ds_set_delete(set, val)
/**
* ds_set_delete :: Set a -> a -> ()
*
* Removes an element from the set. Returns whether the element was present in the set.
*
* @param set the set resource
* @param val the value to remove from the set
* @returns true if the element was removed, false if it was not present
*/
if (ds_map_exists(argument0, argument1)) {
ds_map_delete(argument0, argument1);
return true;
}
else
return false;

View File

@ -0,0 +1,10 @@
///ds_set_destroy(set)
/**
* ds_set_destroy :: Set a -> ()
*
* Destroys a set.
*
* @param set the set resource
*/
ds_map_destroy(argument0);

View File

@ -0,0 +1,11 @@
///ds_set_empty(set)
/**
* ds_set_empty :: Set a -> Boolean
*
* Returns whether the given set is empty.
*
* @param set the set resource
* @returns true if the set has no elements, false otherwise
*/
return ds_map_empty(argument0);

View File

@ -0,0 +1,12 @@
///ds_set_exists(set, val)
/**
* ds_set_exists :: Set a -> a -> Boolean
*
* Returns whether the given set contains the given value.
*
* @param set the set resource
* @param val the value to find
* @returns true if the element is present, false otherwise
*/
return ds_map_exists(argument0, argument1);

View File

@ -0,0 +1,12 @@
///ds_set_first(set)
/**
* ds_set_first :: Set a -> a
*
* Returns the 'first' element of the set for iterating over it.
* Guarantees all elements will be enumerated with subsequent calls to {@link ds_set_next}.
*
* @param set the set resource
* @returns an element of the set
*/
return ds_map_find_first(argument0);

View File

@ -0,0 +1,20 @@
///ds_set_is_disjoint(a, b)
/**
* ds_set_is_disjoint :: Set a -> Set a -> Boolean
*
* Returns whether sets `a` and `b` are disjoint.
*
* @param a one set
* @param b another set
* @returns true if a and b have no common element, false otherwise
*/
var a = argument0;
var b = argument1;
for (var el = ds_set_first(a); ds_set_exists(a, el); el = ds_set_next(a, el))
if (ds_set_exists(b, el))
return false;
return true;

View File

@ -0,0 +1,13 @@
///ds_set_is_equal(a, b)
/**
* ds_set_is_equal :: Set a -> Set a -> Boolean
*
* Returns whether sets `a` and `b` are equal.
*
* @param a one set
* @param b another set
* @returns true if all elements appear in both sets, false otherwise
*/
return (ds_set_is_subset(a, b) && ds_set_is_subset(b, a));

View File

@ -0,0 +1,20 @@
///ds_set_is_subset(a, b)
/**
* ds_set_is_subset :: Set a -> Set a -> Boolean
*
* Returns whether set `a` is a subset of set `b`.
*
* @param a one set
* @param b another set
* @returns true if all elements of a appear in b, false otherwise
*/
var a = argument0;
var b = argument1;
for (var el = ds_set_first(a); ds_set_exists(a, el); el = ds_set_next(a, el))
if (!ds_set_exists(b, el))
return false;
return true;

View File

@ -0,0 +1,12 @@
///ds_set_last(set)
/**
* ds_set_last :: Set a -> a
*
* Returns the 'last' element of the set for iterating over it.
* Guarantees all elements will be enumerated with subsequent calls to {@link ds_set_previous}.
*
* @param set the set resource
* @returns an element of the set
*/
return ds_map_find_last(argument0);

View File

@ -0,0 +1,12 @@
///ds_set_next(set, val)
/**
* ds_set_next :: Set a -> a -> a
*
* Returns the 'next' element of the set given a current element or `undefined` if the element is {@link ds_set_last}.
* Guarantees it will return the input value when composed with {@link ds_set_previous}.
*
* @param set the set resource
* @returns an element of the set or undefined
*/
return ds_map_find_next(argument0, argument1);

View File

@ -0,0 +1,12 @@
///ds_set_previous(set, val)
/**
* ds_set_previous :: Set a -> a -> a
*
* Returns the 'previous' element of the set given a current element or `undefined` if the element is {@link ds_set_first}.
* Guarantees it will return the input value when composed with {@link ds_set_next}.
*
* @param set the set resource
* @returns an element of the set or undefined
*/
return ds_map_find_previous(argument0, argument1);

View File

@ -0,0 +1,11 @@
///ds_set_size(set)
/**
* ds_set_size :: Set a -> Integer
*
* Returns the number of elements in the given set.
*
* @param set the set resource
* @returns the number of elements in this set
*/
return ds_map_size(argument0);

View File

@ -0,0 +1,13 @@
///addChild(parent, child)
/**
* addChild :: TreeNode -> TreeNode -> ()
*
* Adds `child` to the list of children in `parent` and sets the parent of the `child` to `parent`.
*
* @param parent the parent TreeNode
* @param child the child TreeNode
*/
ds_list_add(argument0.children, argument1);
argument1.parent = argument0;

View File

@ -0,0 +1,13 @@
///hasChild(parent, id)
/**
* hasChild :: TreeNode -> TreeNode -> Boolean
*
* Returns whether `parent` directly contains `id` as a child.
*
* @param parent the parent TreeNode
* @param id the child TreeNode
* @returns true if id is a child of parent
*/
return ds_list_find_index(argument0.children, argument1);

View File

@ -0,0 +1,17 @@
///hasParentNode(id, ind)
/**
* hasParentNode :: TreeNode -> Class -> Bool
*
* Returns whether `id` has a parent node of type `ind` somewhere up the tree.
*
* @param id the node to check
* @param ind the node type type to look for
* @returns true if id has a parent of type ind, false otherwise
*/
for (var node = argument0.parent; node != noone; node = node.parent)
if (node.object_index == argument1)
return true;
return false;

View File

@ -0,0 +1,13 @@
///removeChild(parent, child)
/**
* removeChild :: TreeNode -> TreeNode -> ()
*
* Removes `child` from the list of children in `parent` and sets the parent of the `child` to noone.
*
* @param parent the parent TreeNode
* @param child the child TreeNode
*/
ds_list_delete(argument0.children, ds_list_find_index(argument0.children, argument1));
argument1.parent = noone;

View File

@ -0,0 +1,38 @@
///copyType(id)
/**
* copyType :: Type -> Type
*
* Returns a deep copy of the given type instance.
*
* @param id the type to copy
*/
assert(false, "deprecated");
var orig = argument0;
var copy = new(orig.object_index);
for (var trait = ds_set_first(orig.traits); ds_set_exists(orig.traits, trait); trait = ds_set_next(orig.traits, trait)) {
var newTrait = new(trait.object_index);
newTrait.parameter = trait.parameter;
ds_set_add(copy.traits, newTrait);
addChild(copy, newTrait);
}
if (instanceof(orig, ParametricType))
setParameter(copy, orig.parameter);
if (instanceof(orig, UnaryType)) {
copy.first = copyType(orig.first);
addChild(copy, copy.first);
}
if (instanceof(orig, BinaryType)) {
copy.first = copyType(orig.first);
copy.second = copyType(orig.second);
addChild(copy, copy.first);
addChild(copy, copy.second);
}
return copy;

View File

@ -0,0 +1,117 @@
#define freshTypes
///freshTypes(block)
/**
* freshTypes :: Block -> ()
*
* Refreshes the anchor types of this block.
*
* @param block the block to refresh
*/
var block = argument0;
assertInstanceof(block, Block);
with (block) {
for (var i = 0; i < ds_list_size(self.children); i++)
if (instanceof(self.children[|i], Anchor)) {
var anchor = self.children[|i];
if (!ds_list_empty(anchor.children))
delete(anchor.children[|0]);
}
var tmap = ds_map_create();
var vmap = ds_map_create();
for (var i = 0; i < ds_list_size(children); i++)
if (instanceof(self.children[|i], Anchor)) {
var anchor = self.children[|i];
if (anchor.currentType != noone) {
if (!instanceof(anchor.currentType, TypeCon1Link))
removeType(anchor.currentType);
anchor.currentType = noone;
}
anchor.currentType = copyFreshCon(tmap, vmap, anchor.freshType);
addChild(anchor, createTypeInstance(anchor.currentType.to[|0]));
}
ds_map_destroy(tmap);
ds_map_destroy(vmap);
}
#define copyFreshCon
///copyFreshCon(cmap, vmap, id)
/**
* copyFreshCon :: Map TypeConLink TypeConLink -> Map FreeType FreeType -> TypeConLink -> TypeConLink
*
* Returns a deep copy of the given type structure with fresh type variables.
*
* @param cmap a map of old cons to fresh ones
* @param vmap a map of old free types to fresh ones
* @param id the type to copy
*/
var cmap = argument0;
var vmap = argument1;
var con = argument2;
assertInstanceof(con, TypeConLink);
if (!ds_map_exists(cmap, con)) {
if (instanceof(con, TypeCon1Link)) {
if (instanceof(con.type, FreeType))
with (new(TypeCon1Link)) {
self.type = copyFreshType(vmap, con.type);
cmap[?con] = id;
}
else
return con;
}
else if (instanceof(con, TypeConLink))
with (new(TypeConLink)) {
for (var i = 0; i < ds_list_size(con.to); i++)
addLink(id, copyFreshCon(cmap, vmap, con.to[|i]));
cmap[?con] = id;
}
}
return cmap[?con];
#define copyFreshType
///copyFreshType(vmap, id)
/**
* copyFreshType :: Map FreeType FreeType -> Type -> Type
*
* Returns a copy of the given type with a fresh type variable (if applicable).
*
* @param vmap a map of old free types to fresh ones
* @param id the type to copy
*/
var vmap = argument0;
var type = argument1;
assertInstanceof(type, Type);
if (instanceof(type, ConcreteType))
return type;
if (instanceof(type, FreeType)) {
if (!ds_map_exists(vmap, type))
with (new(FreeType)) {
ds_set_add_all(self.traits, type.traits);
vmap[?type] = id;
}
return vmap[?type];
}
assert(false, "Unknown type "+getInstObjName(type));

View File

@ -0,0 +1,32 @@
///getRandomType(conset)
/**
* getRandomType :: Set TypeCon1Link -> TypeConLink
*
*/
var conset = argument0;
var con;
if (irandom_range(0, sqrt(ds_set_size(conset))) == 0) {
con = new(choose(TypeConLink, TypeCon1Link, TypeCon1Link, TypeCon1Link));
if (instanceof(con, TypeCon1Link)) {
con.type = new(choose(FreeType, ConcreteType));
ds_set_add(conset, con);
}
else {
if (random(1) < 0.50) {
addLink(con, function);
addLink(con, getRandomType(conset));
addLink(con, getRandomType(conset));
}
else
repeat (irandom_range(1, 3))
addLink(con, getRandomType(conset));
}
}
else
con = ds_set_choose(conset);
return con;

View File

@ -0,0 +1,31 @@
///removeType(con)
/**
* removeType :: TypeConLink -> ()
*
* Removes a type con and all orphaned children.
*
* @param con the type con to remove
*/
var con = argument0;
assertInstanceof(con, TypeConLink);
var visited = ds_set_create();
repeat (ds_list_size(con.to)) {
var to = con.to[|0];
removeLink(con, to);
if (ds_set_empty(to.from))
removeType(to);
}
repeat (ds_set_size(con.from)) {
removeLink(ds_set_first(con.from), con);
}
if (instanceof(con, TypeCon1Link))
delete(con.type);
delete(con);

View File

@ -0,0 +1,27 @@
///setParameter(type, param)
/**
* setParameter :: ParametricType -> Parameter -> ()
*
* Changes the parameter (name/link) of a parametrized type.
*
* @param type the type instance to change
* @param param the new parameter
*/
var type = argument0;
var param = argument1;
if (type.parameter == param)
exit;
with (type.parameter) {
ds_set_delete(self.types, type);
if (ds_set_empty(self.types))
delete(id);
}
with (param)
ds_set_add(self.types, type);
type.parameter = param;

View File

@ -0,0 +1,111 @@
#define testUnify
///testUnify(a, b)
/**
* testUnify :: TypeConLink -> TypeConLink -> Boolean
*
* Returns whether types `a` and `b` can be unified.
*
* @param a the first type con
* @param b the second type con
* @returns true if a and b can be unified, false otherwise
*/
var a = argument0;
var b = argument1;
assertInstanceof(a, TypeConLink);
assertInstanceof(b, TypeConLink);
//same instance can always be unified
if (a == b)
return true;
//test whether inhabited type can be unified
if (instanceof(a, TypeCon1Link) && instanceof(b, TypeCon1Link))
return testUnifyType(a.type, b.type);
//inhabited type can only be unified with type con if it is a free type
if (!instanceof(a, TypeCon1Link) && instanceof(b, TypeCon1Link))
return testUnify(b, a);
if (instanceof(a, TypeCon1Link) && !instanceof(b, TypeCon1Link)) {
if (instanceof(a.type, FreeType) && !containsType(a.type, b) && instanceof(b.to[|0], TypeCon1Link))
return testUnify(a, b.to[|0]);
else
return false;
}
//type cons can only be unified if they have the same arity and their inhabited types match
if (!instanceof(a, TypeCon1Link) && !instanceof(b, TypeCon1Link)) {
if (ds_list_size(a.to) != ds_list_size(b.to))
return false;
for (var i = 0; i < ds_list_size(a.to); i++)
if (!testUnify(a.to[|i], b.to[|i]))
return false;
return true;
}
#define testUnifyType
///testUnify(a, b)
/**
* testUnify :: Type -> Type -> Boolean
*
* Returns whether types `a` and `b` can be unified.
*
* @param a the first type
* @param b the second type
* @returns true if a and b can be unified, false otherwise
*/
var a = argument0;
var b = argument1;
assertInstanceof(a, Type);
assertInstanceof(b, Type);
//the same type can always be unified
if (a == b)
return true;
//two free variables can always be unified
if (instanceof(a, FreeType) && instanceof(b, FreeType))
return true;
//a type variable can be unified with a concrete type iff its traits are a subset of the concrete traits
if (instanceof(a, FreeType) && !instanceof(b, FreeType))
return ds_set_is_subset(a.traits, b.traits);
if (!instanceof(a, FreeType) && instanceof(b, FreeType))
return ds_set_is_subset(b.traits, a.traits);
//two different concrete types cannot be unified
return false;
#define containsType
///containsType(type, con)
/**
* containsType :: FreeType -> TypeConLink -> Boolean
*
* Returns whether a free type appears within a typecon.
*/
var type = argument0;
var con = argument1;
assertInstanceof(type, FreeType);
assertInstanceof(con, TypeConLink);
if (instanceof(con, TypeCon1Link))
return con.type == type;
else
for (var i = 0; i < ds_list_size(con.to); i++)
if (containsType(type, con.to[|i]))
return true;
return false;

85
scripts/typing/unify.gml Normal file
View File

@ -0,0 +1,85 @@
#define unify
///unify(a, b)
/**
* unify :: TypeConLink -> TypeConLink -> ()
*
* Unifies types `a` and `b`.
*
* @param a the first type con
* @param b the second type con
*/
var a = argument0;
var b = argument1;
assertInstanceof(a, TypeConLink);
assertInstanceof(b, TypeConLink);
if (instanceof(a, TypeCon1Link) && instanceof(b, TypeCon1Link))
unifyType(a, b);
else if (instanceof(a, TypeCon1Link) && !instanceof(b, TypeCon1Link))
unify(b, a);
else if (!instanceof(a, TypeCon1Link) && instanceof(b, TypeCon1Link)) {
while (!ds_set_empty(b.from))
replaceLink(ds_set_first(b.from), b, a);
delete(b.type);
delete(b);
exit;
}
else if (!instanceof(a, TypeCon1Link) && !instanceof(b, TypeCon1Link)) {
for (var i = 0; i < ds_list_size(a.to); i++)
unify(a.to[|i], b.to[|i]);
}
#define unifyType
///unifyType(a, b)
/**
* unifyType :: TypeConLink -> TypeConLink -> ()
*
* Unifies types `a` and `b`.
*
* @param a the first type con
* @param b the second type con
*/
var a = argument0;
var b = argument1;
assertInstanceof(a, TypeCon1Link);
assertInstanceof(b, TypeCon1Link);
assertInstanceof(a.type, Type);
assertInstanceof(b.type, Type);
if (a == b)
exit;
//unify free types by taking the union of their traits and destroying the second type
if (instanceof(a.type, FreeType) && instanceof(b.type, FreeType)) {
ds_set_add_all(a.type.traits, b.type.traits);
for (var trait = ds_set_first(b.type.traits); ds_set_exists(b.type.traits, trait); trait = ds_set_next(b.type.traits, trait))
ds_set_add(a.type.traits, trait);
while (!ds_set_empty(b.from))
replaceLink(ds_set_first(b.from), b, a);
delete(b.type);
delete(b);
exit;
}
//unify free type with concrete type by replacing all occurrences with the concrete type
if (instanceof(a.type, FreeType) && !instanceof(b.type, FreeType)) {
unify(b, a);
exit;
}
if (!instanceof(a.type, FreeType) && instanceof(b.type, FreeType)) {
while (!ds_set_empty(b.from))
replaceLink(ds_set_first(b.from), b, a);
delete(b.type);
delete(b);
exit;
}

View File

@ -0,0 +1,16 @@
///unifyAnchors(source, drain)
/**
* unifyAnchors :: OutputAnchor -> InputAnchor -> ()
*
* Unifies two anchors.
*
* @param source the output anchor to unify
* @param drain the input anchor to unify
*/
var source = argument0;
var drain = argument1;
unify(source.currentType.to[|0], drain.currentType.to[|0]);

BIN
sprites/images/pixel_0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Some files were not shown because too many files have changed in this diff Show More