forked from alpet83/Xray-Research
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ArtifactMerger.h
92 lines (66 loc) · 3.05 KB
/
ArtifactMerger.h
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
// ArtefactMerger.h
// ArtefactMerger - устройство для получения новых артефактов
// из имеющихся
#pragma once
#include "inventory_item.h"
#include "Artifact.h"
#include "MercuryBall.h"
#include "GraviArtifact.h"
#include "BlackDrops.h"
#include "Needles.h"
#include "xrmessages.h"
#include "script_export_space.h"
DEF_LIST (ARTIFACT_LIST, CArtefact*);
// void SetArtefactMergeFunctor(const luabind::functor<void> &artifactMergeFunctor);
class CArtefactMerger : public CInventoryItem
{
typedef CInventoryItem inherited;
public:
CArtefactMerger(void);
virtual ~CArtefactMerger(void);
virtual BOOL net_Spawn (LPVOID DC);
virtual void Load (LPCSTR section);
virtual void net_Destroy ();
virtual void OnH_A_Chield ();
virtual void OnH_B_Independent ();
virtual void shedule_Update (u32 dt);
virtual void UpdateCL ();
virtual void renderable_Render ();
//функции для работы со списком артефактов
void AddArtefact(CArtefact* pArtefact);
void RemoveArtefact(CArtefact* pArtefact);
void RemoveAllArtefacts();
//выполняет операцию слияния над теми
//артефктами, что находятся в списке
//(вызов скриптованной процедуры)
bool PerformMerge();
//количество различных артефактов в списке
template<typename A> int GetArtefactNum();
int GetMercuryBallNum() ;
int GetGraviArtefactNum() ;
int GetBlackDropsNum() ;
int GetNeedlesNum() ;
//удаление определенного числа артефактов некоторого типа из списка
template<typename A> void DestroyArtefacts(int num_to_destroy);
void DestroyMercuryBall(int num_to_destroy) ;
void DestroyGraviArtefact(int num_to_destroy) ;
void DestroyBlackDrops(int num_to_destroy) ;
void DestroyNeedles(int num_to_destroy) ;
//добавление определенного числа новых артефактов
void SpawnArtefact(const char* af_section);
void SpawnMercuryBall() {SpawnArtefact("af_mercury_ball");}
void SpawnGraviArtefact() {SpawnArtefact("af_magnet");}
void SpawnBlackDrops() {SpawnArtefact("af_black_drops");}
void SpawnNeedles() {SpawnArtefact("af_needles");}
//список артефактов только что удаленных
ARTIFACT_LIST m_ArtefactDeletedList;
//только что появившихся
ARTIFACT_LIST m_ArtefactNewList;
protected:
//список артефактов помещенных в устройство
ARTIFACT_LIST m_ArtefactList;
DECLARE_SCRIPT_REGISTER_FUNCTION
};
add_to_type_list(CArtefactMerger)
#undef script_type_list
#define script_type_list save_type_list(CArtefactMerger)