aboutsummaryrefslogtreecommitdiff
path: root/engines/cge/snail.h
blob: 309f9b5a2966b12fc5d0017d09ffdea721a60c43 (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
/* 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.
 *
 */

/*
 * This code is based on original Soltys source code
 * Copyright (c) 1994-1995 Janus B. Wisniewski and L.K. Avalon
 */

#ifndef		__SNAIL__
#define		__SNAIL__

#include	"cge/jbw.h"

#define		POCKET_X	174
#define		POCKET_Y	176
#define		POCKET_DX	18
#define		POCKET_DY	22
#define		POCKET_NX	8
#define		POCKET_NY	1

#define		POCKET_SX	8
#define		POCKET_SY	3

#define		SNINSERT(c,r,v,p)	Snail.InsCom(c,r,v,p)
#define		SNPOST(c,r,v,p)		Snail.AddCom(c,r,v,p)
#define		SNPOST_(c,r,v,p)	Snail_.AddCom(c,r,v,p)



typedef	struct	{ byte Horz, Vert; } BAR;



struct SCB
{
  byte *	Ptr;
  word		Siz;
  SCB *		Nxt;
};



enum	SNCOM	{ SNLABEL, SNPAUSE, SNWAIT, SNLEVEL,
		  SNHIDE, SNSAY, SNINF, SNTIME,
		  SNCAVE, SNKILL, SNRSEQ,
		  SNSEQ, SNSEND, SNSWAP, SNKEEP, SNGIVE,
		  SNIF, SNGAME, SNSETX0, SNSETY0, SNSLAVE,
		  SNSETXY, SNRELX, SNRELY, SNRELZ,
		  SNSETX, SNSETY, SNSETZ, SNTRANS, SNPORT,
		  SNNEXT, SNNNEXT, SNTNEXT, SNRNNEXT, SNRTNEXT,
		  SNRMNEAR, SNRMTAKE, SNFLAG, SNSETREF,
		  SNBACKPT, SNFLASH, SNLIGHT,
		  SNSETHB, SNSETVB,
		  SNWALK, SNREACH, SNCOVER, SNUNCOVER,
		  SNCLEAR, SNTALK, SNMOUSE,
		  SNSOUND, SNCOUNT,
		  SNEXEC, SNSTEP, SNZTRIM,
		  SNGHOST
		};

enum	SNLIST	{ NEAR, TAKE };

class SNAIL
{
  struct COM { SNCOM Com; int Ref; int Val; void * Ptr; } * SNList;
  byte Head, Tail;
  Boolean Turbo, Busy, TextDelay;
  word Pause;
public:
  static char * ComTxt[];
  Boolean TalkEnable;
  SNAIL (Boolean turbo = FALSE);
  ~SNAIL (void);
  void RunCom (void);
  void AddCom (SNCOM com, int ref = 0, int val = 0, void * ptr = NULL);
  void InsCom (SNCOM com, int ref = 0, int val = 0, void * ptr = NULL);
  Boolean Idle (void);
};





void	SelectPocket	(int n);
void	PocFul		(void);







extern	SCB		Scb;
extern	Boolean		Flag[4];
extern	Boolean		Game;
extern	Boolean		Dark;
extern	SNAIL		Snail;
extern	SNAIL		Snail_;
extern	int		Now;
extern	int		Lev;
extern	int		MaxCave;
extern	int		PocPtr;
extern	BAR		Barriers[];
extern	struct HXY { int X; int Y; } HeroXY[];

#endif