123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import
- nodesnim,
- random
- Window("Roguelike", 480, 240)
- env.background_color = "#e0f8cf"
- var
- tileset = TileSet("assets/colored_tilemap.png", Vector2(16, 16), GL_RGBA)
- charapter = load("assets/player.png", GL_RGBA)
- const
- PLAYER_SPEED: float = 4
- LEVEL_WIDTH: float = 100
- PLAYER_SIZE: float = 16
- build:
- - Scene main:
- - TileMap map:
- call setTileSet(tileset)
- call resizeMap(Vector2(LEVEL_WIDTH, 15), 2)
- # Player
- - KinematicBody2D player:
- call move(300, 120)
- - Sprite player_sprite:
- call setTexture(charapter)
- - CollisionShape2D player_collision:
- call resize(PLAYER_SIZE, PLAYER_SIZE)
- call move(-8, -8)
- # Collision
- - CollisionShape2D top:
- call resize(LEVEL_WIDTH*16, 1)
- call move(0, -1)
- - CollisionShape2D bottom:
- call resize(LEVEL_WIDTH*16, 1)
- call move(0, 240)
- - CollisionShape2D left:
- call resize(1, 240)
- call move(PLAYER_SIZE, 0)
- - CollisionShape2D right:
- call resize(1, 240)
- call move(LEVEL_WIDTH*16, 0)
- - Camera2D camera:
- call setLimit(0, 0, LEVEL_WIDTH*16, 240)
- call setCurrent()
- call setTarget(player)
- call enableSmooth()
- # Draw grass
- for i in 0..512:
- map.drawTile(rand(99), rand(14), Vector2(0, 1), 1)
- # Draw trees
- for i in 0..128:
- map.drawTile(rand(99), rand(14), Vector2(rand(13..16).float, 0), 1)
- # Draw houses
- for i in 0..32:
- var
- pos = Vector2(rand(99).float, rand(14).float)
- collider = CollisionShape2D()
- map.drawTile(pos.x.int, pos.y.int, Vector2(rand(13..16).float, 2), 1)
- collider.resize(PLAYER_SIZE, PLAYER_SIZE)
- collider.move(pos.x*PLAYER_SIZE, pos.y*PLAYER_SIZE)
- main.addChild(collider)
- # Movement
- addKeyAction("forward", "w")
- addKeyAction("backward", "s")
- addKeyAction("right", "d")
- addKeyAction("left", "a")
- player@onProcess(self):
- if isActionPressed("right"):
- player.moveAndCollide(Vector2(PLAYER_SPEED, 0))
- elif isActionPressed("left"):
- player.moveAndCollide(Vector2(-PLAYER_SPEED, 0))
- if isActionPressed("forward"):
- player.moveAndCollide(Vector2(0, -PLAYER_SPEED))
- elif isActionPressed("backward"):
- player.moveAndCollide(Vector2(0, PLAYER_SPEED))
- addMainScene(main)
- windowLaunch()
|