aboutsummaryrefslogtreecommitdiff
path: root/engines/tinsel/inventory.h
blob: d83439c68f2fd00b286a88a0159a3b2e81ef819a (plain)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.

 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.

 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 * $URL$
 * $Id$
 *
 * Inventory related functions
 */

#ifndef TINSEL_INVENTORY_H	// prevent multiple includes
#define TINSEL_INVENTORY_H

#include "tinsel/dw.h"
#include "tinsel/events.h"	// for KEYEVENT, BUTEVENT

namespace Tinsel {

class Serializer;

enum {
	INV_OPEN	= -1,
	INV_CONV	= 0,
	INV_1		= 1,
	INV_2		= 2,
	INV_CONF	= 3,

	NUM_INV		= 4
};

/** structure of each inventory object */
struct INV_OBJECT {
	int32 id;		// inventory objects id
	SCNHANDLE hFilm;	// inventory objects animation film
	SCNHANDLE hScript;	// inventory objects event handling script
	int32 attribute;		// inventory object's attribute
};

void PopUpInventory(int invno);

enum CONFTYPE {
	SAVE, LOAD, QUIT, OPTION, RESTART, SOUND, CONTROLS, SUBT, TOPWIN
};

void PopUpConf(CONFTYPE type);


void Xmovement(int x);
void Ymovement(int y);

void ButtonToInventory(BUTEVENT be);

void KeyToInventory(KEYEVENT ke);


int WhichItemHeld(void);

void HoldItem(int item);
void DropItem(int item);
void AddToInventory(int invno, int icon, bool hold);
bool RemFromInventory(int invno, int icon);


void RegisterIcons(void *cptr, int num);

void idec_convw(SCNHANDLE text, int MaxContents, int MinWidth, int MinHeight,
			int StartWidth, int StartHeight, int MaxWidth, int MaxHeight);
void idec_inv1(SCNHANDLE text, int MaxContents, int MinWidth, int MinHeight,
			int StartWidth, int StartHeight, int MaxWidth, int MaxHeight);
void idec_inv2(SCNHANDLE text, int MaxContents, int MinWidth, int MinHeight,
			int StartWidth, int StartHeight, int MaxWidth, int MaxHeight);

bool InventoryActive(void);

void AddIconToPermanentDefaultList(int icon);

void convPos(int bpos);
void ConvPoly(HPOLYGON hp);
int convIcon(void);
void CloseDownConv(void);
void convHide(bool hide);
bool convHid(void);

enum {
	INV_NOICON		= -1,
	INV_CLOSEICON	= -2,
	INV_OPENICON	= -3,
	INV_HELDNOTIN	= -4
};

void ConvAction(int index);

void InventoryIconCursor(void);

void setInvWinParts(SCNHANDLE hf);
void setFlagFilms(SCNHANDLE hf);
void setConfigStrings(SCNHANDLE *tp);

int InvItem(int *x, int *y, bool update);
int InvItemId(int x, int y);

int InventoryPos(int num);

bool IsInInventory(int object, int invnum);

void KillInventory(void);

void invObjectFilm(int object, SCNHANDLE hFilm);

void syncInvInfo(Serializer &s);

int InvGetLimit(int invno);
void InvSetLimit(int invno, int n);
void InvSetSize(int invno, int MinWidth, int MinHeight,
		int StartWidth, int StartHeight, int MaxWidth, int MaxHeight);

int WhichInventoryOpen(void);

bool IsTopWindow(void);
bool IsConfWindow(void);
bool IsConvWindow(void);

} // end of namespace Tinsel

#endif /* TINSEL_INVENTRY_H */