diff options
author | Indrajith K L | 2020-06-29 03:14:32 +0530 |
---|---|---|
committer | Indrajith K L | 2020-06-29 03:14:32 +0530 |
commit | ffd6706cb02fdd37f5f461a37287a5860e69fb6c (patch) | |
tree | e5a4b81cc73b710e4ef4312b192021072da000a4 | |
download | dungeon-client-ffd6706cb02fdd37f5f461a37287a5860e69fb6c.tar.gz dungeon-client-ffd6706cb02fdd37f5f461a37287a5860e69fb6c.tar.bz2 dungeon-client-ffd6706cb02fdd37f5f461a37287a5860e69fb6c.zip |
:tada: Initial Commit
* Integrates Colyseus Server
* Implements Basic Player movement
* Player Remove/Update Events
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | .vscode/extensions.json | 5 | ||||
-rw-r--r-- | .vscode/launch.json | 21 | ||||
-rw-r--r-- | .vscode/settings.json | 13 | ||||
-rw-r--r-- | .vscode/tasks.json | 13 | ||||
-rw-r--r-- | Project.xml | 83 | ||||
-rw-r--r-- | assets/data/data-goes-here.txt | 0 | ||||
-rw-r--r-- | assets/images/images-go-here.txt | 0 | ||||
-rw-r--r-- | assets/images/player.png | bin | 0 -> 19237 bytes | |||
-rw-r--r-- | assets/music/music-goes-here.txt | 0 | ||||
-rw-r--r-- | assets/sounds/sounds-go-here.txt | 0 | ||||
-rw-r--r-- | hxformat.json | 15 | ||||
-rw-r--r-- | source/AssetPaths.hx | 4 | ||||
-rw-r--r-- | source/Main.hx | 13 | ||||
-rw-r--r-- | source/PlayState.hx | 85 | ||||
-rw-r--r-- | source/Player.hx | 13 | ||||
-rw-r--r-- | source/models/Player.hx | 21 | ||||
-rw-r--r-- | source/models/State.hx | 15 |
18 files changed, 302 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f5d640 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +export
\ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..419972a --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "openfl.lime-vscode-extension" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..5e9a7a1 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,21 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Build + Debug", + "type": "lime", + "request": "launch" + }, + { + "name": "Debug", + "type": "lime", + "request": "launch", + "preLaunchTask": null + }, + { + "name": "Macro", + "type": "haxe-eval", + "request": "launch" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4c1a0e9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "search.exclude": { + "export/**/*.hx": true + }, + "[haxe]": { + "editor.formatOnSave": true, + "editor.formatOnPaste": true, + "editor.codeActionsOnSave": { + "source.sortImports": true + } + }, + "haxe.enableExtendedIndentation": true +}
\ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..16a7764 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "lime", + "command": "test", + "group": { + "kind": "build", + "isDefault": true + } + } + ] +} diff --git a/Project.xml b/Project.xml new file mode 100644 index 0000000..c6ba97d --- /dev/null +++ b/Project.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8"?> +<project> + <!-- _________________________ Application Settings _________________________ --> + + <app title="Dungeon" file="Dungeon" main="Main" version="0.0.1" company="HaxeFlixel" /> + + <!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file + or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"--> + <app preloader="flixel.system.FlxPreloader" /> + + <!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2--> + <set name="SWF_VERSION" value="11.8" /> + + <!-- ____________________________ Window Settings ___________________________ --> + + <!--These window settings apply to all targets--> + <window width="800" height="600" fps="60" background="#000000" hardware="true" vsync="false" /> + + <!--HTML5-specific--> + <window if="html5" resizable="false" /> + + <!--Desktop-specific--> + <window if="desktop" orientation="landscape" fullscreen="false" resizable="true" /> + + <!--Mobile-specific--> + <window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" /> + + <!-- _____________________________ Path Settings ____________________________ --> + + <set name="BUILD_DIR" value="export" /> + <classpath name="source" /> + <assets path="assets" /> + + <!-- _______________________________ Libraries ______________________________ --> + + <haxelib name="flixel" /> + <haxelib name="colyseus" /> + + <!--In case you want to use the addons package--> + <!--<haxelib name="flixel-addons" />--> + + <!--In case you want to use the ui package--> + <!--<haxelib name="flixel-ui" />--> + + <!--In case you want to use nape with flixel--> + <!--<haxelib name="nape-haxe4" />--> + + <!-- ______________________________ Haxedefines _____________________________ --> + + <!--Enable the Flixel core recording system--> + <!--<haxedef name="FLX_RECORD" />--> + + <!--Disable the right and middle mouse buttons--> + <!--<haxedef name="FLX_NO_MOUSE_ADVANCED" />--> + + <!--Disable the native cursor API on Flash--> + <!--<haxedef name="FLX_NO_NATIVE_CURSOR" />--> + + <!--Optimise inputs, be careful you will get null errors if you don't use conditionals in your game--> + <haxedef name="FLX_NO_MOUSE" if="mobile" /> + <haxedef name="FLX_NO_KEYBOARD" if="mobile" /> + <haxedef name="FLX_NO_TOUCH" if="desktop" /> + <!--<haxedef name="FLX_NO_GAMEPAD" />--> + + <!--Disable the Flixel core sound tray--> + <!--<haxedef name="FLX_NO_SOUND_TRAY" />--> + + <!--Disable the Flixel sound management code--> + <!--<haxedef name="FLX_NO_SOUND_SYSTEM" />--> + + <!--Disable the Flixel core focus lost screen--> + <!--<haxedef name="FLX_NO_FOCUS_LOST_SCREEN" />--> + + <!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!--> + <haxedef name="FLX_NO_DEBUG" unless="debug" /> + + <!--Enable this for Nape release builds for a serious peformance improvement--> + <haxedef name="NAPE_RELEASE_BUILD" unless="debug" /> + + <!-- _________________________________ Custom _______________________________ --> + + <!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)--> +</project> diff --git a/assets/data/data-goes-here.txt b/assets/data/data-goes-here.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/assets/data/data-goes-here.txt diff --git a/assets/images/images-go-here.txt b/assets/images/images-go-here.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/assets/images/images-go-here.txt diff --git a/assets/images/player.png b/assets/images/player.png Binary files differnew file mode 100644 index 0000000..7ddd404 --- /dev/null +++ b/assets/images/player.png diff --git a/assets/music/music-goes-here.txt b/assets/music/music-goes-here.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/assets/music/music-goes-here.txt diff --git a/assets/sounds/sounds-go-here.txt b/assets/sounds/sounds-go-here.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/assets/sounds/sounds-go-here.txt diff --git a/hxformat.json b/hxformat.json new file mode 100644 index 0000000..66cb386 --- /dev/null +++ b/hxformat.json @@ -0,0 +1,15 @@ +{ + "lineEnds": { + "leftCurly": "both", + "rightCurly": "both", + "objectLiteralCurly": { + "leftCurly": "after" + } + }, + "sameLine": { + "ifElse": "next", + "doWhile": "next", + "tryBody": "next", + "tryCatch": "next" + } +} diff --git a/source/AssetPaths.hx b/source/AssetPaths.hx new file mode 100644 index 0000000..db7ef44 --- /dev/null +++ b/source/AssetPaths.hx @@ -0,0 +1,4 @@ +package; + +@:build(flixel.system.FlxAssets.buildFileReferences("assets", true)) +class AssetPaths {} diff --git a/source/Main.hx b/source/Main.hx new file mode 100644 index 0000000..efa0e2d --- /dev/null +++ b/source/Main.hx @@ -0,0 +1,13 @@ +package; + +import flixel.FlxGame; +import openfl.display.Sprite; + +class Main extends Sprite +{ + public function new() + { + super(); + addChild(new FlxGame(0, 0, PlayState)); + } +} diff --git a/source/PlayState.hx b/source/PlayState.hx new file mode 100644 index 0000000..f04dcc2 --- /dev/null +++ b/source/PlayState.hx @@ -0,0 +1,85 @@ +package; + +import flixel.FlxG; +import flixel.FlxSprite; +import flixel.FlxState; +import io.colyseus.Client; +import io.colyseus.Room; +import models.State; + +class PlayState extends FlxState +{ + var client = new Client('ws://localhost:3000'); + private var room:Room<State>; + + private var players:Map<String, Player> = new Map(); + + override public function create() + { + super.create(); + + this.client.joinOrCreate("my_room", [], State, function(err, room) + { + if (err != null) + { + trace("JOIN ERROR: " + err); + return; + } + + this.room = room; + + this.room.state.players.onAdd = function(player, key) + { + trace("Player" + player.x); + var _player = new Player(player.x, player.y); + this.players[key] = _player; + add(_player); + } + + this.room.state.players.onChange = function(player, key) + { + trace("PLAYER CHANGED AT: ", key); + this.players[key].x = player.x; + this.players[key].y = player.y; + } + + this.room.state.players.onRemove = function(player, key) + { + trace("PLAYER REMOVED AT: ", key); + remove(this.players[key]); + } + }); + } + + override public function update(elapsed:Float) + { + if (FlxG.keys.pressed.UP) + { + // The up arrow key is currently pressed + // This code is executed every frame, while the key is pressed\ + this.room.send("move", {y: -1}); + } + + if (FlxG.keys.justPressed.DOWN) + { + // The left arrow key has just been pressed + // This code is only executed once, on the frame immediately after the key has been pressed + this.room.send("move", {y: 1}); + } + + if (FlxG.keys.justReleased.LEFT) + { + // The left arrow key has just been released + // This code is only executed once, on the frame immediately after the key has been released + this.room.send("move", {x: -1}); + } + + if (FlxG.keys.justReleased.RIGHT) + { + // The left arrow key has just been released + // This code is only executed once, on the frame immediately after the key has been released + this.room.send("move", {x: 1}); + } + super.update(elapsed); + } +} diff --git a/source/Player.hx b/source/Player.hx new file mode 100644 index 0000000..80c3f78 --- /dev/null +++ b/source/Player.hx @@ -0,0 +1,13 @@ +package; + +import flixel.FlxSprite; +import flixel.util.FlxColor; + +class Player extends FlxSprite +{ + public function new(x:Float = 0, y:Float = 0) + { + super(x, y); + loadGraphic("assets/images/player.png"); + } +} diff --git a/source/models/Player.hx b/source/models/Player.hx new file mode 100644 index 0000000..1de9b3a --- /dev/null +++ b/source/models/Player.hx @@ -0,0 +1,21 @@ +// +// THIS FILE HAS BEEN GENERATED AUTOMATICALLY +// DO NOT CHANGE IT MANUALLY UNLESS YOU KNOW WHAT YOU'RE DOING +// +// GENERATED USING @colyseus/schema 0.5.39 +// +package models; + +import io.colyseus.serializer.schema.Schema; + +class Player extends Schema +{ + @:type("number") + public var x:Dynamic = 0; + + @:type("number") + public var y:Dynamic = 0; + + @:type("string") + public var name:String = ""; +} diff --git a/source/models/State.hx b/source/models/State.hx new file mode 100644 index 0000000..4f89d35 --- /dev/null +++ b/source/models/State.hx @@ -0,0 +1,15 @@ +// +// THIS FILE HAS BEEN GENERATED AUTOMATICALLY +// DO NOT CHANGE IT MANUALLY UNLESS YOU KNOW WHAT YOU'RE DOING +// +// GENERATED USING @colyseus/schema 0.5.39 +// +package models; + +import io.colyseus.serializer.schema.Schema; + +class State extends Schema +{ + @:type("map", Player) + public var players:MapSchema<Player> = new MapSchema<Player>(); +} |