Как я могу преломлять следующее, чтобы перенести мои функции рисования из h-файла в класс GraphicsManager?Код рефакторинга для компонентов игровых компонентов
//drawingFunctions.h
void drawTexturedQuad(Texture texture, Vector2 pos, Vector2 dim) {
// bind texture...
glBegin(...); // draw
//...
glEnd(...);
}
//class file
#include "drawingFunctions.h"
class Player {
void drawPlayer(){ drawTexturedQuad(texture, pos, dim) }
};
class Enemy {
void drawEnemy(){ drawTexturedQuad(texture, pos, dim) }
};
class Item {
void drawItem(){ drawTexturedQuad(texture, pos, dim) }
};
// and so on for the other components
//gameloop file
// instantiate components objects
while (true) {
// input, logic
Player.drawPlayer();
Enemy.drawEnemy();
Item.drawItem();
// and so on
}
(код явно упрощена, я просто спрашиваю о розыгрыше здесь)
Должен ли я ...
- передать указатель на GraphicsManager для каждого вызова drawPlayer, drawEnemy и т. д. изнутри gameloop
- У игрока, Enemy и т. д. есть указатель на GraphicsManger в качестве члена данных
- есть игрок, враг и т.д. leGameComponent, который имеет указатель на GraphicsManager в качестве члена данных
- что-то еще?
Было несколько обсуждений по этой теме на http://gamedev.stackexchange.com. Возможно, стоит посмотреть. – Bart