[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Adonthell-commits] CVS: adonthell/src event_handler.cc,1.2,1.3 event_ha
From: |
Kai Sterker <address@hidden> |
Subject: |
[Adonthell-commits] CVS: adonthell/src event_handler.cc,1.2,1.3 event_handler.h,1.2,1.3 event_handler_base.h,1.2,1.3 gamedata.cc,1.20,1.21 gamedate.cc,1.2,1.3 gamedate.h,1.2,1.3 main.cc,1.50,1.51 map_event_handler.cc,1.1,1.2 map_event_handler.h,1.1,1.2 time_event.h,1.2,1.3 time_event_handler.cc,1.2,1.3 time_event_handler.h,1.2,1.3 |
Date: |
Sat, 10 Aug 2002 08:18:24 -0400 |
Update of /cvsroot/adonthell/adonthell/src
In directory subversions:/tmp/cvs-serv32117
Modified Files:
event_handler.cc event_handler.h event_handler_base.h
gamedata.cc gamedate.cc gamedate.h main.cc
map_event_handler.cc map_event_handler.h time_event.h
time_event_handler.cc time_event_handler.h
Log Message:
CHANGED gametime stuff, so that the smallest unit is 1/10 minute. As a result,
time_events are raised more often
FIXED some slight bugs in the event system
ADDED cleanup method to event_handler
Index: event_handler.cc
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/event_handler.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** event_handler.cc 9 Aug 2002 20:01:26 -0000 1.2
--- event_handler.cc 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 55,62 ****
}
// Clear the registered handlers
void event_handler::cleanup ()
{
! for (int i; i < MAX_EVENTS; i++)
if (Handler[i] != NULL)
delete Handler[i];
--- 55,70 ----
}
+ // cleanup
+ void event_handler::clear ()
+ {
+ for (int i = 0; i < MAX_EVENTS; i++)
+ if (Handler[i] != NULL)
+ Handler[i]->clear ();
+ }
+
// Clear the registered handlers
void event_handler::cleanup ()
{
! for (int i = 0; i < MAX_EVENTS; i++)
if (Handler[i] != NULL)
delete Handler[i];
Index: event_handler.h
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/event_handler.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** event_handler.h 9 Aug 2002 20:01:26 -0000 1.2
--- event_handler.h 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 41,52 ****
/**
! * Delete the event handlers.
*/
static void cleanup ();
/**
! * Registers an event.
*
! * @param ev pointer to the event to register.
*/
static void register_event (event* ev)
--- 41,57 ----
/**
! * Delete the %event handlers.
*/
static void cleanup ();
+ /**
+ * Remove all events from all handlers
+ */
+ static void clear ();
+
/**
! * Registers an %event.
*
! * @param ev pointer to the %event to register.
*/
static void register_event (event* ev)
***************
*** 56,62 ****
/**
! * Unregister an event.
*
! * @param ev pointer to the event to unregister.
*/
static void remove_event (event* ev)
--- 61,67 ----
/**
! * Unregister an %event.
*
! * @param ev pointer to the %event to unregister.
*/
static void remove_event (event* ev)
***************
*** 66,72 ****
/**
! * Check if an event corresponding to ev exists, and execute it.
*
! * @param ev event to raise.
*/
static void raise_event (const event& ev)
--- 71,77 ----
/**
! * Check if an %event corresponding to ev exists, and execute it.
*
! * @param ev %event to raise.
*/
static void raise_event (const event& ev)
***************
*** 77,81 ****
private:
/**
! * A list of the actual event handlers
*/
static event_handler_base* Handler[MAX_EVENTS];
--- 82,86 ----
private:
/**
! * A list of the actual %event handlers
*/
static event_handler_base* Handler[MAX_EVENTS];
Index: event_handler_base.h
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/event_handler_base.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** event_handler_base.h 9 Aug 2002 20:01:26 -0000 1.2
--- event_handler_base.h 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 41,62 ****
virtual ~event_handler_base () {}
/**
! * Registers an event.
*
! * @param ev pointer to the event to register.
*/
virtual void register_event (event* ev) = 0;
/**
! * Unregister an event.
*
! * @param ev pointer to the event to unregister.
*/
virtual void remove_event (event* ev) = 0;
/**
! * Check if an event corresponding to ev exists, and execute it.
*
! * @param ev event to raise.
*/
virtual void raise_event (const event& ev) = 0;
--- 41,67 ----
virtual ~event_handler_base () {}
+ /**
+ * Cleamup. Removes all events registered with the handler.
+ */
+ virtual void clear () = 0;
+
/**
! * Registers an %event.
*
! * @param ev pointer to the %event to register.
*/
virtual void register_event (event* ev) = 0;
/**
! * Unregister an %event.
*
! * @param ev pointer to the %event to unregister.
*/
virtual void remove_event (event* ev) = 0;
/**
! * Check if an %event corresponding to ev exists, and execute it.
*
! * @param ev %event to raise.
*/
virtual void raise_event (const event& ev) = 0;
Index: gamedata.cc
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/gamedata.cc,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -r1.20 -r1.21
*** gamedata.cc 9 Aug 2002 20:01:26 -0000 1.20
--- gamedata.cc 10 Aug 2002 12:18:21 -0000 1.21
***************
*** 34,37 ****
--- 34,38 ----
#include "gamedata.h"
#include "python_class.h"
+ #include "event_handler.h"
// File format versions of the various data files
***************
*** 563,566 ****
for (itq = data::quests.begin (); itq != data::quests.end (); itq++)
delete itq->second;
! data::quests.clear ();
}
--- 564,570 ----
for (itq = data::quests.begin (); itq != data::quests.end (); itq++)
delete itq->second;
! data::quests.clear ();
!
! // remove any events that are left over
! event_handler::clear ();
}
Index: gamedate.cc
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/gamedate.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** gamedate.cc 9 Aug 2002 20:01:26 -0000 1.2
--- gamedate.cc 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 35,38 ****
--- 35,40 ----
void gamedate::update ()
{
+ static float tenth_minute = gametime::minute () / 10.0;
+
// fts contains the number of cycles that passed since the last
// call to gamedate::update
***************
*** 40,46 ****
// check whether a in-game minute has passed
! while (Ticks >= gametime::minute ())
{
! Ticks -= gametime::minute ();
Time++;
--- 42,48 ----
// check whether a in-game minute has passed
! while (Ticks >= tenth_minute)
{
! Ticks -= tenth_minute;
Time++;
***************
*** 76,80 ****
{
// how many minutes make one day
! static u_int day_in_minutes = 60 * HOURS_PER_DAY;
return Time / day_in_minutes;
--- 78,82 ----
{
// how many minutes make one day
! static u_int day_in_minutes = 600 * HOURS_PER_DAY;
return Time / day_in_minutes;
***************
*** 84,88 ****
u_int16 gamedate::hour ()
{
! return (Time / 60) % HOURS_PER_DAY;
}
--- 86,90 ----
u_int16 gamedate::hour ()
{
! return (Time / 600) % HOURS_PER_DAY;
}
***************
*** 90,94 ****
u_int16 gamedate::minute ()
{
! return Time % 60;
}
--- 92,96 ----
u_int16 gamedate::minute ()
{
! return Time % 600;
}
***************
*** 96,100 ****
u_int32 gamedate::parse_time (const std::string & time)
{
! u_int32 minutes = 0, number = 0;
char num[2] = "0";
--- 98,102 ----
u_int32 gamedate::parse_time (const std::string & time)
{
! u_int32 t_minutes = 0, number = 0;
char num[2] = "0";
***************
*** 108,112 ****
}
// got a letter
! else
{
switch (time[i])
--- 110,114 ----
}
// got a letter
! else if (isalpha (time[i]))
{
switch (time[i])
***************
*** 115,119 ****
case 'w':
{
! minutes += number * DAYS_PER_WEEK * HOURS_PER_DAY * 60;
break;
}
--- 117,121 ----
case 'w':
{
! t_minutes += number * DAYS_PER_WEEK * HOURS_PER_DAY * 600;
break;
}
***************
*** 121,125 ****
case 'd':
{
! minutes += number * HOURS_PER_DAY * 60;
break;
}
--- 123,127 ----
case 'd':
{
! t_minutes += number * HOURS_PER_DAY * 600;
break;
}
***************
*** 127,131 ****
case 'h':
{
! minutes += number * 60;
break;
}
--- 129,133 ----
case 'h':
{
! t_minutes += number * 600;
break;
}
***************
*** 133,137 ****
case 'm':
{
! minutes += number;
break;
}
--- 135,145 ----
case 'm':
{
! t_minutes += number * 10;
! break;
! }
! // 10th minutes
! case 't':
! {
! t_minutes += number;
break;
}
***************
*** 148,151 ****
}
! return minutes;
}
--- 156,159 ----
}
! return t_minutes;
}
Index: gamedate.h
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/gamedate.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** gamedate.h 9 Aug 2002 20:01:26 -0000 1.2
--- gamedate.h 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 56,60 ****
/**
* Get the current %gametime.
! * @return %gametime in minutes since start of the game.
*/
static u_int32 time () { return Time; }
--- 56,60 ----
/**
* Get the current %gametime.
! * @return %gametime in 1/10 minutes since start of the game.
*/
static u_int32 time () { return Time; }
***************
*** 84,88 ****
* convert the time string to gametime minutes. The time string
* has the format "<number>X", where X may be (w)eek, (d)ay,
! * (h)our or (m)inute. Several such pairs can be concatenated.
* Valid examples are "1w1d1h", "30m1h" but also "1h1h".
*
--- 84,89 ----
* convert the time string to gametime minutes. The time string
* has the format "<number>X", where X may be (w)eek, (d)ay,
! * (h)our, (m)inute or (t)enth minute. Several such pairs can be
! * concatenated.
* Valid examples are "1w1d1h", "30m1h" but also "1h1h".
*
***************
*** 107,114 ****
private:
#ifndef SWIG
! // Time spent in the game in gametime minutes
static u_int32 Time;
! // number of game cycles since the last gametime minute passed
static float Ticks;
#endif // SWIG
--- 108,115 ----
private:
#ifndef SWIG
! // Time spent in the game in 1/10 gametime minutes
static u_int32 Time;
! // number of game cycles since the last 1/10 gametime minute passed
static float Ticks;
#endif // SWIG
Index: main.cc
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/main.cc,v
retrieving revision 1.50
retrieving revision 1.51
diff -C2 -r1.50 -r1.51
*** main.cc 9 Aug 2002 20:01:26 -0000 1.50
--- main.cc 10 Aug 2002 12:18:21 -0000 1.51
***************
*** 185,188 ****
--- 185,191 ----
gamedata::cleanup ();
+ // cleanup event system
+ event_handler::cleanup ();
+
// cleanup data
delete data::engine;
Index: map_event_handler.cc
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/map_event_handler.cc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** map_event_handler.cc 9 Aug 2002 20:01:26 -0000 1.1
--- map_event_handler.cc 10 Aug 2002 12:18:21 -0000 1.2
***************
*** 24,27 ****
--- 24,33 ----
#include "map_event_handler.h"
+ // cleanup
+ void map_event_handler::clear ()
+ {
+ Events.clear ();
+ }
+
// See whether a matching event is registered and execute the
// according script(s)
Index: map_event_handler.h
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/map_event_handler.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** map_event_handler.h 9 Aug 2002 20:01:26 -0000 1.1
--- map_event_handler.h 10 Aug 2002 12:18:21 -0000 1.2
***************
*** 36,39 ****
--- 36,44 ----
public:
/**
+ * Cleamup. Removes all events registered with the handler.
+ */
+ void clear ();
+
+ /**
* Register a map %event with the %event handler. The %event
* needs to be removed before it can be safely deleted.
Index: time_event.h
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/time_event.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** time_event.h 9 Aug 2002 20:01:26 -0000 1.2
--- time_event.h 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 46,52 ****
*
* @param time The time when the %event should be raised. The string
! * specifies week, day, hour and minute in the format
! * "<number>w<number>d<number>h<number>m". If a number is 0, it
! * can be omitted.
* @param absolute Decides whether the given time is relative from now
* on, or an absolute time
--- 46,52 ----
*
* @param time The time when the %event should be raised. The string
! * specifies week, day, hour, minute and 1/10 minute in the format
! * "<number>w<number>d<number>h<number>m<number>t". If a number is
! * 0, it can be omitted.
* @param absolute Decides whether the given time is relative from now
* on, or an absolute time
***************
*** 139,143 ****
* executed.
*
! * @return the "alarm" time in %gametime minutes.
*/
u_int32 time () const
--- 139,143 ----
* executed.
*
! * @return the "alarm" time in 1/10 %gametime minutes.
*/
u_int32 time () const
Index: time_event_handler.cc
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/time_event_handler.cc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** time_event_handler.cc 9 Aug 2002 20:01:26 -0000 1.2
--- time_event_handler.cc 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 25,28 ****
--- 25,34 ----
#include "time_event_handler.h"
+ // cleanup
+ void time_event_handler::clear ()
+ {
+ Events.clear ();
+ }
+
// See whether a matching event is registered and execute the
// according script(s)
Index: time_event_handler.h
===================================================================
RCS file: /cvsroot/adonthell/adonthell/src/time_event_handler.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** time_event_handler.h 9 Aug 2002 20:01:26 -0000 1.2
--- time_event_handler.h 10 Aug 2002 12:18:21 -0000 1.3
***************
*** 38,41 ****
--- 38,46 ----
public:
/**
+ * Cleamup. Removes all events registered with the handler.
+ */
+ void clear ();
+
+ /**
* Register a time %event with the %event handler. It is inserted
* into the vector of registered events depending on its "alarm"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Adonthell-commits] CVS: adonthell/src event_handler.cc,1.2,1.3 event_handler.h,1.2,1.3 event_handler_base.h,1.2,1.3 gamedata.cc,1.20,1.21 gamedate.cc,1.2,1.3 gamedate.h,1.2,1.3 main.cc,1.50,1.51 map_event_handler.cc,1.1,1.2 map_event_handler.h,1.1,1.2 time_event.h,1.2,1.3 time_event_handler.cc,1.2,1.3 time_event_handler.h,1.2,1.3,
Kai Sterker <address@hidden> <=
- Prev by Date:
[Adonthell-commits] CVS: wastesedge mapengine.data,1.11,1.12
- Next by Date:
[Adonthell-commits] CVS: wastesedge/scripts/schedules/mapcharacters schedule.py,NONE,1.1 alek.py,1.2,1.3 bjarn.py,1.3,1.4 erek.py,1.4,1.5 fellnir.py,1.3,1.4 frostbloom.py,1.3,1.4 janesta.py,1.2,1.3 jelom.py,1.2,1.3 lucia.py,1.4,1.5 oliver.py,1.4,1.5 orloth.py,1.3,1.4 sarin.py,1.2,1.3 talan.py,1.2,1.3 tristan.py,1.3,1.4
- Previous by thread:
[Adonthell-commits] CVS: wastesedge mapengine.data,1.11,1.12
- Next by thread:
[Adonthell-commits] CVS: wastesedge/scripts/schedules/mapcharacters schedule.py,NONE,1.1 alek.py,1.2,1.3 bjarn.py,1.3,1.4 erek.py,1.4,1.5 fellnir.py,1.3,1.4 frostbloom.py,1.3,1.4 janesta.py,1.2,1.3 jelom.py,1.2,1.3 lucia.py,1.4,1.5 oliver.py,1.4,1.5 orloth.py,1.3,1.4 sarin.py,1.2,1.3 talan.py,1.2,1.3 tristan.py,1.3,1.4
- Index(es):