/**********************************************************************
This file is part of Crack dot Com's free source code release of Golgotha.
for information about compiling & licensing issues visit this URL
 If that doesn't help, contact Jonathan Clark at 
  golgotha_source@usa.net (Subject should have "GOLG" in it) 
***********************************************************************/

#include "main/main.hh"
#include "app/app.hh"
#include "loaders/fli_load.hh"
#include "window/window.hh"
#include "image/image.hh"
#include "file/file.hh"


class anim_window : public i4_window_class
{
  w32 frame_on,
    tframes;
  i4_image_class **im; 
public:
  I4_EVENT_HANDLER_NAME("anim_window");

  anim_window(i4_image_class **im,
              w32 tframes)
    : i4_window_class(400,400),
      tframes(tframes),
      im(im)
  {
    frame_on=0;
  }

  void draw(i4_draw_context_class &context)
  {
    im[frame_on]->put_image(local_image,0,0,context);
    frame_on++;
    if (frame_on>=tframes)
      frame_on=0;
    request_redraw();
  }

  virtual void show_self(w32 indent) { ; }
};

class test_app : public i4_application_class
{
public:
  I4_EVENT_HANDLER_NAME("anim_window");

  virtual w32 max_memory() const { return 6000*1024; }

  void init()
  {
    i4_application_class::init();

    i4_file_class *fp=i4_file_man.open(i4gets("fli_file"));
    if (fp)
    {
      w32 tframes;
      i4_image_class **im=i4_load_fli(fp,tframes);
      if (!im)
        i4_error("didn't load");

      anim_window *a=new anim_window(im,tframes);
      i4_parent_window_class *w=wm->add_mp_window(wm,50,50,
                                                  im[0]->width(),
                                                  im[0]->height(),i4gets("window_title"));
      w->add_child(0,0,a);
      delete fp;
    }    
  }

};

void i4_main(w32 argc, i4_const_str *argv)
{
  test_app app;
  app.run();
}