-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathClipBoard.cpp
116 lines (98 loc) · 1.81 KB
/
ClipBoard.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "ClipBoard.h"
ClipBoard::ClipBoard()
{
}
ClipBoard::~ClipBoard()
{
Clear();
}
void ClipBoard::Clear()
{
m_npcItmes.clear();
m_objItems.clear();
}
void ClipBoard::ClearNpcs()
{
m_npcItmes.clear();
}
void ClipBoard::ClearObjs()
{
m_objItems.clear();
}
void ClipBoard::Add(const NpcItem* item)
{
if(item == nullptr) return;
NpcItem ni;
ni.CopyFrom(item);
ni.NpcStand = nullptr;
ni.KeyValues["FixedPos"] = wxEmptyString;
m_npcItmes.push_back(ni);
}
void ClipBoard::Add(const ObjItem* item)
{
if(item == nullptr) return;
ObjItem oi;
oi.CopyFrom(item);
oi.ObjCommon = nullptr;
m_objItems.push_back(oi);
}
bool ClipBoard::HasNpc()
{
return m_npcItmes.size() > 0;
}
bool ClipBoard::HasObj()
{
return m_objItems.size() > 0;
}
size_t ClipBoard::NpcCount()
{
return m_npcItmes.size();
}
size_t ClipBoard::ObjCount()
{
return m_objItems.size();
}
std::vector<NpcItem>& ClipBoard::GetNpcItems()
{
return m_npcItmes;
}
std::vector<ObjItem>& ClipBoard::GetObjItems()
{
return m_objItems;
}
wxPoint ClipBoard::GetMinNpcTilePosition()
{
int x = 0, y = 0;
if(m_npcItmes.size() > 0)
{
x = m_npcItmes.front().MapX();
y = m_npcItmes.front().MapY();
for(auto it = m_npcItmes.begin(); it != m_npcItmes.end(); it++)
{
if((it->MapX() - x) + (it->MapY() - y) < 0)
{
x = it->MapX();
y = it->MapY();
}
}
}
return wxPoint(x, y);
}
wxPoint ClipBoard::GetMinObjTilePostion()
{
int x = 0, y = 0;
if(m_objItems.size() > 0)
{
x = m_objItems.front().MapX();
y = m_objItems.front().MapY();
for(auto it = m_objItems.begin(); it != m_objItems.end(); it++)
{
if((it->MapX() - x) + (it->MapY() - y) < 0)
{
x = it->MapX();
y = it->MapY();
}
}
}
return wxPoint(x, y);
}