// -CChat.h- #ifndef CCHAT #define CCHAT class CGameManager; struct Message { char message[600]; bool free; float life; int alpha; }; class CChat { public: CChat(CGameManager *main); ~CChat(); void Update(float delta); void Render(); void addMessage(int type, char msg[600]); private: CGameManager *manager; Message *buffer; int free; }; #endif // -CChat.cpp- #include "CChat.h" #include "CGameManager.h" CChat::CChat(CGameManager *main) { manager = main; buffer = new Message[5]; free = 6; } CChat::~CChat() { delete [] buffer; } void CChat::Update(float delta) { for (int x = 0; x < 6; x++) { if (!buffer[x].free) { buffer[x].life -= 10.0f * delta; if (buffer[x].life < 25500.0f) { buffer[x].alpha = (int)buffer[x].life / 100; } if (buffer[x].life <= 0.0f) { buffer[x].free = true; free++; } } } } void CChat::Render() { for (int n = 0; n < 6; n++) { if (!buffer[n].free) { manager->printFont(0, (buffer[n].alpha / 255), 10, (600 - (n*20)), buffer[n].message); } } } void CChat::addMessage(int type, char msg[600]) { if (free > 0) { free--; } Message temp; temp = buffer[4]; buffer[5] = temp; temp = buffer[3]; buffer[4] = temp; temp = buffer[2]; buffer[3] = temp; temp = buffer[1]; buffer[2] = temp; temp = buffer[0]; buffer[1] = temp; Message newm; newm.alpha = 255; newm.free = false; newm.life = 100000.0f; strcpy(newm.message, msg); buffer[0] = newm; }