CardGame
Rogue-like card videogame
Loading...
Searching...
No Matches
combatContext.h
Go to the documentation of this file.
1#ifndef COMBATCONTEXT_H
2#define COMBATCONTEXT_H
3
4#include "combatTarget.h"
5#include "deck/drawData.h"
6
7#include <optional>
8#include <string>
9#include <vector>
10
11class CombatSystem;
12class Entity;
13class DeckCombat;
14struct TurnData;
15struct DamageResult;
16
30{
31 public:
39 CombatContext(CombatSystem& combatSystem, Entity& actor, Entity& opponent,
40 DeckCombat& deckCombat, TurnData& turnData);
41
42 void setEffectMessage(std::vector<std::string>* effectMessage);
43 void resetEffectMessage();
44
53 void gainArmor(Target target, int amount);
54
63 void gainAttack(Target target, int amount);
64
65 DamageResult dealDamage(Target target, int amount, bool ignoreArmor = false);
66
67 void drawMultipleCardFromEffect(int amount);
68
69 std::optional<DrawData> getDrawData();
70
71 void gainActions(int amount);
72
73 // Enemy effects
74
75 void limitCardToPlay(int amount);
76 void takeCardHostage();
77
79 {
80 public:
81 EffectMessageScope(CombatContext& combatContext, std::vector<std::string>& effectMessage);
83
88
89 private:
90 CombatContext& m_combatContext;
91 };
92
93 private:
94 CombatSystem& m_combatSystem;
95 Entity& m_actor;
96 Entity& m_opponent;
97
98 DeckCombat& m_deckCombat;
99 TurnData& m_turnData;
100 std::optional<DrawData> m_drawData;
101
102 std::vector<std::string>* m_effectMessage;
103
110 Entity& resolveTarget(Target target);
111 const Entity& resolveTarget(Target target) const;
112
113 std::string messageTarget(Target target) const;
114};
115
116#endif // COMBATCONTEXT_H
Definition: combatContext.h:79
EffectMessageScope(EffectMessageScope &&)=delete
~EffectMessageScope()
Definition: combatContext.cpp:29
EffectMessageScope & operator=(const EffectMessageScope &)=delete
EffectMessageScope(const EffectMessageScope &)=delete
EffectMessageScope & operator=(EffectMessageScope &&)=delete
Execution context for resolving combat effects.
Definition: combatContext.h:30
void gainActions(int amount)
Definition: combatContext.cpp:141
void gainArmor(Target target, int amount)
Grants armor to the selected logical target.
Definition: combatContext.cpp:98
void resetEffectMessage()
Definition: combatContext.cpp:39
void gainAttack(Target target, int amount)
Grants attack to the selected logical target.
Definition: combatContext.cpp:107
DamageResult dealDamage(Target target, int amount, bool ignoreArmor=false)
Definition: combatContext.cpp:116
void takeCardHostage()
Definition: combatContext.cpp:168
void limitCardToPlay(int amount)
Definition: combatContext.cpp:150
void drawMultipleCardFromEffect(int amount)
Definition: combatContext.cpp:121
std::optional< DrawData > getDrawData()
Definition: combatContext.cpp:134
void setEffectMessage(std::vector< std::string > *effectMessage)
Definition: combatContext.cpp:34
Central authority for combat rules and state mutation.
Definition: combatSystem.h:18
Manages all card piles during a single combat.
Definition: deckCombat.h:38
Base class representing a combat-capable entity.
Definition: entity.h:18
Target
Logical target selector used during effect resolution.
Definition: combatTarget.h:14
Definition: combatEvents.h:22
Definition: matchData.h:22