summaryrefslogtreecommitdiff
path: root/character.c
diff options
context:
space:
mode:
authorOlivier Gayot <duskcoder@gmail.com>2015-01-08 19:45:03 +0100
committerOlivier Gayot <duskcoder@gmail.com>2015-01-08 19:45:03 +0100
commitbfdf279cac51fe8945e59cd566cba2cb2efcffce (patch)
treec2310a297cb9d48814009142ea92cc31bd787fee /character.c
parentfc3baf853b4429cf012f6d77b43d74872dc5ca11 (diff)
move some functions and headers so that the compilation is quicker
Signed-off-by: Olivier Gayot <duskcoder@gmail.com>
Diffstat (limited to 'character.c')
-rw-r--r--character.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/character.c b/character.c
new file mode 100644
index 0000000..4a3a260
--- /dev/null
+++ b/character.c
@@ -0,0 +1,58 @@
+#include <SDL/SDL.h>
+#include "players.h"
+#include "blits.h"
+
+static void incr_hp(SURFACES *surfaces, POSITIONS *positions, struct character_t *target, int incr)
+{
+ SDL_Color color;
+
+ target->hp += incr;
+
+ if (target->hp <= 0) {
+ target->hp = 0;
+ target->alive = false;
+ } else if (target->hp > target->max_hp) {
+ target->hp = target->max_hp;
+ }
+
+ color = (incr < 0) ? (SDL_Color){0xe0, 0x00, 0x00, 0x00} : (SDL_Color){0x00, 0xe0, 0x00, 0x00};
+
+ display_incr(surfaces, positions, target, (incr >= 0) ? incr : -incr, color);
+}
+
+static void incr_mp(SURFACES *surfaces, POSITIONS *positions, struct character_t *target, int incr)
+{
+ SDL_Color color;
+
+ target->hp += incr;
+
+ if (target->mp <= 0) {
+ target->mp = 0;
+ } else if (target->mp > target->max_mp) {
+ target->mp = target->max_mp;
+ }
+
+ color = (incr < 0) ? (SDL_Color){0xe0, 0x00, 0x00, 0x00} : (SDL_Color){0x00, 0xe0, 0x00, 0x00};
+
+ display_incr(surfaces, positions, target, (incr >= 0) ? incr : -incr, color);
+}
+
+void damage_target_hp(SURFACES *surfaces, POSITIONS *positions, struct character_t *target, int damages)
+{
+ incr_hp(surfaces, positions, target, -damages);
+}
+
+void cure_target_hp(SURFACES *surfaces, POSITIONS *positions, struct character_t *target, int cure)
+{
+ incr_hp(surfaces, positions, target, cure);
+}
+
+void damage_target_mp(SURFACES *surfaces, POSITIONS *positions, struct character_t *target, int damages)
+{
+ incr_mp(surfaces, positions, target, -damages);
+}
+
+void cure_target_mp(SURFACES *surfaces, POSITIONS *positions, struct character_t *target, int cure)
+{
+ incr_mp(surfaces, positions, target, cure);
+}