Пример 03 - Использование вспомогательных классов

В этом примере мы научимся как пользоваться некоторыми вспомогательными классами HGE. Вопервых мы подключим необходимые заголовки и объявим глобальный указатель на интерфейс HGE который необходим для работы большинства вспомогательных классов:

#include <hge.h>
#include <hgesprite.h>
#include <hgefont.h>
#include <hgeparticle.h>

HGE *hge=0;

Теперь мы объявим указатели на объекты HGE который будем использовать.

hgeSprite*          spr;
hgeSprite*          spt;
hgeFont*            fnt;
hgeParticleSystem*  par;

HTEXTURE            tex;

В функции FrameFunc (функция кадра) мы обнавляем объект системы частиц: мы настраиваем частоту испускания основываясь на скорости спрайта и перемещяем в текущую позицию спрайта.

  par->info.nEmission=(int)(dx*dx+dy*dy)*2;
  par->MoveTo(x,y);
  par->Update(dt);

Затем мы отображаем все наши объекты, вызывая их методы отобажения:

  hge->Gfx_BeginScene();
  hge->Gfx_Clear(0);
  par->Render();
  spr->Render(x, y);
  fnt->printf(5, 5, "dt:%.3f\nFPS:%d", dt, hge->Timer_GetFPS());
  hge->Gfx_EndScene();

В функции WinMain после инициализации, мы создаем объекты HGE, которые потом будем использовать. Сначала мы создаем и настраиваем спрайт:

    spr=new hgeSprite(tex, 96, 64, 32, 32);
    spr->SetColor(0xFFFFA000);
    spr->SetHotSpot(16, 16);

Затем мы загружаем шрифт. Щрифт представляетсядвумя файлами: font1.fnt и font1.png.

    fnt=new hgeFont("font1.fnt");

Мы создаем систему частиц и спрайт для нее:

    spt=new hgeSprite(tex, 32, 32, 32, 32);
    spt->SetBlendMode(
              BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE);
    spt->SetHotSpot(16, 16);
    par=new hgeParticleSystem("trail.psi", spt, 0);
    par->Fire();

Теперь все объекты созданы и мы начинаем игровой цикл:

    hge->System_Start();

Когда игровой цикл заканчивается, мы удаляем все созданные HGE объекты:

    delete par;
    delete fnt;
    delete spt;
    delete spr;

Остальной процесс завершения идентичен тем, что были в предидущих примерах.

Полный исходный код с детальными комментариями для этого примера можно найти в директории tutorials\tutorial03. Требуемые медиа файлы можно найти в директории tutorials\precompiled.