]> git.seodisparate.com - RockPaperScissorsDuel/commitdiff
Increase amount of 2D objects spawned on hit
authorStephen Seo <seo.disparate@gmail.com>
Wed, 1 Feb 2023 05:57:28 +0000 (14:57 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 1 Feb 2023 05:57:28 +0000 (14:57 +0900)
Also randomize their movement.

src/3d/anim_falling_2d.cc
src/3d/anim_falling_2d.h
src/3d/deferred_2d_draw.cc
src/3d_renderer.cc
src/constants.h

index b30e606f22fd235e4d966476699a7a056fee9332..ed4f2be02079917a6be814bfbab99bd3e5537929 100644 (file)
@@ -1,20 +1,14 @@
 #include "anim_falling_2d.h"
 
 // local includes
-#include <raylib.h>
-
 #include "../constants.h"
+#include "../ems.h"
 #include "arrays_conv.h"
 #include "deferred_2d_draw.h"
 
 AnimFalling2D::AnimFalling2D(A3F pos, A4C color, Texture2D *texture, A4F txywh,
                              bool is_going_right, Deferred2DMap *map)
-    : Anims(nullptr, pos, color),
-      map(map),
-      wh{txywh.at(2), txywh.at(3)},
-      dx(is_going_right ? MODEL_FALLING_2D_DX : -MODEL_FALLING_2D_DX),
-      dy(MODEL_FALLING_2D_DY),
-      ddy(MODEL_FALLING_2D_DDY) {
+    : Anims(nullptr, pos, color), map(map), wh{txywh.at(2), txywh.at(3)} {
   Deferred2DDraw def(texture, txywh, A2F{pos.at(0), pos.at(1)},
                      A2F{txywh.at(2) / 2.0F, txywh.at(3) / 2.0F}, color, 0.0F,
                      is_going_right);
index c3400e8c024230e2da2dfa6e6a05d5c4e95eb143..5ddbc7b163e97ec718fb5fa727e0a6c96df136be 100644 (file)
@@ -39,9 +39,6 @@ class AnimFalling2D : public Anims {
  private:
   Deferred2DMap *map;
   A2F wh;
-  float dx;
-  float dy;
-  float ddy;
   int def_id;
 };
 
index 35afcd8a4085645c7d220fcfcf056390f4951abe..9275e735a6c0d93d0e6e9e28f8a44ca481088085 100644 (file)
@@ -1,9 +1,8 @@
 #include "deferred_2d_draw.h"
 
 // local includes
-#include <raylib.h>
-
 #include "../constants.h"
+#include "../ems.h"
 #include "arrays_conv.h"
 
 int Deferred2DDraw::id_counter = 0;
@@ -17,8 +16,10 @@ Deferred2DDraw::Deferred2DDraw(Texture2D *texture, A4F txywh, A2F pos,
       origin(origin),
       color(color),
       angle(angle),
-      dx(is_going_right ? MODEL_FALLING_2D_DX : -MODEL_FALLING_2D_DX),
-      dy(MODEL_FALLING_2D_DY),
+      dx(is_going_right ? (MODEL_FALLING_2D_DX * call_js_get_random())
+                        : (-MODEL_FALLING_2D_DX * call_js_get_random())),
+      dy(MODEL_FALLING_2D_DY * 2.0F * call_js_get_random() -
+         MODEL_FALLING_2D_DY),
       ddy(MODEL_FALLING_2D_DDY),
       id(id_counter++),
       activated(false),
index e8eaf9d0f89780bda202270639fea89c963e5819..55bfd53c448ed2201a3dc6ebb48b9f4aee27c006 100644 (file)
@@ -766,9 +766,16 @@ int Renderer3D::setup_anims(int idx, int score) {
           },
           ptr);
       seqAnim->push_anim(std::move(anim_still));
-      seqAnim->push_anim(std::make_unique<AnimFalling2D>(
-          A3F{p1_pos.x, p1_pos.y, 0.0F}, A4C{255, 200, 200, 255}, &spriteSheet,
-          p1_dims, false, &deferred_2d_draw_map));
+
+      auto falling_anims = std::make_unique<AnimConcurrent>(nullptr);
+      for (int i = 0; i < ANIM_FALLING_AMT; ++i) {
+        falling_anims->push_anim(std::make_unique<AnimFalling2D>(
+            A3F{p1_pos.x, p1_pos.y, 0.0F}, A4C{255, 200, 200, 255},
+            &spriteSheet, p1_dims, i >= ANIM_FALLING_OPP_THRESHOLD,
+            &deferred_2d_draw_map));
+      }
+      seqAnim->push_anim(std::move(falling_anims));
+
       newAnim->push_anim(std::make_unique<AnimModelAttack>(
           p2_model, A3F{score * 2.0F + 1.0F, 0.0F, 0.0F},
           A4C{200, 200, 255, 255}, false));
@@ -797,9 +804,15 @@ int Renderer3D::setup_anims(int idx, int score) {
           },
           ptr);
       seqAnim->push_anim(std::move(anim_still));
-      seqAnim->push_anim(std::make_unique<AnimFalling2D>(
-          A3F{p2_pos.x, p2_pos.y, 0.0F}, A4C{200, 200, 255, 255}, &spriteSheet,
-          p2_dims, true, &deferred_2d_draw_map));
+
+      auto falling_anims = std::make_unique<AnimConcurrent>(nullptr);
+      for (int i = 0; i < ANIM_FALLING_AMT; ++i) {
+        falling_anims->push_anim(std::make_unique<AnimFalling2D>(
+            A3F{p2_pos.x, p2_pos.y, 0.0F}, A4C{255, 200, 200, 255},
+            &spriteSheet, p2_dims, i < ANIM_FALLING_OPP_THRESHOLD,
+            &deferred_2d_draw_map));
+      }
+      seqAnim->push_anim(std::move(falling_anims));
     } break;
     case 0:
     default:
index 8f799a125ab283957cac748fc983b7dc26bd1a7b..54beff0be87a4ecd3d71133049449de3f36f5b95 100644 (file)
@@ -71,6 +71,9 @@ constexpr float BUTTON_COLOR_MAX = 180.0F;
 constexpr float SCREEN_SHAKE_DEFAULT_FACTOR = 7.0F;
 constexpr float SCREEN_SHAKE_TIME = 0.3F;
 
+constexpr int ANIM_FALLING_AMT = 7;
+constexpr int ANIM_FALLING_OPP_THRESHOLD = 5;
+
 // src/3D/
 
 constexpr float QM_ANGLE_TIMER_VARIANCE = 2.0F;