-
Notifications
You must be signed in to change notification settings - Fork 0
/
Game_BattleAction.cpp
90 lines (74 loc) · 1.79 KB
/
Game_BattleAction.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Game_BattleAction.cpp
#include "Game_BattleAction.h"
// Game_BattleActionクラス
Game_BattleAction::Game_BattleAction(){
Clear();
}
// 代入演算子
Game_BattleAction &Game_BattleAction::operator=(const Game_BattleAction &action){
pActor = action.pActor;
pOpponent = action.pOpponent;
type = action.type;
flags = action.flags;
param = action.param;
return(*this); // ここは決まり文句。これにより s1=s2=s3; などといった記述が可能になる。
}
void Game_BattleAction::Clear(){
pActor = NULL;
pOpponent = NULL;
type = TYPE_UNDIFINED;
flags = 0;
param = 0;
}
void Game_BattleAction::ClearWithoutUnit(){
type = TYPE_UNDIFINED;
flags = 0;
param = 0;
}
// Game_BattleActionStackクラス
Game_BattleActionStack::Game_BattleActionStack():data(){
cntIndex = 0;
}
Game_BattleAction Game_BattleActionStack::GetCntData(){
if(cntIndex < 0 || cntIndex > MAX_BATTLEACTIONSTACK) return data[0];
return data[cntIndex];
}
bool Game_BattleActionStack::Push(Game_BattleAction action){
if(cntIndex < MAX_BATTLEACTIONSTACK){
// 新しく積む
cntIndex++;
// 内容をそのまま代入?
data[cntIndex] = action;
}else{
return false;
}
return true;
}
Game_BattleAction Game_BattleActionStack::Pop(){
Game_BattleAction result;
if(cntIndex <= 0 || cntIndex > MAX_BATTLEACTIONSTACK){
// エラー
result = data[0];
}else{
cntIndex--;
result = data[cntIndex+1]; // さっきまで指していたデータ
data[cntIndex+1].Clear();
}
return result;
}
Game_BattleAction Game_BattleActionStack::Pop_NoRemove(){
Game_BattleAction result;
if(cntIndex <= 0 || cntIndex > MAX_BATTLEACTIONSTACK){
// エラー
result = data[0];
}else{
// インデックスをずらさずにデータを取り出す
result = data[cntIndex];
}
return result;
}
void Game_BattleActionStack::ClearAll(){
for(int n=0; n<=MAX_BATTLEACTIONSTACK; n++){
data[n].Clear();
}
}