
//--------------------------------
//********************************
//******** Class timer  **********
//********************************
//--------------------------------


//********************************
//********* Constructors *********
//********************************
var object_global_timer;
function timer()
{
   object_global_timer = this;  
   this.position  = new point();
   
   this.m_listener = new Array();
   this.timerId=0;   
}

function owk_timer_create() 
{ 

}

function owk_timer_push_back_listener(i_listener) 
{
   this.m_listener.push(i_listener);
}

function  owk_timer_tick() 
{
   for (var i=0; i<object_global_timer.m_listener.length; i++) 
   { 
      object_global_timer.m_listener[i].on_every_frame(object_global_timer); 
   } 
}

function owk_timer_frame_per_sec() 
{
   return this.m_frame_per_sec;
}

function owk_timer_set_frame_per_sec(i_frame_per_sec) 
{
   this.m_frame_per_sec = i_frame_per_sec;   
}

timer.prototype.tick = owk_timer_tick;
timer.prototype.frame_per_sec = owk_timer_frame_per_sec;
timer.prototype.set_frame_per_sec = owk_timer_set_frame_per_sec;
timer.prototype.push_back_listener = owk_timer_push_back_listener;
timer.prototype.create = owk_timer_create;


/*#ifndef _owk_timer_h_                  
#define _owk_timer_h_ 

#include "owk_types.h"
namespace owk {

class timer;

interface timer_interface
{
   // return true when you take the event
   virtual owk_bool on_every_frame(timer& i_timer) { return true; };
};

typedef timer_interface* timer_interface_ptr;

class timer
{
   public:
     declare_embed_object_code(timer)

     timer();
     void create() { m_count_listeners = 0; }

     void tick();

     owk_int frame_per_sec() { return m_frame_per_sec; };
     void frame_per_sec(owk_int i_frame_per_sec) { m_frame_per_sec = i_frame_per_sec; };

      // listeners collection 
      owk_int count_listeners() { return  m_count_listeners; };
      timer_interface& ge_listener(owk_int i_index) { return *m_listeners[i_index]; };
      void push_back_listener(timer_interface& i_listener) { m_listeners[m_count_listeners]=&i_listener; m_count_listeners++; };

   private:
      timer_interface_ptr m_listeners[1024]; 
      owk_int m_count_listeners;
      owk_int m_frame_per_sec;

};

timer& timer_device();

} // end namespace

#endif // _owk_timer_h_*/
