summaryrefslogtreecommitdiff
path: root/lib/standard.cpp
diff options
context:
space:
mode:
authorRitabrata Das <[email protected]>2026-09-09 21:07:21 +0530
committerRitabrata Das <[email protected]>2026-09-09 21:07:21 +0530
commitffd968a26826108ca9fb23d46ed5789260852eb7 (patch)
tree3861d08dae1c28f547952dbcc16e04ae7b5286b5 /lib/standard.cpp
intial commit
Diffstat (limited to 'lib/standard.cpp')
-rw-r--r--lib/standard.cpp93
1 files changed, 93 insertions, 0 deletions
diff --git a/lib/standard.cpp b/lib/standard.cpp
new file mode 100644
index 0000000..35dfa9f
--- /dev/null
+++ b/lib/standard.cpp
@@ -0,0 +1,93 @@
+#include "standard.hpp"
+#include "gameState.hpp"
+#include <cstdlib>
+#include <cmath>
+#include <raylib.h>
+#include <raymath.h>
+
+constexpr float CARTESIAN_MIN = 0.0f;
+constexpr float CARTESIAN_MAX = 100.0f;
+constexpr float CARTESIAN_SCALE = 100.0f;
+
+float maxOfTwo(float a, float b) {
+ if (a > b) {return a;}
+ else {return b;}
+}
+
+float minOfTwo(float a, float b) {
+ if (a < b) {return a;}
+ else {return b;}
+}
+
+float genRandBw(float min,float max) {
+ return (((float)rand()/RAND_MAX)*(max-min))+min;
+}
+
+Vector2 rotatePoint(Vector2 point, Vector2 pivot, float angleDegree) {
+ float rad = angleDegree * DEG2RAD;
+ float s = sinf(rad);
+ float c = cosf(rad);
+ point.x -= pivot.x;
+ point.y -= pivot.y;
+ float xNew = point.x * c - point.y * s;
+ float yNew = point.x * s + point.y * c;
+ return (Vector2){ xNew + pivot.x, yNew + pivot.y };
+}
+
+Vector2 C2SProj(Vector2 cartesian_cordinates, Vector4 rectangle_space, Vector2 object_size,
+ Vector2 absolute_deviation_bias,bool use_clamp) {
+ /*Cartesian to Screen Projection */
+ float y_axis_length = rectangle_space.w - rectangle_space.y;
+ float x_axis_length = rectangle_space.z - rectangle_space.x;
+ float usable_width = maxOfTwo(0.0f, x_axis_length - object_size.x);
+ float usable_height = maxOfTwo(0.0f, y_axis_length - object_size.y);
+ float normalized_x;
+ float normalized_y;
+ if (use_clamp) {
+ normalized_x = Clamp(cartesian_cordinates.x, CARTESIAN_MIN, CARTESIAN_MAX)/CARTESIAN_SCALE;
+ normalized_y = Clamp(cartesian_cordinates.y, CARTESIAN_MIN, CARTESIAN_MAX)/CARTESIAN_SCALE;
+ } else {
+ normalized_x = cartesian_cordinates.x/CARTESIAN_SCALE;
+ normalized_y = cartesian_cordinates.y/CARTESIAN_SCALE;
+ }
+ float y_pos = (1 - normalized_y)*usable_height;
+ float x_pos = normalized_x*usable_width;
+ return {rectangle_space.x + x_pos + absolute_deviation_bias.x,
+ rectangle_space.y + y_pos + absolute_deviation_bias.y};
+}
+
+float S2CYaxis(float yValue, Vector4 rectangle_space) {
+ float y_axis_length = rectangle_space.w - rectangle_space.y;
+ return ((yValue/y_axis_length) * 100);
+}
+
+float S2CXaxis(float xValue, Vector4 rectangle_space) {
+ float x_axis_length = rectangle_space.z - rectangle_space.x;
+ return ((xValue/x_axis_length)*100);
+}
+
+void newGame(GameState& gs){
+ gs.gameScore = 0;
+ gs.paused = false;
+ gs.gameOver = false;
+ gs.dialogState = DIALOGUE_OFF;
+ gs.dialogueTimer = 0.0f;
+ gs.currentLineIndex = 0;
+ gs.visibleChar = 0;
+}
+
+bool returnTrueProbPerc(float percentageTrue){
+ float i = genRandBw(0, 1);
+ if (i < (percentageTrue/100)) {
+ return true;
+ }
+ return false;
+}
+
+Vector2 ScreenToVirtual(Vector2 screenPos, Vector2 offset, float scale)
+{
+ return Vector2{
+ (screenPos.x - offset.x) / scale,
+ (screenPos.y - offset.y) / scale
+ };
+}