ManaPlus
src
resources
item
itemoptionslist.h
Go to the documentation of this file.
1
/*
2
* The ManaPlus Client
3
* Copyright (C) 2004-2009 The Mana World Development Team
4
* Copyright (C) 2009-2010 The Mana Developers
5
* Copyright (C) 2011-2019 The ManaPlus Developers
6
* Copyright (C) 2019-2021 Andrei Karas
7
*
8
* This file is part of The ManaPlus Client.
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22
*/
23
24
#ifndef RESOURCES_ITEM_ITEMOPTIONSLIST_H
25
#define RESOURCES_ITEM_ITEMOPTIONSLIST_H
26
27
#include "
const/resources/item/itemoptions.h
"
28
29
#include "
resources/item/itemoption.h
"
30
31
#include "
localconsts.h
"
32
33
struct
ItemOptionsList
final
34
{
35
explicit
ItemOptionsList
(
const
size_t
amount0) :
36
options
(
nullptr
),
37
amount
(amount0),
38
pointer
(0U)
39
{
40
options
=
new
ItemOption
[
amount
];
41
}
42
43
ItemOptionsList
() :
44
options
(
nullptr
),
45
amount
(
maxItemOptions
),
46
pointer
(0U)
47
{
48
options
=
new
ItemOption
[
amount
];
49
}
50
51
A_DELETE_COPY
(
ItemOptionsList
)
52
53
~ItemOptionsList
()
54
{
55
delete
[]
options
;
56
options
=
nullptr
;
57
}
58
59
void
add
(
const
uint16_t index,
60
const
uint16_t value)
61
{
62
if
(
pointer
>=
amount
)
63
return
;
64
options
[
pointer
].
index
= index;
65
options
[
pointer
].
value
= value;
66
pointer
++;
67
}
68
69
static
ItemOptionsList
*
copy
(
const
ItemOptionsList
*
const
options0)
70
{
71
if
(options0 ==
nullptr
)
72
return
nullptr
;
73
74
const
size_t
amount0 = options0->
amount
;
75
ItemOptionsList
*
const
obj =
new
ItemOptionsList
(amount0);
76
for
(
size_t
f = 0; f < amount0; f ++)
77
{
78
obj->
options
[f].
index
= options0->
options
[f].
index
;
79
obj->
options
[f].
value
= options0->
options
[f].
value
;
80
}
81
obj->
amount
= options0->
amount
;
82
obj->
pointer
= options0->
pointer
;
83
return
obj;
84
}
85
86
size_t
size
()
const
87
{
88
if
(
pointer
<
amount
)
89
return
pointer
;
90
return
amount
;
91
}
92
93
const
ItemOption
&
get
(
const
size_t
index)
const
94
{
95
return
options
[index];
96
}
97
98
ItemOption
*
options
;
99
size_t
amount
;
100
size_t
pointer
;
101
};
102
103
#endif
// RESOURCES_ITEM_ITEMOPTIONSLIST_H
itemoption.h
itemoptions.h
maxItemOptions
#define maxItemOptions
Definition:
itemoptions.h:25
localconsts.h
final
#define final
Definition:
localconsts.h:46
A_DELETE_COPY
#define A_DELETE_COPY(func)
Definition:
localconsts.h:53
nullptr
#define nullptr
Definition:
localconsts.h:45
ItemOption
Definition:
itemoption.h:28
ItemOption::index
uint16_t index
Definition:
itemoption.h:36
ItemOption::value
int16_t value
Definition:
itemoption.h:37
ItemOptionsList
Definition:
itemoptionslist.h:34
ItemOptionsList::add
void add(const uint16_t index, const uint16_t value)
Definition:
itemoptionslist.h:59
ItemOptionsList::get
const ItemOption & get(const size_t index) const
Definition:
itemoptionslist.h:93
ItemOptionsList::copy
static ItemOptionsList * copy(const ItemOptionsList *const options0)
Definition:
itemoptionslist.h:69
ItemOptionsList::pointer
size_t pointer
Definition:
itemoptionslist.h:100
ItemOptionsList::ItemOptionsList
ItemOptionsList()
Definition:
itemoptionslist.h:43
ItemOptionsList::~ItemOptionsList
~ItemOptionsList()
Definition:
itemoptionslist.h:53
ItemOptionsList::amount
size_t amount
Definition:
itemoptionslist.h:99
ItemOptionsList::ItemOptionsList
ItemOptionsList(const size_t amount0)
Definition:
itemoptionslist.h:35
ItemOptionsList::size
size_t size() const
Definition:
itemoptionslist.h:86
ItemOptionsList::options
ItemOption * options
Definition:
itemoptionslist.h:98
Generated on Wed Mar 17 2021 19:19:09 for ManaPlus by
1.9.1