aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.wren39
-rw-r--r--controls.wren11
-rw-r--r--layer_type.wren (renamed from layerType.wren)0
-rw-r--r--level.wren62
-rw-r--r--main.wren63
-rw-r--r--map.wren5
6 files changed, 129 insertions, 51 deletions
diff --git a/config.wren b/config.wren
new file mode 100644
index 0000000..a1b8cec
--- /dev/null
+++ b/config.wren
@@ -0,0 +1,39 @@
+import "graphics" for Canvas
+import "dome" for Window
+class Config {
+ construct new() {
+
+ }
+
+ static KeyboardConstants {
+ return {
+ "UP": "up",
+ "DOWN": "down",
+ "LEFT": "left",
+ "RIGHT": "right",
+ "PICK" : "c",
+ "SELECT": "z",
+ "ATTACK": "x",
+ "QUIT": "escape"
+ }
+ }
+
+ static setup() {
+ Window.resize(800, 600)
+ Canvas.resize(800, 600)
+ Window.title = "REBIRTH"
+ }
+
+ // static KeyboardConstants() {
+ // return {
+ // "UP": "up",
+ // "DOWN": "down",
+ // "LEFT": "left",
+ // "RIGHT": "right",
+ // "PICK" : "c",
+ // "SELECT": "z",
+ // "ATTACK": "x",
+ // "QUIT": "esc"
+ // }
+ // }
+} \ No newline at end of file
diff --git a/controls.wren b/controls.wren
new file mode 100644
index 0000000..3804020
--- /dev/null
+++ b/controls.wren
@@ -0,0 +1,11 @@
+import "input" for Keyboard
+
+class Controls {
+ construct new() {
+
+ }
+
+ static detect(keyCode) {
+ return Keyboard.isKeyDown(keyCode)
+ }
+} \ No newline at end of file
diff --git a/layerType.wren b/layer_type.wren
index cee6b82..cee6b82 100644
--- a/layerType.wren
+++ b/layer_type.wren
diff --git a/level.wren b/level.wren
new file mode 100644
index 0000000..4aaacea
--- /dev/null
+++ b/level.wren
@@ -0,0 +1,62 @@
+import "json" for Json
+import "graphics" for ImageData
+import "math" for Math
+import "./layer_type" for LayerType
+
+class Level {
+ construct new(levelName) {
+ _levelData = Json.load("assets/%(levelName).json")
+ var tileSheetData = _levelData["tilesets"][0] // Assuming I only use single tilesheet
+ _tileSheet = ImageData.loadFromFile("assets/%(tileSheetData["image"])")
+ _tileSheetH = tileSheetData["imageheight"]
+ _tileSheetW = tileSheetData["imagewidth"]
+ _tileH = tileSheetData["tileheight"]
+ _tileW = tileSheetData["tilewidth"]
+ _levelHeight = _levelData["height"]
+ _levelWidth = _levelData["width"]
+ _layers = _levelData["layers"]
+ _rows = Math.floor(_tileSheetW/_tileW)
+ _cols = Math.floor(_tileSheetH/_tileH)
+ }
+
+ load(levelName) {
+
+ }
+
+ draw(x, y) {
+ var startX = x
+ var startY = y
+ for(layer in _layers) {
+ var index = 0
+ for(levelY in 0...(_levelHeight)) {
+ for(levelX in 0...(_levelWidth)) {
+ if((layer["type"] == LayerType.Tile) && (layer["visible"] == true)) {
+ var tileIndex = layer["data"][index]
+ if (tileIndex > 0) {
+ drawTile(tileIndex-1, x, y)
+ }
+ }
+ index = index + 1
+ x = x + 16
+ }
+ y = y + 16
+ x = startX
+ }
+ x = startX
+ y = startY
+ }
+ }
+
+ drawTile(tileIndex, mapX, mapY) {
+ var spriteX = (tileIndex % _rows)
+ var spriteY = Math.floor ((tileIndex - spriteX) % _cols)
+ _tileSheet.transform({
+ "srcX": spriteX * 16,
+ "srcY": spriteY * 16,
+ "srcW": _tileW,
+ "srcH": _tileH,
+ "scaleX": 1,
+ "scaleY": 1
+ }).draw(mapX,mapY)
+ }
+} \ No newline at end of file
diff --git a/main.wren b/main.wren
index 1d472b0..7e39844 100644
--- a/main.wren
+++ b/main.wren
@@ -1,25 +1,17 @@
import "graphics" for ImageData
import "json" for Json
import "graphics" for Canvas, Color
-import "./layerType" for LayerType
-import "dome" for Window
+import "dome" for Window, Process
import "math" for Math
+import "config" for Config
+import "input" for Keyboard
+import "./controls" for Controls
+import "./level" for Level
+
class Main {
construct new() {
- _tileSheet = ImageData.loadFromFile("assets/tilemap_packed.png")
- _tileSheetH = 128
- _tileSheetW = 272
- _tileH = 16
- _tileW = 16
- _rows = _tileSheetW/_tileW
- _cols = _tileSheetH/_tileH
- _levelData = Json.load("assets/level1.json")
- _levelHeight = _levelData["tileheight"]
- _levelWidth = _levelData["tilewidth"]
- _layers = _levelData["layers"]
- Window.resize(256, 256)
- Canvas.resize(256, 256)
-
+ Config.setup()
+ __level = Level.new("level1")
}
init() {
@@ -27,45 +19,14 @@ class Main {
}
update() {
-
- }
-
- drawTile(tileIndex, mapX, mapY) {
- var spriteX = (tileIndex % _rows)
- var spriteY = Math.floor ((tileIndex - spriteX) % _cols)
- _tileSheet.transform({
- "srcX": spriteX * 16,
- "srcY": spriteY * 16,
- "srcW": _tileW,
- "srcH": _tileH,
- "scaleX": 1,
- "scaleY": 1
- }).draw(mapX*16,mapY*16)
- }
-
- drawLevel(x, y) {
- for(layer in _layers) {
- var index = 0
- for(levelY in 0...(_levelHeight)) {
- for(levelX in 0...(_levelWidth)) {
- if((layer["type"] == LayerType.Tile) && (layer["visible"] == true)) {
- var tileIndex = layer["data"][index]
- if (tileIndex > 0) {
- drawTile(tileIndex-1, levelX, levelY)
- }
- }
- index = index + 1
- }
- }
+ if(Controls.detect(Config.KeyboardConstants["QUIT"])) {
+ Process.exit(0)
}
}
- getTile() {
-
- }
-
draw(alpha) {
- drawLevel(0,0)
+ Canvas.cls(Color.pink)
+ __level.draw(0,0)
}
}
diff --git a/map.wren b/map.wren
new file mode 100644
index 0000000..e9a37ee
--- /dev/null
+++ b/map.wren
@@ -0,0 +1,5 @@
+class Map {
+ construct new() {
+
+ }
+} \ No newline at end of file