-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathgroup.h
42 lines (36 loc) · 1.23 KB
/
group.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
/*
* Copyright (c) 2010-2015, Argon Sun (Fluorohydride)
* Copyright (c) 2019-2024, Edoardo Lolletti (edo9300) <[email protected]>
*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
#ifndef GROUP_H_
#define GROUP_H_
#include <set>
#include <vector>
#include "common.h"
#include "containers_fwd.h"
#include "lua_obj.h"
class card;
class duel;
class group : public lua_obj_helper<LuaParam::GROUP> {
public:
card_set container;
card_set::iterator it;
uint8_t is_readonly{ 0 };
bool is_iterator_dirty{ true };
bool has_card(card* c) const {
return container.find(c) != container.end();
}
explicit group(duel* pd) : lua_obj_helper(pd) {}
group(duel* pd, card* pcard) : lua_obj_helper(pd), container({ pcard }) {}
group(duel* pd, const card_set& cset) : lua_obj_helper(pd), container(cset) {}
group(duel* pd, card_set&& cset) : lua_obj_helper(pd), container(std::move(cset)) {}
group(duel* pd, group* pgroup) : group(pd, pgroup->container) {}
template<typename Iter>
group(duel* pd, const Iter begin, const Iter end) : lua_obj_helper(pd), container(begin, end) {}
group(duel* pd, const std::vector<card*>& vcard) : group(pd, vcard.begin(), vcard.end()) {}
group(duel* pd, lua_obj* pobj);
~group() = default;
};
#endif /* GROUP_H_ */