Kaynağa Gözat

*Fix* object scaling. Fix some json type names.
Add world data to the game initialization.

Sam Jaffe 6 yıl önce
ebeveyn
işleme
832fe17787

+ 1 - 1
Resources/scripts/level/1/level.json

@@ -1,5 +1,5 @@
 {
-  "time_between_waves":10,
+  "timeBetweenWaves":10,
   "waves":[
     [
       {"id":"Drake", "position":[350, 600]},

+ 2 - 2
Resources/scripts/level/world.json

@@ -1,8 +1,8 @@
 {
-  "name":"World 1",
+  "name":"world-1",
   "levels":[
     {
-      "name":"Light 1",
+      "name":"light-1",
       "path":"1"
     }
   ]

+ 1 - 1
Resources/scripts/player/player.json

@@ -2,7 +2,7 @@
   "name":"Player",
   "type":"player",
   "hp":100,
-  "size":0.25,
+  "scale":0.25,
   "speed":400,
   "solid":true,
   "material":{

+ 4 - 0
danmaku/GameView.mm

@@ -11,6 +11,7 @@
 #include <memory>
 #include <OpenGL/gl3.h>
 
+#include "danmaku/world.hpp"
 #include "game/engine/events.hpp"
 #include "game/engine/game_dispatch.hpp"
 #include "game/graphics/renderer.hpp"
@@ -55,6 +56,9 @@ static std::shared_ptr<engine::game_dispatch> game;
   using graphics::driver;
   renderer = std::make_shared<direct_renderer>(driver::openGL);
   game = std::make_shared<engine::game_dispatch>(renderer);
+  auto world = danmaku::world::load_world("scripts/level/world.json", game);
+  game->register_scene(world);
+  game->activate_scene("light-1");
   
   renderer->clear();
   

+ 10 - 4
src/serial.cxx

@@ -23,8 +23,11 @@ namespace danmaku {
     auto get_attack = [&](Json::Value const & j, actor * a) {
       return bp_factory.get(j["id"].asString(), std::move(a), j, mgr);
     };
-    return actor_factory::instance().get(json["type"].asString(), json,
-                                         engine::to_object(json, mgr),
+    // TODO: Pass-through this scaling...
+    auto object = engine::to_object(json, mgr);
+    object.location.size *= json["scale"].asFloat();
+    object.points = object.location;
+    return actor_factory::instance().get(json["type"].asString(), json, object,
                                          get_attack);
   }
 
@@ -34,8 +37,11 @@ namespace danmaku {
     auto get_attack = [&](Json::Value const & j, actor * a) {
       return bp_factory.get(j["id"].asString(), std::move(a), j, mgr);
     };
-    return std::make_unique<player>(json, engine::to_object(json, mgr),
-                                    get_attack);
+    // TODO: Pass-through this scaling...
+    auto object = engine::to_object(json, mgr);
+    object.location.size *= json["scale"].asFloat();
+    object.points = object.location;
+    return std::make_unique<player>(json, object, get_attack);
   }
 
   points_map to_points_map(Json::Value const & json) {