RPG tutorial menu & blue box movement

This commit is contained in:
2021-01-02 20:22:59 -07:00
parent 332b38314e
commit b252ba12ee
6 changed files with 76 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
(defmethod new []
(super)
(addChild (new FlxGame 0 0 PlayState))
(addChild (new FlxGame 0 0 MenuState))
(return))

View File

@@ -0,0 +1,8 @@
package;
import flixel.FlxState;
import flixel.ui.FlxButton;
import flixel.FlxG;
@:build(kiss.Kiss.build("source/MenuState.kiss"))
class MenuState extends FlxState {}

View File

@@ -0,0 +1,10 @@
(defprop &mut :FlxButton playButton null)
(defmethod &override create []
(set playButton (new FlxButton 0 0 "Play" clickPlay))
(playButton.screenCenter)
(add playButton)
(return))
(defun clickPlay []
(FlxG.switchState (new PlayState)))

View File

@@ -1,4 +1,8 @@
(defprop &mut :Player player null)
(defmethod &override create []
(set player (new Player 20 20))
(add player)
(super.create)
(return))

View File

@@ -0,0 +1,11 @@
package;
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.util.FlxColor;
import flixel.input.keyboard.FlxKey;
import flixel.math.FlxPoint;
import kiss.Prelude;
@:build(kiss.Kiss.build("source/Player.kiss"))
class Player extends FlxSprite {}

View File

@@ -0,0 +1,42 @@
(defvar &inline :Float SPEED 200)
(defmethod new [:Float x :Float y]
(super x y)
(makeGraphic 16 16 FlxColor.BLUE)
(set drag.x (set drag.y 1600))
(return))
(defmethod updateMovement []
(let [[&mut up &mut down &mut left &mut right]
(map [[UP W] [DOWN S] [LEFT A] [RIGHT D]] FlxG.keys.anyPressed)]
(when (and up down)
(set up (set down false)))
(when (and left right)
(set left (set right false)))
(when (or up down left right)
(deflocal &mut :Float newAngle 0)
(cond
(up
(set newAngle -90)
(cond
(left
(set newAngle (- newAngle 45)))
(right
(set newAngle (+ newAngle 45)))))
(down
(set newAngle 90)
(cond
(left
(set newAngle (+ newAngle 45)))
(right
(set newAngle (- newAngle 45)))))
(left
(set newAngle 180))
(right
(set newAngle 0)))
(velocity.set SPEED 0)
(velocity.rotate (FlxPoint.weak 0 0) newAngle))))
(defmethod &override update [:Float elapsed]
(updateMovement)
(super.update elapsed))