adonthell-commits
[Top][All Lists]
Advanced

[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"





reply via email to

[Prev in Thread] Current Thread [Next in Thread]