Skip to content
Browse files

Added better support for mobile devices

- Added visual controls suitable for touchscreens.
- Changed level format to JSON for better portability.
This is to make it work with PGS4A (Pygame Subset for Android)
which doesn't bundle any XML module but does support json.
- Font path is now based on config.dataPath
- Added BACKSPACE as quit key and S as down key
- Added exit screen
  • Loading branch information...
1 parent 573deb1 commit 31126a33a43d0037559cde52e18eb3a725e9c53e @PVince81 committed
View
23 README
@@ -5,7 +5,28 @@ Node Reviver was developed by Vincent Petry <PVince81@yahoo.fr> for MiniLD #33.
Website: http://vincentpetry.net/games/nodereviver
GitHub: http://github.com/PVince81/nodereviver
-This game was written in Python and uses Pygame internally.
+This game was written in Python and uses Pygame.
+
+
+Requirements
+------------
+
+- Pygame
+- To run on Maemo (Nokia N900), requires python-simplejson
+
+
+Running
+-------
+
+To start the game, simply run
+
+./nodereviver.py
+
+
+If using a mobile device without keyboard, you can enable touch screen
+support and fullscreen mode by adding this:
+
+./nodereviver.py --controls --fullscreen
Game Rules
View
1,064 data/level0.json
@@ -0,0 +1,1064 @@
+{
+ "entities": [
+ {
+ "node": "79",
+ "type": "player"
+ }
+ ],
+ "nodes": [
+ {
+ "y": "120",
+ "x": "100",
+ "type": "node",
+ "id": 1
+ },
+ {
+ "y": "40",
+ "x": "100",
+ "type": "node",
+ "id": 2
+ },
+ {
+ "y": "40",
+ "x": "120",
+ "type": "joint",
+ "id": 3
+ },
+ {
+ "y": "60",
+ "x": "140",
+ "type": "joint",
+ "id": 4
+ },
+ {
+ "y": "60",
+ "x": "120",
+ "type": "joint",
+ "id": 5
+ },
+ {
+ "y": "100",
+ "x": "140",
+ "type": "joint",
+ "id": 6
+ },
+ {
+ "y": "100",
+ "x": "160",
+ "type": "joint",
+ "id": 7
+ },
+ {
+ "y": "120",
+ "x": "160",
+ "type": "joint",
+ "id": 8
+ },
+ {
+ "y": "120",
+ "x": "180",
+ "type": "node",
+ "id": 9
+ },
+ {
+ "y": "40",
+ "x": "180",
+ "type": "node",
+ "id": 10
+ },
+ {
+ "y": "40",
+ "x": "220",
+ "type": "node",
+ "id": 11
+ },
+ {
+ "y": "120",
+ "x": "220",
+ "type": "node",
+ "id": 12
+ },
+ {
+ "y": "120",
+ "x": "280",
+ "type": "node",
+ "id": 13
+ },
+ {
+ "y": "40",
+ "x": "280",
+ "type": "node",
+ "id": 14
+ },
+ {
+ "y": "40",
+ "x": "320",
+ "type": "node",
+ "id": 15
+ },
+ {
+ "y": "120",
+ "x": "320",
+ "type": "node",
+ "id": 16
+ },
+ {
+ "y": "40",
+ "x": "360",
+ "type": "joint",
+ "id": 17
+ },
+ {
+ "y": "60",
+ "x": "380",
+ "type": "node",
+ "id": 18
+ },
+ {
+ "y": "100",
+ "x": "380",
+ "type": "node",
+ "id": 19
+ },
+ {
+ "y": "120",
+ "x": "360",
+ "type": "node",
+ "id": 20
+ },
+ {
+ "y": "100",
+ "x": "360",
+ "type": "joint",
+ "id": 21
+ },
+ {
+ "y": "60",
+ "x": "360",
+ "type": "joint",
+ "id": 22
+ },
+ {
+ "y": "40",
+ "x": "420",
+ "type": "node",
+ "id": 23
+ },
+ {
+ "y": "120",
+ "x": "420",
+ "type": "node",
+ "id": 24
+ },
+ {
+ "y": "40",
+ "x": "460",
+ "type": "node",
+ "id": 25
+ },
+ {
+ "y": "120",
+ "x": "460",
+ "type": "node",
+ "id": 26
+ },
+ {
+ "y": "80",
+ "x": "420",
+ "type": "node",
+ "id": 27
+ },
+ {
+ "y": "80",
+ "x": "440",
+ "type": "node",
+ "id": 28
+ },
+ {
+ "y": "380",
+ "x": "600",
+ "type": "node",
+ "id": 29
+ },
+ {
+ "y": "360",
+ "x": "580",
+ "type": "joint",
+ "id": 30
+ },
+ {
+ "y": "380",
+ "x": "580",
+ "type": "joint",
+ "id": 31
+ },
+ {
+ "y": "380",
+ "x": "540",
+ "type": "node",
+ "id": 32
+ },
+ {
+ "y": "300",
+ "x": "540",
+ "type": "node",
+ "id": 33
+ },
+ {
+ "y": "300",
+ "x": "600",
+ "type": "node",
+ "id": 34
+ },
+ {
+ "y": "340",
+ "x": "600",
+ "type": "node",
+ "id": 35
+ },
+ {
+ "y": "340",
+ "x": "540",
+ "type": "node",
+ "id": 36
+ },
+ {
+ "y": "360",
+ "x": "560",
+ "type": "joint",
+ "id": 37
+ },
+ {
+ "y": "340",
+ "x": "560",
+ "type": "node",
+ "id": 38
+ },
+ {
+ "y": "300",
+ "x": "500",
+ "type": "node",
+ "id": 39
+ },
+ {
+ "y": "300",
+ "x": "460",
+ "type": "node",
+ "id": 40
+ },
+ {
+ "y": "340",
+ "x": "460",
+ "type": "node",
+ "id": 41
+ },
+ {
+ "y": "380",
+ "x": "460",
+ "type": "node",
+ "id": 42
+ },
+ {
+ "y": "380",
+ "x": "500",
+ "type": "node",
+ "id": 43
+ },
+ {
+ "y": "340",
+ "x": "480",
+ "type": "node",
+ "id": 44
+ },
+ {
+ "y": "300",
+ "x": "420",
+ "type": "node",
+ "id": 45
+ },
+ {
+ "y": "300",
+ "x": "140",
+ "type": "node",
+ "id": 46
+ },
+ {
+ "y": "380",
+ "x": "140",
+ "type": "node",
+ "id": 47
+ },
+ {
+ "y": "360",
+ "x": "420",
+ "type": "node",
+ "id": 48
+ },
+ {
+ "y": "380",
+ "x": "400",
+ "type": "node",
+ "id": 49
+ },
+ {
+ "y": "380",
+ "x": "380",
+ "type": "node",
+ "id": 50
+ },
+ {
+ "y": "360",
+ "x": "360",
+ "type": "node",
+ "id": 51
+ },
+ {
+ "y": "300",
+ "x": "360",
+ "type": "node",
+ "id": 52
+ },
+ {
+ "y": "360",
+ "x": "380",
+ "type": "joint",
+ "id": 53
+ },
+ {
+ "y": "360",
+ "x": "400",
+ "type": "joint",
+ "id": 54
+ },
+ {
+ "y": "300",
+ "x": "320",
+ "type": "node",
+ "id": 55
+ },
+ {
+ "y": "380",
+ "x": "320",
+ "type": "node",
+ "id": 56
+ },
+ {
+ "y": "300",
+ "x": "280",
+ "type": "node",
+ "id": 57
+ },
+ {
+ "y": "360",
+ "x": "280",
+ "type": "node",
+ "id": 58
+ },
+ {
+ "y": "380",
+ "x": "260",
+ "type": "node",
+ "id": 59
+ },
+ {
+ "y": "380",
+ "x": "240",
+ "type": "node",
+ "id": 60
+ },
+ {
+ "y": "360",
+ "x": "220",
+ "type": "node",
+ "id": 61
+ },
+ {
+ "y": "300",
+ "x": "220",
+ "type": "node",
+ "id": 62
+ },
+ {
+ "y": "360",
+ "x": "260",
+ "type": "joint",
+ "id": 63
+ },
+ {
+ "y": "360",
+ "x": "240",
+ "type": "joint",
+ "id": 64
+ },
+ {
+ "y": "300",
+ "x": "180",
+ "type": "node",
+ "id": 65
+ },
+ {
+ "y": "340",
+ "x": "140",
+ "type": "node",
+ "id": 66
+ },
+ {
+ "y": "340",
+ "x": "160",
+ "type": "node",
+ "id": 67
+ },
+ {
+ "y": "380",
+ "x": "180",
+ "type": "node",
+ "id": 68
+ },
+ {
+ "y": "300",
+ "x": "100",
+ "type": "node",
+ "id": 69
+ },
+ {
+ "y": "300",
+ "x": "40",
+ "type": "node",
+ "id": 70
+ },
+ {
+ "y": "380",
+ "x": "100",
+ "type": "node",
+ "id": 71
+ },
+ {
+ "y": "340",
+ "x": "100",
+ "type": "node",
+ "id": 72
+ },
+ {
+ "y": "340",
+ "x": "60",
+ "type": "node",
+ "id": 73
+ },
+ {
+ "y": "360",
+ "x": "60",
+ "type": "joint",
+ "id": 74
+ },
+ {
+ "y": "360",
+ "x": "80",
+ "type": "joint",
+ "id": 75
+ },
+ {
+ "y": "380",
+ "x": "80",
+ "type": "joint",
+ "id": 76
+ },
+ {
+ "y": "340",
+ "x": "40",
+ "type": "node",
+ "id": 77
+ },
+ {
+ "y": "380",
+ "x": "40",
+ "type": "node",
+ "id": 78
+ },
+ {
+ "y": "160",
+ "x": "40",
+ "type": "node",
+ "id": 79
+ },
+ {
+ "y": "160",
+ "x": "600",
+ "type": "node",
+ "id": 80
+ },
+ {
+ "y": "160",
+ "x": "100",
+ "type": "node",
+ "id": 81
+ },
+ {
+ "y": "120",
+ "x": "260",
+ "type": "node",
+ "id": 82
+ },
+ {
+ "y": "160",
+ "x": "260",
+ "type": "node",
+ "id": 83
+ },
+ {
+ "y": "160",
+ "x": "360",
+ "type": "node",
+ "id": 84
+ },
+ {
+ "y": "120",
+ "x": "440",
+ "type": "node",
+ "id": 85
+ },
+ {
+ "y": "160",
+ "x": "440",
+ "type": "node",
+ "id": 86
+ },
+ {
+ "y": "240",
+ "x": "600",
+ "type": "node",
+ "id": 87
+ },
+ {
+ "y": "240",
+ "x": "60",
+ "type": "node",
+ "id": 88
+ },
+ {
+ "y": "300",
+ "x": "60",
+ "type": "node",
+ "id": 89
+ },
+ {
+ "y": "240",
+ "x": "160",
+ "type": "node",
+ "id": 90
+ },
+ {
+ "y": "300",
+ "x": "160",
+ "type": "node",
+ "id": 91
+ },
+ {
+ "y": "240",
+ "x": "220",
+ "type": "node",
+ "id": 92
+ },
+ {
+ "y": "300",
+ "x": "300",
+ "type": "node",
+ "id": 93
+ },
+ {
+ "y": "380",
+ "x": "300",
+ "type": "node",
+ "id": 94
+ },
+ {
+ "y": "300",
+ "x": "340",
+ "type": "node",
+ "id": 95
+ },
+ {
+ "y": "380",
+ "x": "340",
+ "type": "node",
+ "id": 96
+ },
+ {
+ "y": "240",
+ "x": "320",
+ "type": "node",
+ "id": 97
+ },
+ {
+ "y": "240",
+ "x": "360",
+ "type": "node",
+ "id": 98
+ },
+ {
+ "y": "300",
+ "x": "480",
+ "type": "node",
+ "id": 99
+ },
+ {
+ "y": "240",
+ "x": "480",
+ "type": "node",
+ "id": 100
+ },
+ {
+ "y": "300",
+ "x": "560",
+ "type": "node",
+ "id": 101
+ },
+ {
+ "y": "240",
+ "x": "560",
+ "type": "node",
+ "id": 102
+ },
+ {
+ "y": "420",
+ "x": "600",
+ "type": "node",
+ "id": 103
+ },
+ {
+ "y": "420",
+ "x": "40",
+ "type": "node",
+ "id": 104
+ }
+ ],
+ "edges": [
+ {
+ "dest": "2",
+ "source": "1"
+ },
+ {
+ "dest": "3",
+ "source": "2"
+ },
+ {
+ "dest": "5",
+ "source": "3"
+ },
+ {
+ "dest": "4",
+ "source": "5"
+ },
+ {
+ "dest": "6",
+ "source": "4"
+ },
+ {
+ "dest": "7",
+ "source": "6"
+ },
+ {
+ "dest": "8",
+ "source": "7"
+ },
+ {
+ "dest": "9",
+ "source": "8"
+ },
+ {
+ "dest": "9",
+ "source": "10"
+ },
+ {
+ "dest": "12",
+ "source": "11"
+ },
+ {
+ "dest": "11",
+ "source": "14"
+ },
+ {
+ "dest": "13",
+ "source": "14"
+ },
+ {
+ "dest": "15",
+ "source": "16"
+ },
+ {
+ "dest": "15",
+ "source": "17"
+ },
+ {
+ "dest": "20",
+ "source": "16"
+ },
+ {
+ "dest": "21",
+ "source": "20"
+ },
+ {
+ "dest": "19",
+ "source": "21"
+ },
+ {
+ "dest": "22",
+ "source": "17"
+ },
+ {
+ "dest": "18",
+ "source": "22"
+ },
+ {
+ "dest": "19",
+ "source": "18"
+ },
+ {
+ "dest": "23",
+ "source": "25"
+ },
+ {
+ "dest": "23",
+ "source": "27"
+ },
+ {
+ "dest": "24",
+ "source": "27"
+ },
+ {
+ "dest": "27",
+ "source": "28"
+ },
+ {
+ "dest": "31",
+ "source": "30"
+ },
+ {
+ "dest": "29",
+ "source": "31"
+ },
+ {
+ "dest": "36",
+ "source": "33"
+ },
+ {
+ "dest": "35",
+ "source": "34"
+ },
+ {
+ "dest": "30",
+ "source": "37"
+ },
+ {
+ "dest": "38",
+ "source": "36"
+ },
+ {
+ "dest": "35",
+ "source": "38"
+ },
+ {
+ "dest": "38",
+ "source": "37"
+ },
+ {
+ "dest": "42",
+ "source": "43"
+ },
+ {
+ "dest": "41",
+ "source": "42"
+ },
+ {
+ "dest": "40",
+ "source": "41"
+ },
+ {
+ "dest": "41",
+ "source": "44"
+ },
+ {
+ "dest": "32",
+ "source": "36"
+ },
+ {
+ "dest": "51",
+ "source": "52"
+ },
+ {
+ "dest": "53",
+ "source": "50"
+ },
+ {
+ "dest": "51",
+ "source": "53"
+ },
+ {
+ "dest": "54",
+ "source": "49"
+ },
+ {
+ "dest": "48",
+ "source": "54"
+ },
+ {
+ "dest": "49",
+ "source": "50"
+ },
+ {
+ "dest": "48",
+ "source": "45"
+ },
+ {
+ "dest": "55",
+ "source": "56"
+ },
+ {
+ "dest": "58",
+ "source": "57"
+ },
+ {
+ "dest": "63",
+ "source": "59"
+ },
+ {
+ "dest": "58",
+ "source": "63"
+ },
+ {
+ "dest": "64",
+ "source": "60"
+ },
+ {
+ "dest": "61",
+ "source": "64"
+ },
+ {
+ "dest": "60",
+ "source": "59"
+ },
+ {
+ "dest": "62",
+ "source": "61"
+ },
+ {
+ "dest": "47",
+ "source": "68"
+ },
+ {
+ "dest": "66",
+ "source": "47"
+ },
+ {
+ "dest": "67",
+ "source": "66"
+ },
+ {
+ "dest": "46",
+ "source": "66"
+ },
+ {
+ "dest": "76",
+ "source": "71"
+ },
+ {
+ "dest": "75",
+ "source": "76"
+ },
+ {
+ "dest": "74",
+ "source": "75"
+ },
+ {
+ "dest": "73",
+ "source": "74"
+ },
+ {
+ "dest": "72",
+ "source": "73"
+ },
+ {
+ "dest": "69",
+ "source": "72"
+ },
+ {
+ "dest": "77",
+ "source": "78"
+ },
+ {
+ "dest": "70",
+ "source": "77"
+ },
+ {
+ "dest": "73",
+ "source": "77"
+ },
+ {
+ "dest": "1",
+ "source": "81"
+ },
+ {
+ "dest": "81",
+ "source": "79"
+ },
+ {
+ "dest": "82",
+ "source": "12"
+ },
+ {
+ "dest": "13",
+ "source": "82"
+ },
+ {
+ "dest": "83",
+ "source": "82"
+ },
+ {
+ "dest": "81",
+ "source": "83"
+ },
+ {
+ "dest": "84",
+ "source": "20"
+ },
+ {
+ "dest": "83",
+ "source": "84"
+ },
+ {
+ "dest": "24",
+ "source": "85"
+ },
+ {
+ "dest": "85",
+ "source": "26"
+ },
+ {
+ "dest": "86",
+ "source": "85"
+ },
+ {
+ "dest": "84",
+ "source": "86"
+ },
+ {
+ "dest": "80",
+ "source": "86"
+ },
+ {
+ "dest": "87",
+ "source": "80"
+ },
+ {
+ "dest": "88",
+ "source": "89"
+ },
+ {
+ "dest": "89",
+ "source": "70"
+ },
+ {
+ "dest": "69",
+ "source": "89"
+ },
+ {
+ "dest": "90",
+ "source": "91"
+ },
+ {
+ "dest": "91",
+ "source": "46"
+ },
+ {
+ "dest": "65",
+ "source": "91"
+ },
+ {
+ "dest": "90",
+ "source": "88"
+ },
+ {
+ "dest": "92",
+ "source": "90"
+ },
+ {
+ "dest": "62",
+ "source": "92"
+ },
+ {
+ "dest": "56",
+ "source": "94"
+ },
+ {
+ "dest": "96",
+ "source": "56"
+ },
+ {
+ "dest": "55",
+ "source": "93"
+ },
+ {
+ "dest": "95",
+ "source": "55"
+ },
+ {
+ "dest": "55",
+ "source": "97"
+ },
+ {
+ "dest": "97",
+ "source": "92"
+ },
+ {
+ "dest": "52",
+ "source": "98"
+ },
+ {
+ "dest": "98",
+ "source": "97"
+ },
+ {
+ "dest": "99",
+ "source": "39"
+ },
+ {
+ "dest": "40",
+ "source": "99"
+ },
+ {
+ "dest": "100",
+ "source": "98"
+ },
+ {
+ "dest": "99",
+ "source": "100"
+ },
+ {
+ "dest": "101",
+ "source": "33"
+ },
+ {
+ "dest": "34",
+ "source": "101"
+ },
+ {
+ "dest": "102",
+ "source": "100"
+ },
+ {
+ "dest": "87",
+ "source": "102"
+ },
+ {
+ "dest": "101",
+ "source": "102"
+ },
+ {
+ "dest": "103",
+ "source": "29"
+ },
+ {
+ "dest": "104",
+ "source": "103"
+ }
+ ]
+}
View
220 data/level0.xml
@@ -1,220 +0,0 @@
-<level>
- <nodes>
- <node id="1" x="100" y="120" />
- <node id="2" x="100" y="40" />
- <joint id="3" x="120" y="40" />
- <joint id="4" x="140" y="60" />
- <joint id="5" x="120" y="60" />
- <joint id="6" x="140" y="100" />
- <joint id="7" x="160" y="100" />
- <joint id="8" x="160" y="120" />
- <node id="9" x="180" y="120" />
- <node id="10" x="180" y="40" />
- <node id="11" x="220" y="40" />
- <node id="12" x="220" y="120" />
- <node id="13" x="280" y="120" />
- <node id="14" x="280" y="40" />
- <node id="15" x="320" y="40" />
- <node id="16" x="320" y="120" />
- <joint id="17" x="360" y="40" />
- <node id="18" x="380" y="60" />
- <node id="19" x="380" y="100" />
- <node id="20" x="360" y="120" />
- <joint id="21" x="360" y="100" />
- <joint id="22" x="360" y="60" />
- <node id="23" x="420" y="40" />
- <node id="24" x="420" y="120" />
- <node id="25" x="460" y="40" />
- <node id="26" x="460" y="120" />
- <node id="27" x="420" y="80" />
- <node id="28" x="440" y="80" />
- <node id="29" x="600" y="380" />
- <joint id="30" x="580" y="360" />
- <joint id="31" x="580" y="380" />
- <node id="32" x="540" y="380" />
- <node id="33" x="540" y="300" />
- <node id="34" x="600" y="300" />
- <node id="35" x="600" y="340" />
- <node id="36" x="540" y="340" />
- <joint id="37" x="560" y="360" />
- <node id="38" x="560" y="340" />
- <node id="39" x="500" y="300" />
- <node id="40" x="460" y="300" />
- <node id="41" x="460" y="340" />
- <node id="42" x="460" y="380" />
- <node id="43" x="500" y="380" />
- <node id="44" x="480" y="340" />
- <node id="45" x="420" y="300" />
- <node id="46" x="140" y="300" />
- <node id="47" x="140" y="380" />
- <node id="48" x="420" y="360" />
- <node id="49" x="400" y="380" />
- <node id="50" x="380" y="380" />
- <node id="51" x="360" y="360" />
- <node id="52" x="360" y="300" />
- <joint id="53" x="380" y="360" />
- <joint id="54" x="400" y="360" />
- <node id="55" x="320" y="300" />
- <node id="56" x="320" y="380" />
- <node id="57" x="280" y="300" />
- <node id="58" x="280" y="360" />
- <node id="59" x="260" y="380" />
- <node id="60" x="240" y="380" />
- <node id="61" x="220" y="360" />
- <node id="62" x="220" y="300" />
- <joint id="63" x="260" y="360" />
- <joint id="64" x="240" y="360" />
- <node id="65" x="180" y="300" />
- <node id="66" x="140" y="340" />
- <node id="67" x="160" y="340" />
- <node id="68" x="180" y="380" />
- <node id="69" x="100" y="300" />
- <node id="70" x="40" y="300" />
- <node id="71" x="100" y="380" />
- <node id="72" x="100" y="340" />
- <node id="73" x="60" y="340" />
- <joint id="74" x="60" y="360" />
- <joint id="75" x="80" y="360" />
- <joint id="76" x="80" y="380" />
- <node id="77" x="40" y="340" />
- <node id="78" x="40" y="380" />
- <node id="79" x="40" y="160" />
- <node id="80" x="600" y="160" />
- <node id="81" x="100" y="160" />
- <node id="82" x="260" y="120" />
- <node id="83" x="260" y="160" />
- <node id="84" x="360" y="160" />
- <node id="85" x="440" y="120" />
- <node id="86" x="440" y="160" />
- <node id="87" x="600" y="240" />
- <node id="88" x="60" y="240" />
- <node id="89" x="60" y="300" />
- <node id="90" x="160" y="240" />
- <node id="91" x="160" y="300" />
- <node id="92" x="220" y="240" />
- <node id="93" x="300" y="300" />
- <node id="94" x="300" y="380" />
- <node id="95" x="340" y="300" />
- <node id="96" x="340" y="380" />
- <node id="97" x="320" y="240" />
- <node id="98" x="360" y="240" />
- <node id="99" x="480" y="300" />
- <node id="100" x="480" y="240" />
- <node id="101" x="560" y="300" />
- <node id="102" x="560" y="240" />
- <node id="103" x="600" y="420" />
- <node id="104" x="40" y="420" />
- </nodes>
- <edges>
- <edge dest="2" source="1" />
- <edge dest="3" source="2" />
- <edge dest="5" source="3" />
- <edge dest="4" source="5" />
- <edge dest="6" source="4" />
- <edge dest="7" source="6" />
- <edge dest="8" source="7" />
- <edge dest="9" source="8" />
- <edge dest="9" source="10" />
- <edge dest="12" source="11" />
- <edge dest="11" source="14" />
- <edge dest="13" source="14" />
- <edge dest="15" source="16" />
- <edge dest="15" source="17" />
- <edge dest="20" source="16" />
- <edge dest="21" source="20" />
- <edge dest="19" source="21" />
- <edge dest="22" source="17" />
- <edge dest="18" source="22" />
- <edge dest="19" source="18" />
- <edge dest="23" source="25" />
- <edge dest="23" source="27" />
- <edge dest="24" source="27" />
- <edge dest="27" source="28" />
- <edge dest="31" source="30" />
- <edge dest="29" source="31" />
- <edge dest="36" source="33" />
- <edge dest="35" source="34" />
- <edge dest="30" source="37" />
- <edge dest="38" source="36" />
- <edge dest="35" source="38" />
- <edge dest="38" source="37" />
- <edge dest="42" source="43" />
- <edge dest="41" source="42" />
- <edge dest="40" source="41" />
- <edge dest="41" source="44" />
- <edge dest="32" source="36" />
- <edge dest="51" source="52" />
- <edge dest="53" source="50" />
- <edge dest="51" source="53" />
- <edge dest="54" source="49" />
- <edge dest="48" source="54" />
- <edge dest="49" source="50" />
- <edge dest="48" source="45" />
- <edge dest="55" source="56" />
- <edge dest="58" source="57" />
- <edge dest="63" source="59" />
- <edge dest="58" source="63" />
- <edge dest="64" source="60" />
- <edge dest="61" source="64" />
- <edge dest="60" source="59" />
- <edge dest="62" source="61" />
- <edge dest="47" source="68" />
- <edge dest="66" source="47" />
- <edge dest="67" source="66" />
- <edge dest="46" source="66" />
- <edge dest="76" source="71" />
- <edge dest="75" source="76" />
- <edge dest="74" source="75" />
- <edge dest="73" source="74" />
- <edge dest="72" source="73" />
- <edge dest="69" source="72" />
- <edge dest="77" source="78" />
- <edge dest="70" source="77" />
- <edge dest="73" source="77" />
- <edge dest="1" source="81" />
- <edge dest="81" source="79" />
- <edge dest="82" source="12" />
- <edge dest="13" source="82" />
- <edge dest="83" source="82" />
- <edge dest="81" source="83" />
- <edge dest="84" source="20" />
- <edge dest="83" source="84" />
- <edge dest="24" source="85" />
- <edge dest="85" source="26" />
- <edge dest="86" source="85" />
- <edge dest="84" source="86" />
- <edge dest="80" source="86" />
- <edge dest="87" source="80" />
- <edge dest="88" source="89" />
- <edge dest="89" source="70" />
- <edge dest="69" source="89" />
- <edge dest="90" source="91" />
- <edge dest="91" source="46" />
- <edge dest="65" source="91" />
- <edge dest="90" source="88" />
- <edge dest="92" source="90" />
- <edge dest="62" source="92" />
- <edge dest="56" source="94" />
- <edge dest="96" source="56" />
- <edge dest="55" source="93" />
- <edge dest="95" source="55" />
- <edge dest="55" source="97" />
- <edge dest="97" source="92" />
- <edge dest="52" source="98" />
- <edge dest="98" source="97" />
- <edge dest="99" source="39" />
- <edge dest="40" source="99" />
- <edge dest="100" source="98" />
- <edge dest="99" source="100" />
- <edge dest="101" source="33" />
- <edge dest="34" source="101" />
- <edge dest="102" source="100" />
- <edge dest="87" source="102" />
- <edge dest="101" source="102" />
- <edge dest="103" source="29" />
- <edge dest="104" source="103" />
- </edges>
- <entities>
- <player node="79" />
- </entities>
-</level>
View
89 data/level1.json
@@ -0,0 +1,89 @@
+{
+ "subtitle": "Use the arrow keys or WASD to move from node to node.\\nYou can only change direction when standing on a node.\\n\\nFixing the coffee machine is your first and most important task...\\nI mean... Yeah, just fix it...",
+ "title": "The Coffee Machine has been hacked",
+ "endtext": "Productivity restored !",
+ "entities": [
+ {
+ "node": "1",
+ "type": "player"
+ }
+ ],
+ "edges": [
+ {
+ "dest": "4",
+ "source": "1"
+ },
+ {
+ "dest": "2",
+ "source": "4"
+ },
+ {
+ "dest": "5",
+ "source": "1"
+ },
+ {
+ "dest": "2",
+ "source": "5"
+ },
+ {
+ "dest": "6",
+ "source": "2"
+ },
+ {
+ "dest": "3",
+ "source": "6"
+ },
+ {
+ "dest": "7",
+ "source": "1"
+ },
+ {
+ "dest": "3",
+ "source": "7"
+ }
+ ],
+ "nodes": [
+ {
+ "y": "40",
+ "x": "40",
+ "type": "node",
+ "id": 1
+ },
+ {
+ "y": "20",
+ "x": "80",
+ "type": "node",
+ "id": 2
+ },
+ {
+ "y": "100",
+ "x": "120",
+ "type": "node",
+ "id": 3
+ },
+ {
+ "y": "20",
+ "x": "40",
+ "type": "joint",
+ "id": 4
+ },
+ {
+ "y": "40",
+ "x": "80",
+ "type": "joint",
+ "id": 5
+ },
+ {
+ "y": "20",
+ "x": "120",
+ "type": "joint",
+ "id": 6
+ },
+ {
+ "y": "100",
+ "x": "40",
+ "type": "joint",
+ "id": 7
+ }
+ ]
+}
View
19 data/level1.xml
@@ -1,19 +0,0 @@
-<level>
- <title>The Coffee Machine has been hacked</title>
- <subtitle>Use the arrow keys to move from node to node.\nYou can only change direction when standing on a node.\n\nFixing the coffee machine is your first and most important task...\nI mean... Yeah, just fix it...</subtitle>
- <endtext>Productivity restored !</endtext>
- <nodes>
- <node id="1" x="40" y="40" />
- <node id="2" x="80" y="20" />
- <node id="3" x="120" y="100" />
- </nodes>
- <edges>
- <edge source="1" dest="2" />
- <edge source="1" dest="2" reverse="true"/>
- <edge source="2" dest="3" reverse="true" />
- <edge source="1" dest="3" />
- </edges>
- <entities>
- <player node="1"/>
- </entities>
-</level>
View
366 data/level10.json
@@ -0,0 +1,366 @@
+{
+ "subtitle": "Can't work when it's too cold...",
+ "title": "The Central Heating System has been hacked",
+ "endtext": "Turn it down ! Too hot now...",
+ "entities": [
+ {
+ "node": "1",
+ "type": "player"
+ },
+ {
+ "node": "16",
+ "type": "foe",
+ "foeType": "simple"
+ }
+ ],
+ "edges": [
+ {
+ "dest": "1",
+ "source": "6",
+ "oneway": true
+ },
+ {
+ "dest": "5",
+ "source": "6",
+ "oneway": true
+ },
+ {
+ "dest": "5",
+ "source": "2",
+ "oneway": true
+ },
+ {
+ "dest": "1",
+ "source": "2",
+ "oneway": true
+ },
+ {
+ "dest": "4",
+ "source": "3",
+ "oneway": true
+ },
+ {
+ "dest": "6",
+ "source": "4",
+ "oneway": true
+ },
+ {
+ "dest": "2",
+ "source": "8",
+ "oneway": true
+ },
+ {
+ "dest": "7",
+ "source": "8",
+ "oneway": true
+ },
+ {
+ "dest": "3",
+ "source": "9",
+ "oneway": true
+ },
+ {
+ "dest": "9",
+ "source": "7",
+ "oneway": true
+ },
+ {
+ "dest": "1",
+ "source": "3",
+ "oneway": true
+ },
+ {
+ "dest": "7",
+ "source": "1",
+ "oneway": true
+ },
+ {
+ "dest": "7",
+ "source": "10",
+ "oneway": true
+ },
+ {
+ "dest": "8",
+ "source": "11",
+ "oneway": true
+ },
+ {
+ "dest": "13",
+ "source": "14",
+ "oneway": true
+ },
+ {
+ "dest": "13",
+ "source": "12",
+ "oneway": true
+ },
+ {
+ "dest": "12",
+ "source": "8",
+ "oneway": true
+ },
+ {
+ "dest": "14",
+ "source": "5",
+ "oneway": true
+ },
+ {
+ "dest": "2",
+ "source": "13",
+ "oneway": true
+ },
+ {
+ "dest": "11",
+ "source": "15",
+ "oneway": true
+ },
+ {
+ "dest": "12",
+ "source": "15"
+ },
+ {
+ "dest": "11",
+ "source": "10",
+ "oneway": true
+ },
+ {
+ "dest": "10",
+ "source": "16",
+ "oneway": true
+ },
+ {
+ "dest": "16",
+ "source": "9",
+ "oneway": true
+ },
+ {
+ "dest": "19",
+ "source": "14"
+ },
+ {
+ "dest": "20",
+ "source": "19",
+ "oneway": true
+ },
+ {
+ "dest": "20",
+ "source": "18",
+ "oneway": true
+ },
+ {
+ "dest": "18",
+ "source": "17",
+ "oneway": true
+ },
+ {
+ "dest": "17",
+ "source": "4",
+ "oneway": true
+ },
+ {
+ "dest": "18",
+ "source": "6",
+ "oneway": true
+ },
+ {
+ "dest": "5",
+ "source": "20",
+ "oneway": true
+ },
+ {
+ "dest": "22",
+ "source": "16"
+ },
+ {
+ "dest": "21",
+ "source": "22",
+ "oneway": true
+ },
+ {
+ "dest": "21",
+ "source": "23",
+ "oneway": true
+ },
+ {
+ "dest": "24",
+ "source": "23",
+ "oneway": true
+ },
+ {
+ "dest": "25",
+ "source": "24"
+ },
+ {
+ "dest": "17",
+ "source": "25",
+ "oneway": true
+ },
+ {
+ "dest": "4",
+ "source": "24",
+ "oneway": true
+ },
+ {
+ "dest": "23",
+ "source": "3",
+ "oneway": true
+ },
+ {
+ "dest": "9",
+ "source": "21",
+ "oneway": true
+ }
+ ],
+ "nodes": [
+ {
+ "y": "240",
+ "x": "320",
+ "type": "node",
+ "id": 1
+ },
+ {
+ "y": "180",
+ "x": "320",
+ "type": "node",
+ "id": 2
+ },
+ {
+ "y": "300",
+ "x": "320",
+ "type": "node",
+ "id": 3
+ },
+ {
+ "y": "300",
+ "x": "380",
+ "type": "node",
+ "id": 4
+ },
+ {
+ "y": "180",
+ "x": "380",
+ "type": "node",
+ "id": 5
+ },
+ {
+ "y": "240",
+ "x": "380",
+ "type": "node",
+ "id": 6
+ },
+ {
+ "y": "240",
+ "x": "260",
+ "type": "node",
+ "id": 7
+ },
+ {
+ "y": "180",
+ "x": "260",
+ "type": "node",
+ "id": 8
+ },
+ {
+ "y": "300",
+ "x": "260",
+ "type": "node",
+ "id": 9
+ },
+ {
+ "y": "240",
+ "x": "220",
+ "type": "node",
+ "id": 10
+ },
+ {
+ "y": "180",
+ "x": "220",
+ "type": "node",
+ "id": 11
+ },
+ {
+ "y": "140",
+ "x": "260",
+ "type": "node",
+ "id": 12
+ },
+ {
+ "y": "140",
+ "x": "320",
+ "type": "node",
+ "id": 13
+ },
+ {
+ "y": "140",
+ "x": "380",
+ "type": "node",
+ "id": 14
+ },
+ {
+ "y": "140",
+ "x": "220",
+ "type": "joint",
+ "id": 15
+ },
+ {
+ "y": "300",
+ "x": "220",
+ "type": "node",
+ "id": 16
+ },
+ {
+ "y": "300",
+ "x": "420",
+ "type": "node",
+ "id": 17
+ },
+ {
+ "y": "240",
+ "x": "420",
+ "type": "node",
+ "id": 18
+ },
+ {
+ "y": "140",
+ "x": "420",
+ "type": "joint",
+ "id": 19
+ },
+ {
+ "y": "180",
+ "x": "420",
+ "type": "node",
+ "id": 20
+ },
+ {
+ "y": "340",
+ "x": "260",
+ "type": "node",
+ "id": 21
+ },
+ {
+ "y": "340",
+ "x": "220",
+ "type": "joint",
+ "id": 22
+ },
+ {
+ "y": "340",
+ "x": "320",
+ "type": "node",
+ "id": 23
+ },
+ {
+ "y": "340",
+ "x": "380",
+ "type": "node",
+ "id": 24
+ },
+ {
+ "y": "340",
+ "x": "420",
+ "type": "joint",
+ "id": 25
+ }
+ ]
+}
View
78 data/level10.xml
@@ -1,78 +0,0 @@
-<level>
- <title>The Central Heating System has been hacked</title>
- <subtitle>Can't work when it's too cold...</subtitle>
- <endtext>Turn it down ! Too hot now...</endtext>
- <nodes>
- <node id="1" x="320" y="240" />
- <node id="2" x="320" y="180" />
- <node id="3" x="320" y="300" />
- <node id="4" x="380" y="300" />
- <node id="5" x="380" y="180" />
- <node id="6" x="380" y="240" />
- <node id="7" x="260" y="240" />
- <node id="8" x="260" y="180" />
- <node id="9" x="260" y="300" />
- <node id="10" x="220" y="240" />
- <node id="11" x="220" y="180" />
- <node id="12" x="260" y="140" />
- <node id="13" x="320" y="140" />
- <node id="14" x="380" y="140" />
- <joint id="15" x="220" y="140" />
- <node id="16" x="220" y="300" />
- <node id="17" x="420" y="300" />
- <node id="18" x="420" y="240" />
- <joint id="19" x="420" y="140" />
- <node id="20" x="420" y="180" />
- <node id="21" x="260" y="340" />
- <joint id="22" x="220" y="340" />
- <node id="23" x="320" y="340" />
- <node id="24" x="380" y="340" />
- <joint id="25" x="420" y="340" />
- </nodes>
- <edges>
- <edge dest="1" oneway="true" source="6" />
- <edge dest="5" oneway="true" source="6" />
- <edge dest="5" oneway="true" source="2" />
- <edge dest="1" oneway="true" source="2" />
- <edge dest="4" oneway="true" source="3" />
- <edge dest="6" oneway="true" source="4" />
- <edge dest="2" oneway="true" source="8" />
- <edge dest="7" oneway="true" source="8" />
- <edge dest="3" oneway="true" source="9" />
- <edge dest="9" oneway="true" source="7" />
- <edge dest="1" oneway="true" source="3" />
- <edge dest="7" oneway="true" source="1" />
- <edge dest="7" oneway="true" source="10" />
- <edge dest="8" oneway="true" source="11" />
- <edge dest="13" oneway="true" source="14" />
- <edge dest="13" oneway="true" source="12" />
- <edge dest="12" oneway="true" source="8" />
- <edge dest="14" oneway="true" source="5" />
- <edge dest="2" oneway="true" source="13" />
- <edge dest="11" oneway="true" source="15" />
- <edge dest="12" source="15" />
- <edge dest="11" oneway="true" source="10" />
- <edge dest="10" oneway="true" source="16" />
- <edge dest="16" oneway="true" source="9" />
- <edge dest="19" source="14" />
- <edge dest="20" oneway="true" source="19" />
- <edge dest="20" oneway="true" source="18" />
- <edge dest="18" oneway="true" source="17" />
- <edge dest="17" oneway="true" source="4" />
- <edge dest="18" oneway="true" source="6" />
- <edge dest="5" oneway="true" source="20" />
- <edge dest="22" source="16" />
- <edge dest="21" oneway="true" source="22" />
- <edge dest="21" oneway="true" source="23" />
- <edge dest="24" oneway="true" source="23" />
- <edge dest="25" source="24" />
- <edge dest="17" oneway="true" source="25" />
- <edge dest="4" oneway="true" source="24" />
- <edge dest="23" oneway="true" source="3" />
- <edge dest="9" oneway="true" source="21" />
- </edges>
- <entities>
- <player node="1" />
- <foe node="16" type="simple" />
- </entities>
-</level>
View
575 data/level11.json
@@ -0,0 +1,575 @@
+{
+ "subtitle": "Ah ! I knew we should fix that one in the first place...",
+ "title": "The Computer has been hacked",
+ "endtext": "Yay, more gam... I mean I'll finish this task !",
+ "entities": [
+ {
+ "node": "25",
+ "type": "player"
+ },
+ {
+ "node": "32",
+ "type": "foe",
+ "foeType": "tracking"
+ },
+ {
+ "node": "35",
+ "type": "foe",
+ "foeType": "tracking"
+ }
+ ],
+ "edges": [
+ {
+ "dest": "2",
+ "source": "1"
+ },
+ {
+ "dest": "3",
+ "source": "2"
+ },
+ {
+ "dest": "4",
+ "source": "3"
+ },
+ {
+ "dest": "5",
+ "source": "4"
+ },
+ {
+ "dest": "6",
+ "source": "5"
+ },
+ {
+ "dest": "7",
+ "source": "6"
+ },
+ {
+ "dest": "8",
+ "source": "7"
+ },
+ {
+ "dest": "9",
+ "source": "8"
+ },
+ {
+ "dest": "11",
+ "source": "6"
+ },
+ {
+ "dest": "10",
+ "source": "11"
+ },
+ {
+ "dest": "3",
+ "source": "10"
+ },
+ {
+ "dest": "13",
+ "source": "9"
+ },
+ {
+ "dest": "12",
+ "source": "13"
+ },
+ {
+ "dest": "7",
+ "source": "12"
+ },
+ {
+ "dest": "2",
+ "source": "14"
+ },
+ {
+ "dest": "15",
+ "source": "14"
+ },
+ {
+ "dest": "16",
+ "source": "15"
+ },
+ {
+ "dest": "1",
+ "source": "16"
+ },
+ {
+ "dest": "18",
+ "source": "16"
+ },
+ {
+ "dest": "17",
+ "source": "18"
+ },
+ {
+ "dest": "20",
+ "source": "15"
+ },
+ {
+ "dest": "19",
+ "source": "20"
+ },
+ {
+ "dest": "22",
+ "source": "13"
+ },
+ {
+ "dest": "21",
+ "source": "22"
+ },
+ {
+ "dest": "24",
+ "source": "9"
+ },
+ {
+ "dest": "23",
+ "source": "24"
+ },
+ {
+ "dest": "3",
+ "source": "25"
+ },
+ {
+ "dest": "6",
+ "source": "25"
+ },
+ {
+ "dest": "21",
+ "source": "26"
+ },
+ {
+ "dest": "19",
+ "source": "27"
+ },
+ {
+ "dest": "17",
+ "source": "28"
+ },
+ {
+ "dest