OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
aiqueue.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <deque>
5
6#include "game/gamescript.h"
7#include "game/constants.h"
8
9class Npc;
10class Item;
11class WayPoint;
12class Serialize;
13
14class AiQueue {
15 public:
16 AiQueue();
17
18 struct AiAction final {
20 Npc* target=nullptr;
21 Npc* victim=nullptr;
22 const WayPoint* point =nullptr;
23 Item* item =nullptr;
25 int i0 =0;
26 int i1 =0;
27 std::string s0;
28 // Extended section, only for print-screen
29 int i2 =0;
30 std::string s1;
31 };
32
33 void save(Serialize& fout) const;
34 void load(Serialize& fin);
35
36 size_t size() const { return aiActions.size(); }
37 void clear();
38 void pushBack (AiAction&& a);
39 void pushFront(AiAction&& a);
40 AiAction pop();
41 int aiOutputOrderId() const;
42
43 void onWldItemRemoved(const Item& itm);
44
45 static AiAction aiLookAt(const WayPoint* to);
46 static AiAction aiLookAtNpc(Npc* other);
47 static AiAction aiStopLookAt();
48 static AiAction aiRemoveWeapon();
49 static AiAction aiTurnAway (Npc *other);
50 static AiAction aiTurnToNpc(Npc *other);
51 static AiAction aiWhirlToNpc(Npc *other);
52 static AiAction aiGoToNpc (Npc *other);
53 static AiAction aiGoToNextFp(std::string_view fp);
54 static AiAction aiStartState(ScriptFn stateFn, int behavior, Npc *other, Npc* victim, std::string_view wp);
55 static AiAction aiPlayAnim(std::string_view ani);
56 static AiAction aiPlayAnimBs(std::string_view ani, BodyState bs);
57 static AiAction aiWait(uint64_t dt);
58 static AiAction aiStandup();
59 static AiAction aiStandupQuick();
60 static AiAction aiGoToPoint(const WayPoint &to);
61 static AiAction aiEquipArmor(int32_t id);
62 static AiAction aiEquipBestArmor();
63 static AiAction aiEquipBestMeleeWeapon();
64 static AiAction aiEquipBestRangedWeapon();
65 static AiAction aiUseMob(std::string_view name,int st);
66 static AiAction aiUseItem(int32_t id);
67 static AiAction aiUseItemToState(int32_t id, int32_t state);
68 static AiAction aiTeleport(const WayPoint& to);
69 static AiAction aiDrawWeapon();
70 static AiAction aiReadyMeleeWeapon();
71 static AiAction aiReadyRangedWeapon();
72 static AiAction aiReadySpell(int32_t spell, int32_t mana);
73 static AiAction aiAttack();
74 static AiAction aiFlee();
75 static AiAction aiDodge();
76 static AiAction aiUnEquipWeapons();
77 static AiAction aiUnEquipArmor();
78 static AiAction aiProcessInfo(Npc& other);
79 static AiAction aiOutput(Npc &to, std::string_view text, int order);
80 static AiAction aiOutputSvm(Npc &to, std::string_view text, int order);
81 static AiAction aiOutputSvmOverlay(Npc &to, std::string_view text, int order);
82 static AiAction aiStopProcessInfo(int order);
83 static AiAction aiContinueRoutine();
84 static AiAction aiAlignToFp();
85 static AiAction aiAlignToWp();
86 static AiAction aiSetNpcsToState(ScriptFn func, int32_t radius);
87 static AiAction aiSetWalkMode(WalkBit w);
88 static AiAction aiFinishingMove(Npc& other);
89 static AiAction aiTakeItem(Item& item);
90 static AiAction aiGotoItem(Item& item);
91 static AiAction aiPointAt(const WayPoint &to);
92 static AiAction aiPointAtNpc(Npc& other);
93 static AiAction aiStopPointAt();
94 static AiAction aiPrintScreen(int time, std::string_view font, int x,int y, std::string_view msg);
95
96 private:
97 std::deque<AiAction> aiActions;
98 };
99
void pushFront(AiAction &&a)
Definition aiqueue.cpp:47
int aiOutputOrderId() const
Definition aiqueue.cpp:61
static AiAction aiPlayAnimBs(std::string_view ani, BodyState bs)
Definition aiqueue.cpp:154
void onWldItemRemoved(const Item &itm)
Definition aiqueue.cpp:69
static AiAction aiTakeItem(Item &item)
Definition aiqueue.cpp:380
static AiAction aiReadyRangedWeapon()
Definition aiqueue.cpp:255
static AiAction aiEquipBestRangedWeapon()
Definition aiqueue.cpp:207
static AiAction aiFlee()
Definition aiqueue.cpp:275
static AiAction aiAlignToWp()
Definition aiqueue.cpp:352
static AiAction aiUseMob(std::string_view name, int st)
Definition aiqueue.cpp:213
AiQueue()
Definition aiqueue.cpp:6
static AiAction aiUseItemToState(int32_t id, int32_t state)
Definition aiqueue.cpp:228
static AiAction aiGotoItem(Item &item)
Definition aiqueue.cpp:387
static AiAction aiRemoveWeapon()
Definition aiqueue.cpp:95
static AiAction aiDrawWeapon()
Definition aiqueue.cpp:243
static AiAction aiStopLookAt()
Definition aiqueue.cpp:89
static AiAction aiLookAtNpc(Npc *other)
Definition aiqueue.cpp:82
static AiAction aiPointAtNpc(Npc &other)
Definition aiqueue.cpp:401
static AiAction aiAttack()
Definition aiqueue.cpp:269
static AiAction aiWhirlToNpc(Npc *other)
Definition aiqueue.cpp:115
static AiAction aiTurnAway(Npc *other)
Definition aiqueue.cpp:101
static AiAction aiPointAt(const WayPoint &to)
Definition aiqueue.cpp:394
void clear()
Definition aiqueue.cpp:33
static AiAction aiStartState(ScriptFn stateFn, int behavior, Npc *other, Npc *victim, std::string_view wp)
Definition aiqueue.cpp:136
static AiAction aiTurnToNpc(Npc *other)
Definition aiqueue.cpp:108
static AiAction aiUnEquipArmor()
Definition aiqueue.cpp:293
static AiAction aiReadyMeleeWeapon()
Definition aiqueue.cpp:249
static AiAction aiPrintScreen(int time, std::string_view font, int x, int y, std::string_view msg)
Definition aiqueue.cpp:414
static AiAction aiOutputSvmOverlay(Npc &to, std::string_view text, int order)
Definition aiqueue.cpp:324
static AiAction aiReadySpell(int32_t spell, int32_t mana)
Definition aiqueue.cpp:261
static AiAction aiDodge()
Definition aiqueue.cpp:281
static AiAction aiSetNpcsToState(ScriptFn func, int32_t radius)
Definition aiqueue.cpp:358
static AiAction aiUseItem(int32_t id)
Definition aiqueue.cpp:221
static AiAction aiUnEquipWeapons()
Definition aiqueue.cpp:287
static AiAction aiLookAt(const WayPoint *to)
Definition aiqueue.cpp:75
static AiAction aiEquipBestArmor()
Definition aiqueue.cpp:195
static AiAction aiStandup()
Definition aiqueue.cpp:169
void pushBack(AiAction &&a)
Definition aiqueue.cpp:37
static AiAction aiProcessInfo(Npc &other)
Definition aiqueue.cpp:299
static AiAction aiTeleport(const WayPoint &to)
Definition aiqueue.cpp:236
AiAction pop()
Definition aiqueue.cpp:55
static AiAction aiOutputSvm(Npc &to, std::string_view text, int order)
Definition aiqueue.cpp:315
void save(Serialize &fout) const
Definition aiqueue.cpp:9
void load(Serialize &fin)
Definition aiqueue.cpp:20
static AiAction aiSetWalkMode(WalkBit w)
Definition aiqueue.cpp:366
static AiAction aiContinueRoutine()
Definition aiqueue.cpp:340
static AiAction aiGoToNpc(Npc *other)
Definition aiqueue.cpp:122
static AiAction aiGoToPoint(const WayPoint &to)
Definition aiqueue.cpp:181
static AiAction aiAlignToFp()
Definition aiqueue.cpp:346
static AiAction aiWait(uint64_t dt)
Definition aiqueue.cpp:162
static AiAction aiEquipArmor(int32_t id)
Definition aiqueue.cpp:188
static AiAction aiFinishingMove(Npc &other)
Definition aiqueue.cpp:373
static AiAction aiGoToNextFp(std::string_view fp)
Definition aiqueue.cpp:129
static AiAction aiStopProcessInfo(int order)
Definition aiqueue.cpp:333
static AiAction aiEquipBestMeleeWeapon()
Definition aiqueue.cpp:201
static AiAction aiStopPointAt()
Definition aiqueue.cpp:408
static AiAction aiPlayAnim(std::string_view ani)
Definition aiqueue.cpp:147
static AiAction aiStandupQuick()
Definition aiqueue.cpp:175
size_t size() const
Definition aiqueue.h:36
static AiAction aiOutput(Npc &to, std::string_view text, int order)
Definition aiqueue.cpp:306
Definition item.h:14
Definition npc.h:25
WalkBit
Definition constants.h:209
Action
Definition constants.h:341
@ AI_None
Definition constants.h:342
BodyState
Definition constants.h:140
const WayPoint * point
Definition aiqueue.h:22
std::string s1
Definition aiqueue.h:30
ScriptFn func
Definition aiqueue.h:24
std::string s0
Definition aiqueue.h:27