diff --git a/sonic-bluestreak.love/assets/backgrounds/borders.lua b/sonic-bluestreak.love/assets/backgrounds/borders.lua
new file mode 100644
index 0000000..7ec8cf0
--- /dev/null
+++ b/sonic-bluestreak.love/assets/backgrounds/borders.lua
@@ -0,0 +1,8 @@
+return {
+ metadata = {
+ width = 80,
+ height = 10,
+ ox = 0,
+ oy = 0,
+ }
+}
diff --git a/sonic-bluestreak.love/assets/backgrounds/sideview/borders.png b/sonic-bluestreak.love/assets/backgrounds/borders.png
similarity index 100%
rename from sonic-bluestreak.love/assets/backgrounds/sideview/borders.png
rename to sonic-bluestreak.love/assets/backgrounds/borders.png
diff --git a/sonic-bluestreak.love/assets/backgrounds/normaltile.lua b/sonic-bluestreak.love/assets/backgrounds/normaltile.lua
new file mode 100644
index 0000000..5d0744d
--- /dev/null
+++ b/sonic-bluestreak.love/assets/backgrounds/normaltile.lua
@@ -0,0 +1,8 @@
+return {
+ metadata = {
+ width = 40,
+ height = 24,
+ ox = 0,
+ oy = 4,
+ }
+}
diff --git a/sonic-bluestreak.love/assets/backgrounds/sideview/normaltile.png b/sonic-bluestreak.love/assets/backgrounds/normaltile.png
similarity index 100%
rename from sonic-bluestreak.love/assets/backgrounds/sideview/normaltile.png
rename to sonic-bluestreak.love/assets/backgrounds/normaltile.png
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-back.png
new file mode 100644
index 0000000..f5687bb
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-cliff.png
new file mode 100644
index 0000000..2b49430
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-fore.png
new file mode 100644
index 0000000..2a99f16
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/bridge-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/castle-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/castle-back.png
new file mode 100644
index 0000000..682e385
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/castle-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/castle-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/castle-cliff.png
new file mode 100644
index 0000000..e8afe0c
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/castle-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/castle-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/castle-fore.png
new file mode 100644
index 0000000..42f1460
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/castle-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/city-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/city-back.png
new file mode 100644
index 0000000..7d5039c
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/city-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/city-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/city-cliff.png
new file mode 100644
index 0000000..774382d
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/city-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/city-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/city-fore.png
new file mode 100644
index 0000000..466273e
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/city-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/forest-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/forest-back.png
new file mode 100644
index 0000000..8166549
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/forest-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/forest-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/forest-cliff.png
new file mode 100644
index 0000000..1697737
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/forest-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/forest-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/forest-fore.png
new file mode 100644
index 0000000..ab78f68
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/forest-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/hills-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/hills-back.png
new file mode 100644
index 0000000..9fd9409
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/hills-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/hills-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/hills-cliff.png
new file mode 100644
index 0000000..d109738
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/hills-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/hills-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/hills-fore.png
new file mode 100644
index 0000000..6353414
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/hills-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-back.png
new file mode 100644
index 0000000..6ebf9ef
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-cliff.png
new file mode 100644
index 0000000..aadb562
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-fore.png
new file mode 100644
index 0000000..04a680b
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/mountain-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/test-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/test-back.png
new file mode 100644
index 0000000..e0a401b
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/test-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-back.png b/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-back.png
new file mode 100644
index 0000000..7112a52
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-back.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-cliff.png b/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-cliff.png
new file mode 100644
index 0000000..9217fe3
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-cliff.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-fore.png b/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-fore.png
new file mode 100644
index 0000000..2c6dc83
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/parallax/tunnel-fore.png differ
diff --git a/sonic-bluestreak.love/assets/backgrounds/sideview/rails/basic.png b/sonic-bluestreak.love/assets/backgrounds/rails/basic.png
similarity index 100%
rename from sonic-bluestreak.love/assets/backgrounds/sideview/rails/basic.png
rename to sonic-bluestreak.love/assets/backgrounds/rails/basic.png
diff --git a/sonic-bluestreak.love/assets/backgrounds/specialtile.lua b/sonic-bluestreak.love/assets/backgrounds/specialtile.lua
new file mode 100644
index 0000000..8d37c6e
--- /dev/null
+++ b/sonic-bluestreak.love/assets/backgrounds/specialtile.lua
@@ -0,0 +1,8 @@
+return {
+ metadata = {
+ width = 40,
+ height = 26,
+ ox = 0,
+ oy = 6,
+ }
+}
diff --git a/sonic-bluestreak.love/assets/backgrounds/sideview/specialtile.png b/sonic-bluestreak.love/assets/backgrounds/specialtile.png
similarity index 100%
rename from sonic-bluestreak.love/assets/backgrounds/sideview/specialtile.png
rename to sonic-bluestreak.love/assets/backgrounds/specialtile.png
diff --git a/sonic-bluestreak.love/assets/backgrounds/tilemask.png b/sonic-bluestreak.love/assets/backgrounds/tilemask.png
new file mode 100644
index 0000000..c74d044
Binary files /dev/null and b/sonic-bluestreak.love/assets/backgrounds/tilemask.png differ
diff --git a/sonic-bluestreak.love/assets/gui/status/emblem_power.png b/sonic-bluestreak.love/assets/gui/status/emblem_power.png
new file mode 100644
index 0000000..d955b73
Binary files /dev/null and b/sonic-bluestreak.love/assets/gui/status/emblem_power.png differ
diff --git a/sonic-bluestreak.love/assets/gui/status/emblem_speedster.png b/sonic-bluestreak.love/assets/gui/status/emblem_speedster.png
new file mode 100644
index 0000000..a054b8a
Binary files /dev/null and b/sonic-bluestreak.love/assets/gui/status/emblem_speedster.png differ
diff --git a/sonic-bluestreak.love/assets/gui/status/emblem_technic.png b/sonic-bluestreak.love/assets/gui/status/emblem_technic.png
new file mode 100644
index 0000000..82b530f
Binary files /dev/null and b/sonic-bluestreak.love/assets/gui/status/emblem_technic.png differ
diff --git a/sonic-bluestreak.love/assets/gui/status/status_bar.png b/sonic-bluestreak.love/assets/gui/status/status_bar.png
new file mode 100644
index 0000000..a305874
Binary files /dev/null and b/sonic-bluestreak.love/assets/gui/status/status_bar.png differ
diff --git a/sonic-bluestreak.love/assets/gui/status/status_bar.xcf b/sonic-bluestreak.love/assets/gui/status/status_bar.xcf
new file mode 100644
index 0000000..977c58d
Binary files /dev/null and b/sonic-bluestreak.love/assets/gui/status/status_bar.xcf differ
diff --git a/sonic-bluestreak.love/assets/sprites/characters/sonic.lua b/sonic-bluestreak.love/assets/sprites/characters/sonic.lua
new file mode 100644
index 0000000..b847e83
--- /dev/null
+++ b/sonic-bluestreak.love/assets/sprites/characters/sonic.lua
@@ -0,0 +1,116 @@
+return {
+ metadata = {
+ height = 64,
+ width = 64,
+ ox = 32,
+ oy = 32,
+ defaultAnim = "idle"
+ },
+ animations = {
+ ["idle"] = {
+ startAt = 1,
+ endAt = 6,
+ loop = 1,
+ speed = 12,
+ pauseAtEnd = false,
+ },
+ ["walk"] = {
+ startAt = 7,
+ endAt = 14,
+ loop = 7,
+ speed = -1,
+ pauseAtEnd = false,
+ },
+ ["jump"] = {
+ startAt = 15,
+ endAt = 18,
+ loop = 18,
+ speed = 10,
+ pauseAtEnd = true,
+ },
+ ["fall"] = {
+ startAt = 19,
+ endAt = 21,
+ loop = 21,
+ speed = 10,
+ pauseAtEnd = true,
+ },
+ ["hit1start"] = {
+ startAt = 22,
+ endAt = 24,
+ loop = 24,
+ speed = 25,
+ pauseAtEnd = true,
+ },
+ ["hit1end"] = {
+ startAt = 24,
+ endAt = 26,
+ loop = 26,
+ speed = 25,
+ pauseAtEnd = true,
+ },
+ ["hit2start"] = {
+ startAt = 28,
+ endAt = 30,
+ loop = 30,
+ speed = 25,
+ pauseAtEnd = true,
+ },
+ ["hit2end"] = {
+ startAt = 30,
+ endAt = 32,
+ loop = 32,
+ speed = 25,
+ pauseAtEnd = true,
+ },
+ ["hit3start"] = {
+ startAt = 33,
+ endAt = 35,
+ loop = 35,
+ speed = 25,
+ pauseAtEnd = true,
+ },
+ ["hit3end"] = {
+ startAt = 36,
+ endAt = 36,
+ loop = 36,
+ speed = 25,
+ pauseAtEnd = true,
+ },
+ ["spindash"] = {
+ startAt = 37,
+ endAt = 40,
+ loop = 37,
+ speed = 25,
+ pauseAtEnd = false,
+ },
+ ["spindash_full"] = {
+ startAt = 41,
+ endAt = 44,
+ loop = 41,
+ speed = 25,
+ pauseAtEnd = false,
+ },
+ ["spin"] = {
+ startAt = 45,
+ endAt = 48,
+ loop = 45,
+ speed = 25,
+ pauseAtEnd = false,
+ },
+ ["spinjump"] = {
+ startAt = 49,
+ endAt = 54,
+ loop = 51,
+ speed = 25,
+ pauseAtEnd = false,
+ },
+ ["spinjump_nucurl"] = {
+ startAt = 51,
+ endAt = 54,
+ loop = 51,
+ speed = 25,
+ pauseAtEnd = false,
+ },
+ }
+}
diff --git a/sonic-bluestreak.love/assets/sprites/characters/sonic.png b/sonic-bluestreak.love/assets/sprites/characters/sonic.png
new file mode 100644
index 0000000..9135f4e
Binary files /dev/null and b/sonic-bluestreak.love/assets/sprites/characters/sonic.png differ
diff --git a/sonic-bluestreak.love/assets/sprites/characters/subgame/sonic-boost/sonic.lua b/sonic-bluestreak.love/assets/sprites/characters/sonic_old.lua
similarity index 100%
rename from sonic-bluestreak.love/assets/sprites/characters/subgame/sonic-boost/sonic.lua
rename to sonic-bluestreak.love/assets/sprites/characters/sonic_old.lua
diff --git a/sonic-bluestreak.love/assets/sprites/characters/subgame/sonic-boost/sonic.png b/sonic-bluestreak.love/assets/sprites/characters/sonic_old.png
similarity index 100%
rename from sonic-bluestreak.love/assets/sprites/characters/subgame/sonic-boost/sonic.png
rename to sonic-bluestreak.love/assets/sprites/characters/sonic_old.png
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/back1.png
new file mode 100644
index 0000000..b47a72c
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/back2.png
new file mode 100644
index 0000000..8bb9bbb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/background.png
new file mode 100644
index 0000000..b6efa48
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/init.lua
new file mode 100644
index 0000000..b3e6f78
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/init.lua
@@ -0,0 +1,17 @@
+return {
+ name = "Amy's Room",
+ blocks = {
+ {48+128*0, 32, 32, 32, "top", "side1"},
+ {48+128*0, 128, 32, 32, "top", "side1"},
+ {48+128*1, 32, 32, 32, "top", "side1"},
+ {48+128*1, 128, 32, 32, "top", "side1"},
+ {48+128*2, 32, 32, 32, "top", "side1"},
+ {48+128*2, 128, 32, 32, "top", "side1"},
+ {112+128*0, 80, 32, 32, "top", "side2"},
+ {112+128*1, 80, 32, 32, "top", "side2"},
+ },
+ parallax = {
+ {0, 0, .5, 0, true, false, "back2"},
+ {0, -96, 1, 1, true, false, "back1"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/side1.png
new file mode 100644
index 0000000..86c8aae
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/side2.png
new file mode 100644
index 0000000..ddee726
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/top.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/top.png
new file mode 100644
index 0000000..26e062b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/aroom/top.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back1.png
new file mode 100644
index 0000000..f5687bb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back2.png
new file mode 100644
index 0000000..2a99f16
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back3.png
new file mode 100644
index 0000000..44bf11c
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/back3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/background.png
new file mode 100644
index 0000000..229dae9
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/init.lua
new file mode 100644
index 0000000..40b4603
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/init.lua
@@ -0,0 +1,18 @@
+return {
+ name = "Battle Highway",
+ blocks = {
+ { 0, 64, 32, 32, "top1", "side1a"},
+ {160, 0, 32, 32, "top1", "side1b"},
+ {224, 160, 32, 32, "top1", "side1a"},
+ { 64, 224, 32, 32, "top1", "side1a"},
+ {160, 32, 08, 64, "top2", "side2"},
+ { 88, 160, 08, 64, "top2", "side2"},
+ { 32, 88, 64, 08, "top3", "side3"},
+ {160, 160, 64, 08, "top3", "side3"},
+ },
+ parallax = {
+ {0, 0, .5, 0, true, false, "back1"},
+ {0, -28, 1, 1, true, false, "back2"},
+ {0, 86, 1, 1, true, false, "back3"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side1a.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side1a.png
new file mode 100644
index 0000000..886ab7d
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side1a.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side1b.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side1b.png
new file mode 100644
index 0000000..e1d9bfd
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side1b.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side2.png
new file mode 100644
index 0000000..4932053
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side3.png
new file mode 100644
index 0000000..775e04b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/side3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top1.png
new file mode 100644
index 0000000..2916093
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top2.png
new file mode 100644
index 0000000..a0035b9
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top3.png
new file mode 100644
index 0000000..aa56f93
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/bhighway/top3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back1.png
new file mode 100644
index 0000000..044bd91
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back2.png
new file mode 100644
index 0000000..de4c6c0
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back3.png
new file mode 100644
index 0000000..9b141af
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/back3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/background.png
new file mode 100644
index 0000000..f6df49f
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/init.lua
new file mode 100644
index 0000000..f485ed8
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/init.lua
@@ -0,0 +1,14 @@
+return {
+ name = "Chao Ruins",
+ blocks = {
+ { 56, 128, 16, 96, "top1", "side1"},
+ {248, 128, 16, 96, "top1", "side1"},
+ {112, 72-16, 96, 16, "top2", "side2"},
+ {112, 264-16, 96, 16, "top2", "side2"},
+ },
+ parallax = {
+ {0, 0, .4, 0, true, false, "back1"},
+ {0, 79, 1, 1, true, false, "back2"},
+ {0, -28, 1, 1, true, false, "back3"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/side1.png
new file mode 100644
index 0000000..ad0aac3
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/side2.png
new file mode 100644
index 0000000..5bb5651
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/top1.png
new file mode 100644
index 0000000..b6dc8ce
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/top2.png
new file mode 100644
index 0000000..ca1ad6d
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/crouge/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back1.png
new file mode 100644
index 0000000..afc44af
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back2.png
new file mode 100644
index 0000000..b47ef3b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back3.png
new file mode 100644
index 0000000..5bff153
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/back3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/background.png
new file mode 100644
index 0000000..006673b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/init.lua
new file mode 100644
index 0000000..909c703
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/init.lua
@@ -0,0 +1,17 @@
+return {
+ name = "Chao Ruins",
+ blocks = {
+ { 0, 0, 32, 32, "top1", "side1"},
+ {224, 226, 32, 32, "top1", "side1"},
+ {128, 32, 32, 64, "top2", "side1"},
+ { 96, 160, 32, 64, "top2", "side1"},
+ { 0, 96, 64, 32, "top3", "side2"},
+ {192, 128, 64, 32, "top3", "side2"},
+ },
+ parallax = {
+ {0, 0, .5, 0, true, false, "back1"},
+ {0, 80, 1, 1, true, false, "back2"},
+ {0, -16, 1, 1, true, false, "back3"},
+ --{256*4, -16, 1, 1, false, false, "back3"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/side1.png
new file mode 100644
index 0000000..6b7351b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/side2.png
new file mode 100644
index 0000000..42c4730
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top1.png
new file mode 100644
index 0000000..b983ac9
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top2.png
new file mode 100644
index 0000000..8ae9f19
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top3.png
new file mode 100644
index 0000000..f2160f1
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/cruins/top3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/back1.png
new file mode 100644
index 0000000..da44d1c
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/back2.png
new file mode 100644
index 0000000..1cb948f
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/background.png
new file mode 100644
index 0000000..543e83c
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/init.lua
new file mode 100644
index 0000000..9c32698
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/init.lua
@@ -0,0 +1,15 @@
+return {
+ name = "Emerald Beach",
+ blocks = {
+ {80, 64, 64, 32, "top1", "side2"},
+ {96, 96, 32, 32, "top3", "side1"},
+ {192, 32, 96, 32, "top2", "side3"},
+ {224, 128, 32, 64, "top4", "side1"},
+ {96, 176, 32, 64, "top4", "side1"},
+ {192, 240, 64, 32, "top5", "side2"},
+ },
+ parallax = {
+ {0, 0, .5, 0, true, false, "back1"},
+ {0, 10, 1, 1, true, false, "back2"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side1.png
new file mode 100644
index 0000000..8a9c95b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side2.png
new file mode 100644
index 0000000..229f6a7
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side3.png
new file mode 100644
index 0000000..e5af338
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/side3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top1.png
new file mode 100644
index 0000000..e9b196d
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top2.png
new file mode 100644
index 0000000..4787d66
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top3.png
new file mode 100644
index 0000000..5704eaa
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top4.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top4.png
new file mode 100644
index 0000000..b3955ff
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top4.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top5.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top5.png
new file mode 100644
index 0000000..41c59eb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ebeach/top5.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/back1.png
new file mode 100644
index 0000000..219125d
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/back2.png
new file mode 100644
index 0000000..422f188
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/background.png
new file mode 100644
index 0000000..ceb0bbd
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/init.lua
new file mode 100644
index 0000000..6b8a0fb
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/init.lua
@@ -0,0 +1,15 @@
+return {
+ name = "Green Hill Zone",
+ blocks = {
+ { 0, 0, 64, 32, "top1", "side2"},
+ {448, 96, 64, 32, "top1", "side2"},
+ { 96, 64, 32, 64, "top2", "side1"},
+ {384, 0, 32, 64, "top2", "side1"},
+ {384, 0, 32, 64, "top2", "side1"},
+ {208, 32, 96, 64, "top3", "side3"},
+ },
+ parallax = {
+ {0, -48, .5, 0, true, false, "back1"},
+ {0, 80, 1, 1, true, false, "back2"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side1.png
new file mode 100644
index 0000000..888b1c1
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side2.png
new file mode 100644
index 0000000..e728310
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side3.png
new file mode 100644
index 0000000..7da3088
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/side3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top1.png
new file mode 100644
index 0000000..5d21f2d
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top2.png
new file mode 100644
index 0000000..2d78903
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top3.png
new file mode 100644
index 0000000..9234a63
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/ghill/top3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/back1.png
new file mode 100644
index 0000000..6ebf9ef
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/back2.png
new file mode 100644
index 0000000..04a680b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/background.png
new file mode 100644
index 0000000..595ca66
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/init.lua
new file mode 100644
index 0000000..b63f56f
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/init.lua
@@ -0,0 +1,16 @@
+return {
+ name = "Holy Summit",
+ blocks = {
+ { 0, 240, 288, 48, "top1", "side1"},
+ { 0, 176, 176, 64, "top2", "noside"},
+ {240, 176, 48, 64, "top3", "noside"},
+ { 0, 144, 288, 32, "top4", "side1"},
+ { 0, 48, 48, 96, "top5", "noside"},
+ {144, 48, 144, 96, "top6", "noside"},
+ { 0, 0, 288, 48, "top7", "side1"},
+ },
+ parallax = {
+ {0, -48, .5, 0, true, false, "back1"},
+ {0, -12, 1, 1, true, false, "back2"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/noside.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/noside.png
new file mode 100644
index 0000000..08adebe
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/noside.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/side1.png
new file mode 100644
index 0000000..4b35e45
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/side2.png
new file mode 100644
index 0000000..c5b0ae9
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top1.png
new file mode 100644
index 0000000..917a3a7
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top2.png
new file mode 100644
index 0000000..29f0071
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top3.png
new file mode 100644
index 0000000..1681af4
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top4.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top4.png
new file mode 100644
index 0000000..2ff0efb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top4.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top5.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top5.png
new file mode 100644
index 0000000..0fc1e41
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top5.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top6.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top6.png
new file mode 100644
index 0000000..ca9a0c3
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top6.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top7.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top7.png
new file mode 100644
index 0000000..03c6b8b
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/hsummit/top7.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/library/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/back1.png
new file mode 100644
index 0000000..3838326
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/library/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/background.png
new file mode 100644
index 0000000..60c2deb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/library/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/init.lua
new file mode 100644
index 0000000..3d24263
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/init.lua
@@ -0,0 +1,12 @@
+return {
+ name = "Library",
+ blocks = {
+ { 16, 32, 32, 32, "top", "side1"},
+ { 16, 128, 32, 32, "top", "side2"},
+ {176, 32, 32, 32, "top", "side2"},
+ {176, 128, 32, 32, "top", "side1"},
+ },
+ parallax = {
+ {0, -48, 1, 1, true, true, "back1"}
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/library/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/side1.png
new file mode 100644
index 0000000..59cff67
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/library/side2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/side2.png
new file mode 100644
index 0000000..aa24632
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/side2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/library/top.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/top.png
new file mode 100644
index 0000000..60e5f88
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/library/top.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back1.png
new file mode 100644
index 0000000..2541c90
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back2.png
new file mode 100644
index 0000000..a7333ba
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back3.png
new file mode 100644
index 0000000..3da0446
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/back3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/background.png
new file mode 100644
index 0000000..d5f231a
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/init.lua
new file mode 100644
index 0000000..32fdf3b
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/init.lua
@@ -0,0 +1,15 @@
+return {
+ name = "Metal Depot",
+ blocks = {
+ { 48, 0, 32, 96, "top1", "side"},
+ {144, 32, 32, 64, "top2", "side"},
+ {240, 32, 32, 96, "top1", "side"},
+ {336, 32, 32, 64, "top2", "side"},
+ {432, 0, 32, 96, "top1", "side"},
+ },
+ parallax = {
+ {0, 0, .50, 0, true, false, "back1"},
+ {0, 15, .75, .50, true, false, "back2"},
+ {0, 64, .90, .90, true, false, "back3"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/side.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/side.png
new file mode 100644
index 0000000..c92c8fa
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/side.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/top1.png
new file mode 100644
index 0000000..40182ed
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/top2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/top2.png
new file mode 100644
index 0000000..f3a0101
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/mdepot/top2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/back1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/back1.png
new file mode 100644
index 0000000..7d5039c
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/back1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/back2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/back2.png
new file mode 100644
index 0000000..97d99b8
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/back2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/background.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/background.png
new file mode 100644
index 0000000..0dbffed
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/background.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate1.png
new file mode 100644
index 0000000..b94074d
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate2.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate2.png
new file mode 100644
index 0000000..3aaab87
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate2.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate3.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate3.png
new file mode 100644
index 0000000..9a255fb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/crate3.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/init.lua b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/init.lua
new file mode 100644
index 0000000..e53fd71
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/init.lua
@@ -0,0 +1,11 @@
+return {
+ name = "Tails Lab",
+ blocks = {
+ { 26, 24, 64, 32, "top1", "side1"},
+ {122, 150, 64, 32, "top1", "side1"},
+ },
+ parallax = {
+ {0, 0, .50, 0, true, false, "back1"},
+ {0, -32, 1, 1, true, false, "back2"},
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/side1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/side1.png
new file mode 100644
index 0000000..527fbc3
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/side1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/top1.png b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/top1.png
new file mode 100644
index 0000000..0b84ba2
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/battle/tlab/top1.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/shoot/zones.lua b/sonic-bluestreak.love/datas/gamedata/maps/shoot/zones.lua
new file mode 100644
index 0000000..75e10b0
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/shoot/zones.lua
@@ -0,0 +1,46 @@
+return {
+ ["forest"] = {
+ name = "Jade Forest",
+ borders = 0,
+ tiles = 0,
+ background = "forest"
+ },
+ ["city"] ={
+ name = "Diamond Highway",
+ borders = 1,
+ tiles = 1,
+ background = "city"
+ },
+ ["tunnel"] ={
+ name = "Peridot Tunnel",
+ borders = 2,
+ tiles = 2,
+ background = "tunnel",
+ music = nil
+ },
+ ["mountain"] ={
+ name = "Pearl Mountain",
+ borders = 3,
+ tiles = 3,
+ background = "mountain"
+ },
+ ["hills"] ={
+ name = "Calcite Hills",
+ borders = 4,
+ tiles = 4,
+ background = "hills"
+ },
+ ["bridge"] ={
+ name = "Carnelian Bridge",
+ borders = 5,
+ tiles = 5,
+ background = "bridge"
+ },
+ ["castle"] ={
+ name = "Ametist Castle",
+ borders = 6,
+ tiles = 6,
+ background = "castle",
+ music = nil
+ },
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/sti/test/arena.tmx b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/arena.tmx
new file mode 100644
index 0000000..29dee38
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/arena.tmx
@@ -0,0 +1,108 @@
+
+
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/sti/test/map.lua b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/map.lua
new file mode 100644
index 0000000..f7ac116
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/map.lua
@@ -0,0 +1,380 @@
+return {
+ version = "1.2",
+ luaversion = "5.1",
+ tiledversion = "1.2.2",
+ orientation = "orthogonal",
+ renderorder = "right-down",
+ width = 30,
+ height = 30,
+ tilewidth = 16,
+ tileheight = 16,
+ nextlayerid = 5,
+ nextobjectid = 18,
+ properties = {},
+ tilesets = {
+ {
+ name = "overworld",
+ firstgid = 1,
+ filename = "overworld.tsx",
+ tilewidth = 16,
+ tileheight = 16,
+ spacing = 0,
+ margin = 0,
+ columns = 32,
+ image = "overworld.png",
+ imagewidth = 512,
+ imageheight = 240,
+ tileoffset = {
+ x = 0,
+ y = 0
+ },
+ grid = {
+ orientation = "orthogonal",
+ width = 16,
+ height = 16
+ },
+ properties = {},
+ terrains = {},
+ tilecount = 480,
+ tiles = {}
+ }
+ },
+ layers = {
+ {
+ type = "tilelayer",
+ id = 1,
+ name = "Calque de Tile 1",
+ x = 0,
+ y = 0,
+ width = 30,
+ height = 30,
+ visible = true,
+ opacity = 1,
+ offsetx = 0,
+ offsety = 0,
+ properties = {},
+ encoding = "lua",
+ data = {
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 399, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, 400, 3,
+ 3, 339, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 402, 337, 3,
+ 3, 339, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 434, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 339, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 337, 3,
+ 3, 431, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 432, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
+ }
+ },
+ {
+ type = "tilelayer",
+ id = 2,
+ name = "Rochers",
+ x = 0,
+ y = 0,
+ width = 30,
+ height = 30,
+ visible = true,
+ opacity = 1,
+ offsetx = 0,
+ offsety = 0,
+ properties = {},
+ encoding = "lua",
+ data = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 85, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ }
+ },
+ {
+ type = "objectgroup",
+ id = 3,
+ name = "player",
+ visible = true,
+ opacity = 1,
+ offsetx = 0,
+ offsety = 0,
+ draworder = "topdown",
+ properties = {},
+ objects = {
+ {
+ id = 1,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 48,
+ y = 80,
+ width = 16,
+ height = 16,
+ rotation = 0,
+ visible = true,
+ properties = {
+ ["id"] = 1
+ }
+ },
+ {
+ id = 2,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 416,
+ y = 80,
+ width = 16,
+ height = 16,
+ rotation = 0,
+ visible = true,
+ properties = {
+ ["id"] = 1
+ }
+ },
+ {
+ id = 3,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 48,
+ y = 416,
+ width = 16,
+ height = 16,
+ rotation = 0,
+ visible = true,
+ properties = {
+ ["id"] = 3
+ }
+ },
+ {
+ id = 4,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 416,
+ y = 416,
+ width = 16,
+ height = 16,
+ rotation = 0,
+ visible = true,
+ properties = {
+ ["id"] = 4
+ }
+ }
+ }
+ },
+ {
+ type = "objectgroup",
+ id = 4,
+ name = "wall",
+ visible = true,
+ opacity = 1,
+ offsetx = 0,
+ offsety = 0,
+ draworder = "topdown",
+ properties = {},
+ objects = {
+ {
+ id = 5,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 0,
+ y = 0,
+ width = 480,
+ height = 64,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 6,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 448,
+ y = 64,
+ width = 32,
+ height = 416,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 7,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 32,
+ y = 448,
+ width = 416,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 8,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 0,
+ y = 64,
+ width = 32,
+ height = 416,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 9,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 112,
+ y = 128,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 10,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 272,
+ y = 128,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 12,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 368,
+ y = 112,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 13,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 192,
+ y = 224,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 14,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 352,
+ y = 272,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 15,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 256,
+ y = 368,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 16,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 128,
+ y = 384,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ },
+ {
+ id = 17,
+ name = "",
+ type = "",
+ shape = "rectangle",
+ x = 80,
+ y = 288,
+ width = 32,
+ height = 32,
+ rotation = 0,
+ visible = true,
+ properties = {}
+ }
+ }
+ }
+ }
+}
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/sti/test/overworld.png b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/overworld.png
new file mode 100644
index 0000000..7823efb
Binary files /dev/null and b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/overworld.png differ
diff --git a/sonic-bluestreak.love/datas/gamedata/maps/sti/test/overworld.tsx b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/overworld.tsx
new file mode 100644
index 0000000..9b3f454
--- /dev/null
+++ b/sonic-bluestreak.love/datas/gamedata/maps/sti/test/overworld.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/sonic-bluestreak.love/game/modules/world/actors/floor.lua b/sonic-bluestreak.love/game/modules/world/actors/floor.lua
new file mode 100644
index 0000000..12cc5ce
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/floor.lua
@@ -0,0 +1,14 @@
+local Base = require "core.modules.world.actors.actor3D"
+local Floor = Base:extend()
+
+function Floor:new(world, x, y, z, w, h, d)
+ Floor.super.new(self, world, "wall", x, y, z, w, h, d, true)
+ self:setDebugColor(0,0,0)
+ self.boxes.Base(self, w, h, d, false)
+end
+
+function Floor:update(dt)
+
+end
+
+return Floor
diff --git a/sonic-bluestreak.love/game/modules/world/actors/init.lua b/sonic-bluestreak.love/game/modules/world/actors/init.lua
new file mode 100644
index 0000000..5e8e7c0
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/init.lua
@@ -0,0 +1,16 @@
+local Obj = {}
+
+-- On charge toutes les différentes types d'acteurs
+local cwd = (...):gsub('%.init$', '') .. "."
+Obj.Player = require(cwd .. "player")
+
+Obj.index = {}
+Obj.index["player"] = Obj.Player
+
+Obj.collisions = {}
+Obj.collisions["wall"] = require(cwd .. "wall")
+Obj.collisions["invisible"] = require(cwd .. "invisible")
+Obj.collisions["floor"] = require(cwd .. "floor")
+Obj.collisions["textured"] = require(cwd .. "textured")
+
+return Obj
diff --git a/sonic-bluestreak.love/game/modules/world/actors/invisible.lua b/sonic-bluestreak.love/game/modules/world/actors/invisible.lua
new file mode 100644
index 0000000..82fee54
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/invisible.lua
@@ -0,0 +1,13 @@
+local Base = require "core.modules.world.actors.actor3D"
+local Invisible = Base:extend()
+
+function Invisible:new(world, x, y, z, w, h, d)
+ Invisible.super.new(self, world, "wall", x, y, z, w, h, d, true)
+ self:setDebugColor(0,0,0)
+end
+
+function Invisible:update(dt)
+
+end
+
+return Invisible
diff --git a/sonic-bluestreak.love/game/modules/world/actors/parent.lua b/sonic-bluestreak.love/game/modules/world/actors/parent.lua
new file mode 100644
index 0000000..05c9e09
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/parent.lua
@@ -0,0 +1,18 @@
+local Base = require "core.modules.world.actors.actor3D"
+local Parent = Base:extend()
+
+function Parent:new(world, type, x, y, z, w, h, d, isSolid)
+ self.scene = world.scene
+ Parent.super.new(self, world, type, x, y, z, w, h, d, isSolid)
+end
+
+function Parent:draw()
+ Parent.super.draw(self)
+ --self:drawMainHitbox()
+end
+
+function Parent:drawShadow(x, y)
+ self.assets.images["shadow"]:draw(x-4, y+4)
+end
+
+return Parent
diff --git a/sonic-bluestreak.love/game/modules/world/actors/player.lua b/sonic-bluestreak.love/game/modules/world/actors/player.lua
new file mode 100644
index 0000000..fd8e2c0
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/player.lua
@@ -0,0 +1,99 @@
+local cwd = (...):gsub('%.player$', '') .. "."
+local Parent = require(cwd .. "parent")
+local Player = Parent:extend()
+
+function Player:new(world, x, y, z, id)
+ Player.super.new(self, world, "player", x, y, 0, 16, 12, 24, true)
+ self:setGravity(480*2)
+
+ self:setSprite("sonic", 8, 10)
+ self:cloneSprite()
+
+ self.guiborder = game.gui.newBorder(424, 20, 6)
+ self.emblem = love.graphics.newImage("assets/gui/status/emblem_speedster.png")
+ self.status = love.graphics.newImage("assets/gui/status/status_bar.png")
+
+ self.action = "normal"
+end
+
+function Player:updateStart(dt)
+ self.xfrc, self.yfrc = 480*3, 480*3
+
+ if self.keys["up"].isDown then
+ self.ysp = -160
+ end
+ if self.keys["down"].isDown then
+ self.ysp = 160
+ end
+ if self.keys["left"].isDown then
+ self.xsp = -160
+ end
+ if self.keys["right"].isDown then
+ self.xsp = 160
+ end
+
+ if self.keys["A"].isDown and (self.onGround) then
+ self.zsp = 280*1.33
+ end
+
+ if self.keys["B"].isPressed and (self.onGround) then
+ -- Nothing for the moment
+ end
+end
+
+function Player:animationEnded(name)
+
+end
+
+function Player:updateEnd(dt)
+ self:setAnimation()
+end
+
+function Player:setAnimation()
+ local gsp = utils.math.pointDistance(0, 0, self.xsp, self.ysp)
+ self:setCustomSpeed(math.abs(gsp) / 12)
+ self:setDirection(self.xsp)
+ if (self.action == "punching") then
+ --the animation system is already active
+ else
+ if (self.onGround) then
+ if (math.abs(self.xsp) > 0) or (math.abs(self.ysp) > 0) then
+ self:changeAnimation("walk", false)
+ else
+ self:changeAnimation("idle", false)
+ end
+ else
+ if (self.zsp) > 0 then
+ self:changeAnimation("jump", false)
+ else
+ self:changeAnimation("fall", false)
+ end
+ end
+ end
+end
+
+function Player:setDirection(direction)
+ direction = direction or 0
+ if direction ~= 0 then
+ direction = utils.math.sign(direction)
+ self.direction = direction
+ self:setSpriteScallingX(direction)
+ end
+end
+
+function Player:getViewCenter()
+ local x, y = Player.super.getViewCenter(self)
+ return x, y-16
+end
+
+function Player:draw()
+ Player.super.draw(self)
+end
+
+function Player:drawHUD(id)
+ love.graphics.draw(self.guiborder, 424, 20, 0, -1, -1)
+ love.graphics.draw(self.emblem, 8, 8, 0)
+ love.graphics.draw(self.status, 24, 16, 0)
+end
+
+return Player
diff --git a/sonic-bluestreak.love/game/modules/world/actors/textured.lua b/sonic-bluestreak.love/game/modules/world/actors/textured.lua
new file mode 100644
index 0000000..000bc4e
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/textured.lua
@@ -0,0 +1,14 @@
+local Base = require "core.modules.world.actors.actor3D"
+local Textured = Base:extend()
+
+function Textured:new(world, x, y, z, w, h, d, top, bottom)
+ Textured.super.new(self, world, "wall", x, y, z, w, h, d, true)
+ self:setDebugColor(0,0,0)
+ self.boxes.Textured(self, w, h, d, top, bottom)
+end
+
+function Textured:update(dt)
+
+end
+
+return Textured
diff --git a/sonic-bluestreak.love/game/modules/world/actors/wall.lua b/sonic-bluestreak.love/game/modules/world/actors/wall.lua
new file mode 100644
index 0000000..c1aba12
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/actors/wall.lua
@@ -0,0 +1,14 @@
+local Base = require "core.modules.world.actors.actor3D"
+local Wall = Base:extend()
+
+function Wall:new(world, x, y, z, w, h, d)
+ Wall.super.new(self, world, "wall", x, y, z, w, h, d, true)
+ self:setDebugColor(0,0,0)
+ self.boxes.Base(self, w, h, d)
+end
+
+function Wall:update(dt)
+
+end
+
+return Wall
diff --git a/sonic-bluestreak.love/game/modules/world/init.lua b/sonic-bluestreak.love/game/modules/world/init.lua
new file mode 100644
index 0000000..2a87ef8
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/init.lua
@@ -0,0 +1,65 @@
+local World3D = require "core.modules.world.world3D"
+local RadianceWorld = World3D:extend()
+
+local customMap = require "game.modules.world.maps"
+
+function RadianceWorld:new(scene, maptype, mapname)
+ local mappath = game.utils.getMapPath(maptype, mapname)
+ RadianceWorld.super.new(self, scene, "game.modules.world.actors", mappath, maptype)
+
+ self.mapname = mapname
+end
+
+function RadianceWorld:createMapController()
+ if (self.maptype == "test") then
+ customMap.Test(self)
+ elseif (self.maptype == "battle") then
+ customMap.Battle(self, self.maptype, self.mapname)
+ elseif (self.maptype == "shoot") then
+ customMap.Shoot(self, self.maptype, self.mapname)
+ self.cameras:lockY(4)
+ else
+ RadianceWorld.super.createMapController(self)
+ end
+end
+
+function RadianceWorld:loadMapObjects()
+ RadianceWorld.super.loadMapObjects(self)
+ self:addInvisibleWalls()
+end
+
+function RadianceWorld:addInvisibleWalls()
+ local w, h = self:getDimensions()
+ print(w, h)
+ self.obj.collisions["invisible"](self, 0, -16, 0, w, 16, 1000)
+ self.obj.collisions["invisible"](self, 0, h, 0, w, 16, 1000)
+ self.obj.collisions["invisible"](self, w, 0, 0, 16, h, 1000)
+ self.obj.collisions["invisible"](self, -16, 0, 0, 16, h, 1000)
+end
+
+function RadianceWorld:draw(dt)
+ self:drawBackgroundColor()
+ local camNumber = self.cameras:getViewNumber()
+
+ if (camNumber == 0) then
+ self:drawMap()
+ self:drawActors()
+ else
+ for i=1, camNumber do
+ self:drawParallax(i)
+ self.cameras:attachView(i)
+ self:drawMap(i)
+ self:drawActors(i)
+ self.cameras:detachView(i)
+ end
+ end
+end
+
+function RadianceWorld:drawParallax(i)
+ local x, y, w, h = self.cameras:getViewCoordinate(i)
+ if (self.map ~= nil) and (self.maptype ~= "sti") then
+ self.map:drawParallax(x, y, w, h)
+ end
+end
+
+return RadianceWorld
diff --git a/sonic-bluestreak.love/game/modules/world/maps/battle.lua b/sonic-bluestreak.love/game/modules/world/maps/battle.lua
new file mode 100644
index 0000000..930f3c2
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/maps/battle.lua
@@ -0,0 +1,97 @@
+local BaseMap = require "core.modules.world.maps.parent"
+local BattleMap = BaseMap:extend()
+
+function BattleMap:new(world, maptype, mapname)
+ BattleMap.super.new(self, world)
+ self:setPadding(0, 128, 0, 0)
+ self.directory = game.utils.getMapDirectory(maptype, mapname)
+ self.mappath = game.utils.getMapPath(maptype, mapname)
+
+ self.background = love.graphics.newImage(self.directory .. "background.png")
+ self.data = require(self.mappath)
+ self.assets = world.scene.assets
+
+ self:addParallax()
+end
+
+function BattleMap:loadCollisions()
+ local w, h = self:getDimensions()
+ self.world:newCollision("floor", 0, 0, -16, w, h, 16)
+ for i, block in ipairs(self.data.blocks) do
+ self:addBlock(block[1], block[2], block[3], block[4], block[5], block[6])
+ end
+end
+
+function BattleMap:addBlock(x, y, w, h, top, bottom)
+ if (self.assets.images[top] == nil) then
+ self.assets:addImage(top, self.directory .. top .. ".png")
+ end
+ if (self.assets.images[bottom] == nil) then
+ self.assets:addImage(bottom, self.directory .. bottom .. ".png")
+ end
+ self.world.obj.collisions["textured"](self.world, x*2, y, 0, w*2, h, 48, top, bottom)
+end
+
+function BattleMap:getDimensions()
+ local w, h = self.background:getDimensions()
+ return w, (h/2)
+end
+
+function BattleMap:loadPlayers()
+ self.world:addPlayer(16, 16, 0, 1)
+end
+
+function BattleMap:loadActors()
+ -- Empty Placeholder function
+end
+
+function BattleMap:draw()
+ love.graphics.draw(self.background, 0, 0, 0, 1, 0.5)
+end
+
+function BattleMap:addParallax()
+ self.parallax = {}
+
+ for i,layerdata in ipairs(self.data.parallax) do
+ local layer = {}
+ layer.basex = layerdata[1]
+ layer.basey = layerdata[2]
+ layer.background = love.graphics.newImage(self.directory .. layerdata[7] .. ".png")
+ local w, h = layer.background:getDimensions()
+ layer.w = w
+ layer.h = h
+
+ if (layerdata[5]) then
+ layer.repeatx = math.ceil(424/w + 1)
+ else
+ layer.repeatx = 1
+ end
+
+ if (layerdata[6]) then
+ layer.repeaty = math.ceil(240/h + 1)
+ else
+ layer.repeaty = 1
+ end
+
+ layer.decalx = layerdata[3]
+ layer.decaly = layerdata[4]
+
+ table.insert(self.parallax, layer)
+ end
+end
+
+function BattleMap:drawParallax(x, y, w, h)
+ for i1, layer in ipairs(self.parallax) do
+ local x = math.floor((x)*layer.decalx) % layer.w
+
+ for i=1, layer.repeatx do
+ for j=1, layer.repeaty do
+ local xx = math.floor(layer.basex + (layer.w * (i-1)) - x)
+ local yy = math.floor(layer.basey + (layer.h * (j-1)) - (y+96)*layer.decaly)
+ love.graphics.draw(layer.background, xx, yy)
+ end
+ end
+ end
+end
+
+return BattleMap
diff --git a/sonic-bluestreak.love/game/modules/world/maps/init.lua b/sonic-bluestreak.love/game/modules/world/maps/init.lua
new file mode 100644
index 0000000..41f47b0
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/maps/init.lua
@@ -0,0 +1,7 @@
+local customMap = {}
+
+customMap.Test = require "game.modules.world.maps.test"
+customMap.Battle = require "game.modules.world.maps.battle"
+customMap.Shoot = require "game.modules.world.maps.shoot"
+
+return customMap
diff --git a/sonic-bluestreak.love/game/modules/world/maps/shoot.lua b/sonic-bluestreak.love/game/modules/world/maps/shoot.lua
new file mode 100644
index 0000000..402add1
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/maps/shoot.lua
@@ -0,0 +1,145 @@
+local BaseMap = require "core.modules.world.maps.parent"
+local ShootMap = BaseMap:extend()
+
+local TILESIZE = 31
+local TESTZONE = "forest"
+
+local zoneDatas = require "datas.gamedata.maps.shoot.zones"
+
+function ShootMap:new(world, maptype, mapname)
+ ShootMap.super.new(self, world)
+
+ self:setPadding(0, 0, 0, 0)
+ self:generateTextures(5, mapname)
+end
+
+function ShootMap:loadCollisions()
+ local w, h = self:getDimensions()
+ self.world:newCollision("floor", 0, 0, -16, w, h, 16)
+end
+
+function ShootMap:addBlock(x, y, w, h, top, bottom)
+ -- Empty Placeholder function
+end
+
+function ShootMap:getDimensions()
+ return 3000, 100
+end
+
+function ShootMap:loadPlayers()
+ self.world:addPlayer(16, 50, 0, 1)
+end
+
+function ShootMap:loadActors()
+ -- Empty Placeholder function
+end
+
+function ShootMap:generateTextures(tile, background)
+
+ self.texture = {}
+ self.texture.floor = self:generateFloor(tile)
+ self.texture.border = love.graphics.newImage("assets/backgrounds/borders.png")
+ self.quads = {}
+ local w, h = self.texture.border:getDimensions()
+ self.quads.borders = love.graphics.newQuad(0, tile*10, 80, 10, w, h)
+
+ self:addParallax(background)
+end
+
+function ShootMap:generateFloor(tile)
+ local canvas = love.graphics.newCanvas(31*16, 100)
+ local tile = tile or 1
+
+ local tileTexture = love.graphics.newImage("assets/backgrounds/normaltile.png")
+ local tileQuad = {}
+ local w, h = tileTexture:getDimensions()
+ tileQuad[1] = love.graphics.newQuad( 0, tile*24, 40, 24, w, h)
+ tileQuad[2] = love.graphics.newQuad(40, tile*24, 40, 24, w, h)
+
+ love.graphics.setCanvas( canvas )
+
+ for i=1, 5 do
+ for j=0, 18 do
+ local tiley = (i-1)*20 - 4
+ local tilex = (j-2)*31 + (i-1)*10
+ local variant = 1 + ((i + j) % 2)
+ love.graphics.draw(tileTexture, tileQuad[variant], tilex, tiley)
+ end
+ end
+
+ love.graphics.setCanvas( )
+
+ local imagedata = canvas:newImageData()
+ local texture = love.graphics.newImage( imagedata )
+ imagedata:release()
+ canvas:release()
+ return texture
+end
+
+function ShootMap:draw()
+ for i=1, 10 do
+ --love.graphics.draw(self.texture.floor, ((i-1)*31*16), 0)
+ end
+end
+
+function ShootMap:addParallax(filename)
+ -- Empty Placeholder function
+ local filename = filename or "forest"
+ local backfolder = "assets/backgrounds/parallax/"
+ filename = backfolder .. filename
+ self.texture.back1 = love.graphics.newImage(filename .. "-back.png")
+ self.texture.back2 = love.graphics.newImage(filename .. "-fore.png")
+ self.texture.cliff = love.graphics.newImage(filename .. "-cliff.png")
+end
+
+function ShootMap:drawParallax(x, y, w, h)
+
+ self:drawBackground(x, y, w, h)
+ self:drawForeground(x, y + 10, w, h)
+ local w2, _ = self.texture.floor:getDimensions()
+ for i=1, 2 do
+ local x2 = x % w2
+ love.graphics.draw(self.texture.floor, ((i-1)*31*16)-x2, -y)
+ end
+
+ self:drawBorder(x, y + 10)
+ self:drawBorder(x, y - 100)
+ self:drawCliff(x, y - 110, w, h)
+end
+
+function ShootMap:drawBackground(x, y, w, h)
+ local w2, h2 = self.texture.back1:getDimensions()
+ local imax = math.ceil(w / w2) + 1
+ for i=1, imax do
+ local x1 = (x / 5) % w2
+ love.graphics.draw(self.texture.back1, (i-1)*w2 - x1, 0, 0, 1, 1, 0, 0)
+ end
+end
+
+function ShootMap:drawForeground(x, y, w, h)
+ local w2, h2 = self.texture.back2:getDimensions()
+ local imax = math.ceil(w / w2) + 1
+ for i=1, imax do
+ local x1 = (x / 2) % w2
+ love.graphics.draw(self.texture.back2, (i-1)*w2 - x1, -y, 0, 1, 1, 0, h2)
+ end
+end
+
+function ShootMap:drawBorder(x, y)
+ for i=1, 7 do
+ local x2 = x % 80
+ love.graphics.draw(self.texture.border, self.quads.borders, (i-1)*80 - x2, -y, 0, 1, 1)
+ end
+end
+
+function ShootMap:drawCliff(x, y, w, h)
+ local w2, h2 = self.texture.cliff:getDimensions()
+ local imax = math.ceil(w / w2) + 1
+ for i=1, imax do
+ local x1 = (x) % w2
+ love.graphics.draw(self.texture.cliff, (i-1)*w2 - x1, -y, 0, 1, 1, 0, 0)
+ end
+end
+
+
+return ShootMap
diff --git a/sonic-bluestreak.love/game/modules/world/maps/test.lua b/sonic-bluestreak.love/game/modules/world/maps/test.lua
new file mode 100644
index 0000000..5deb5a3
--- /dev/null
+++ b/sonic-bluestreak.love/game/modules/world/maps/test.lua
@@ -0,0 +1,48 @@
+local BaseMap = require "core.modules.world.maps.parent"
+local TestMap = BaseMap:extend()
+
+function TestMap:new(world)
+ TestMap.super.new(self, world)
+ self:setPadding(0, 96, 0, 0)
+
+ self.background = love.graphics.newImage("assets/backgrounds/parallax/test-back.png")
+end
+
+function TestMap:loadCollisions()
+ self.world:newCollision("wall", 0, 0, -16, 8*64, 8*32, 16)
+ self.world:newCollision("wall", 64*1, 32*1, 0, 64*1, 32*3, 48)
+ self.world:newCollision("wall", 64*4, 32*1, 0, 64*3, 32*1, 48)
+ self.world:newCollision("wall", 64*6, 32*4, 0, 64*1, 32*3, 48)
+ self.world:newCollision("wall", 64*1, 32*6, 0, 64*3, 32*1, 48)
+end
+
+function TestMap:getDimensions()
+ return 8*64, 8*32
+end
+
+function TestMap:loadPlayers()
+ self.world:addPlayer(16, 16, 0, 1)
+end
+
+function TestMap:loadActors()
+ -- Empty Placeholder function
+end
+
+function TestMap:draw()
+ -- Empty Placeholder function
+end
+
+function TestMap:drawParallax(x, y, w, h)
+ local imax, jmax = (w/32)+1, (h/32)+1
+ local x, y = x or 0, y or 0
+ local x = math.floor(x/4) % 32
+ local y = math.floor((y+96)/6) % 32
+
+ for i=0, math.ceil(imax) do
+ for j=0, math.ceil(jmax) do
+ love.graphics.draw(self.background, (i-1)*32-x, (j-1)*32-y)
+ end
+ end
+end
+
+return TestMap
diff --git a/sonic-bluestreak.love/main.lua b/sonic-bluestreak.love/main.lua
index 2060673..83c5003 100644
--- a/sonic-bluestreak.love/main.lua
+++ b/sonic-bluestreak.love/main.lua
@@ -30,7 +30,7 @@ function love.load()
core = Core(true)
game = Game()
- scenes.boost()
+ scenes.test()
end
function love.update(dt)
diff --git a/sonic-bluestreak.love/scenes/test_scene/assets.lua b/sonic-bluestreak.love/scenes/test_scene/assets.lua
new file mode 100644
index 0000000..712c1c4
--- /dev/null
+++ b/sonic-bluestreak.love/scenes/test_scene/assets.lua
@@ -0,0 +1,17 @@
+return {
+ ["textures"] = {
+ {"shadow", "assets/sprites/shadow.png"}
+ },
+ ["sprites"] = {
+ {"sonic", "assets/sprites/characters/sonic"},
+ {"ring", "assets/sprites/items/ring"}
+ },
+ ["imagefonts"] = {
+ --{"medium", "assets/fonts/medium"}
+ },
+ ["sfx"] = {
+ --{"navigate", "assets/sfx/menu_move.mp3"},
+ --{"confirm", "assets/sfx/menu_confirm.mp3"},
+ --{"cancel", "assets/sfx/menu_error.mp3"},
+ }
+}
diff --git a/sonic-bluestreak.love/scenes/test_scene/init.lua b/sonic-bluestreak.love/scenes/test_scene/init.lua
index bb71db2..1d5487c 100644
--- a/sonic-bluestreak.love/scenes/test_scene/init.lua
+++ b/sonic-bluestreak.love/scenes/test_scene/init.lua
@@ -1,4 +1,4 @@
--- scenes/test :: a basic test scene
+-- scenes/moveplayer3D :: a basic player movement example in fake3D
--[[
Copyright © 2019 Kazhnuz
@@ -22,73 +22,23 @@
]]
local Scene = require "core.modules.scenes"
-local TestScene = Scene:extend()
+local MovePlayer = Scene:extend()
-local MenuType = require "core.modules.menusystem.listbox"
-local MenuType2 = require "core.modules.menusystem.flowbox"
-local MenuType3 = require "core.modules.menusystem.grid"
-local Widget = require "core.modules.menusystem.widgets"
+local World = require "game.modules.world"
+function MovePlayer:new(playerNumber, cameraMode)
+ local playerNumber = playerNumber or 1
+ local cameraMode = cameraMode or "split"
-function TestScene:new()
- TestScene.super.new(self)
+ MovePlayer.super.new(self)
+ self.assets:batchImport("scenes.test_scene.assets")
- self.i = 0
+ World(self, "shoot", "hills")
- self:register()
-
- MenuType(self.menusystem, "testMenu1", 32, 32, 100, 24*8, 4)
- Widget.Base(self.menusystem.menus["testMenu1"])
- Widget.Base(self.menusystem.menus["testMenu1"])
- Widget.Base(self.menusystem.menus["testMenu1"])
- Widget.Base(self.menusystem.menus["testMenu1"])
- Widget.Base(self.menusystem.menus["testMenu1"])
- Widget.Base(self.menusystem.menus["testMenu1"])
-
- MenuType2(self.menusystem, "testMenu2", 164, 32, 24*8, 24*2, 8, 2)
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
- Widget.Base(self.menusystem.menus["testMenu2"])
-
- MenuType3(self.menusystem, "testMenu3", 164, 32 + 72, 24*8, 24*5, 8, 5)
- Widget.Base(self.menusystem.menus["testMenu3"])
- Widget.Base(self.menusystem.menus["testMenu3"])
- Widget.Base(self.menusystem.menus["testMenu3"])
- Widget.Base(self.menusystem.menus["testMenu3"])
- self.menusystem.menus["testMenu3"]:addSlot(1, 0, 0, 4, 3)
- self.menusystem.menus["testMenu3"]:addSlot(2, 0, 3, 5, 2)
- self.menusystem.menus["testMenu3"]:addSlot(3, 5, 0, 3, 1)
- self.menusystem.menus["testMenu3"]:addSlot(4, 5, 1, 3, 4)
+ self.world:setPlayerNumber(playerNumber)
+ self.world.cameras:setMode(cameraMode)
+ self.world:loadMap()
end
-function TestScene:update(dt)
- self.i = self.i + dt
-end
-
-function TestScene:draw()
- love.graphics.setColor(.75, .75, .75, 1)
- love.graphics.rectangle("fill", 0, 0, 424, 240)
-
- love.graphics.setColor(0, 0, 0, 1)
- love.graphics.print(math.floor(self.i) .. " ; " .. self.mouse.x .. ":" .. self.mouse.y, 16, 16)
-end
-
-return TestScene
+return MovePlayer