Adonthell
0.4
Main Page
Related Pages
Classes
Files
File List
File Members
map_event.cc
Go to the documentation of this file.
1
/*
2
$Id: map_event.cc,v 1.4 2003/01/20 20:18:43 ksterker Exp $
3
4
Copyright (C) 2002/2003 Kai Sterker <kaisterker@linuxgames.com>
5
Part of the Adonthell Project http://adonthell.linuxgames.com
6
7
This program is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License.
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY.
11
12
See the COPYING file for more details.
13
*/
14
15
/**
16
* @file map_event.cc
17
*
18
* @author Kai Sterker
19
* @brief Implements the different map events.
20
*/
21
22
#include "
map_event.h
"
23
24
// constructor
25
map_event::map_event
() :
event
()
26
{
27
submap
=
x
=
y
=
dir
=
map
= -1;
28
c
= NULL;
29
}
30
31
// compare two map events
32
bool
map_event::equals
(
const
event
* e)
33
{
34
// we know that we've got a map_event :)
35
map_event
*t = (
map_event
*) e;
36
37
if
(
submap
!= -1 && t->
submap
!=
submap
)
return
false
;
38
if
(
x
!= -1 && t->
x
!=
x
)
return
false
;
39
if
(
y
!= -1 && t->
y
!=
y
)
return
false
;
40
if
(
dir
!= -1 && t->
dir
!=
dir
)
return
false
;
41
if
(
map
!= -1 && t->
map
!=
map
)
return
false
;
42
if
(
c
&& t->
c
!=
c
)
return
false
;
43
44
return
true
;
45
}
46
47
// Execute map event's script
48
s_int32
map_event::execute
(
const
event
* e)
49
{
50
switch
(
Action
)
51
{
52
case
ACTION_SCRIPT:
53
{
54
map_event
*t = (
map_event
*) e;
55
56
PyObject *args = Py_BuildValue (
"(i, i, i, i, s)"
,
57
t->
submap
, t->
x
, t->
y
, t->
dir
, t->
c
->
get_id
().c_str ());
58
59
Script
->
run
(args);
60
61
Py_DECREF (args);
62
break
;
63
}
64
65
case
ACTION_PYFUNC:
66
{
67
PyFunc
->
callback_func0
();
68
break
;
69
}
70
71
case
ACTION_CPPFUNC:
72
{
73
Callback
();
74
break
;
75
}
76
77
default
:
break
;
78
}
79
80
return
do_repeat
();
81
}
82
83
// Load a map event from file
84
bool
map_event::get_state
(
igzstream
& f)
85
{
86
event::get_state
(f);
87
88
string
name;
89
string
s;
90
91
submap
<< f;
92
x
<< f;
93
y
<< f;
94
95
dir
<< f;
96
map
<< f;
97
98
s << f;
99
if
(s !=
""
)
c
= (
mapcharacter
*) data::characters[s.c_str ()];
100
else
c
= NULL;
101
102
return
true
;
103
}
104
105
// Save map event to file
106
void
map_event::put_state
(
ogzstream
& out)
const
107
{
108
event::put_state
(out);
109
110
submap
>> out;
111
x
>> out;
112
y
>> out;
113
dir
>> out;
114
map
>> out;
115
116
if
(
c
)
c
->
get_id
() >> out;
117
else
118
{
119
string
s =
""
;
120
s >> out;
121
}
122
}
123
124
// constructor
125
enter_event::enter_event
() :
map_event
()
126
{
127
Type
= ENTER_EVENT;
128
}
129
130
// constructor
131
leave_event::leave_event
() :
map_event
()
132
{
133
Type
= LEAVE_EVENT;
134
}
135
136
// constructor
137
action_event::action_event
() :
map_event
()
138
{
139
Type
= ACTION_EVENT;
140
}
src
map_event.cc
Generated by
1.8.1.2