浏览代码

Bind enemy to factory.

Sam Jaffe 6 年之前
父节点
当前提交
b13a819551
共有 3 个文件被更改,包括 16 次插入1 次删除
  1. 1 1
      Resources/scripts/entity/drake.json
  2. 7 0
      include/danmaku/enemy.hpp
  3. 8 0
      src/entity/enemy.cxx

+ 1 - 1
Resources/scripts/entity/drake.json

@@ -1,6 +1,6 @@
 {
   "name":"Drake",
-  "type":"Enemy",
+  "type":"enemy",
   "hp":10,
   "scale":0.15,
   "solid":true,

+ 7 - 0
include/danmaku/enemy.hpp

@@ -21,7 +21,14 @@ namespace danmaku {
     enemy(Json::Value const & json, graphics::object const & obj,
           attack_factory get_attack);
 
+    void update(float delta) override { entity::update(delta); }
+    void level(class level * l) override { level_ = l; }
+    class level * level() const override {
+      return level_;
+    }
+
   private:
+    class level * level_{nullptr};
     points_map points_;
     std::vector<std::shared_ptr<bullet_pattern>> attack_;
   };

+ 8 - 0
src/entity/enemy.cxx

@@ -35,3 +35,11 @@ enemy::enemy(Json::Value const & json, graphics::object const & obj,
     : actor(json, obj), points_(to_points_map(json["points"])) {
   attack_ = to_vector(json["attack"], get_attack, this);
 }
+
+std::unique_ptr<enemy> make_enemy(Json::Value const & json,
+                                  graphics::object const & obj,
+                                  attack_factory get_attack) {
+  return std::make_unique<enemy>(json, obj, get_attack);
+}
+
+BIND_ACTOR("enemy", &make_enemy);