-
Notifications
You must be signed in to change notification settings - Fork 0
/
NoticeManager.cpp
79 lines (68 loc) · 2.12 KB
/
NoticeManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "NoticeManager.h"
NoticeManager::NoticeManager()
{
HGE *hge = hgeCreate(HGE_VERSION);
HTEXTURE lefttexture = hge->Texture_Load("left_notice.png");
left = new hgeSprite(lefttexture, 0, 0, 32, 128);
HTEXTURE righttexture = hge->Texture_Load("right_notice.png");
right = new hgeSprite(righttexture, 0, 0, 32, 128);
left->SetHotSpot(32, 64);
right->SetHotSpot(0, 64);
font = new hgeFont("font2.fnt");
font2 = new hgeFont("font3.fnt");
occupied = false;
rightx = ACT_END_X;
leftx = ACT_START_X;
alpha = 255;
m_bHasInitialized = true;
}
void NoticeManager::InsertNotice(const char* title, const char* main)
{
NoticeUnit *a = new NoticeUnit(title, main);
queue.push_back(a);
SFXManager::GetSFXManager().PlaySFX(NOTICESFX);
}
void NoticeManager::Update()
{
if (queue.size() > 0)
occupied = true;
else
occupied = false;
if (occupied)
{
left->Render(leftx, ACT_START_Y + (ACT_END_Y - ACT_START_Y) / 2);
right->Render(rightx, ACT_START_Y + (ACT_END_Y - ACT_START_Y) / 2);
const int distination1 = (ACT_END_X - ACT_START_X) / 2 + 128;
const int distination2 = (ACT_END_X - ACT_START_X) / 2 - 128;
if (rightx > distination1)
rightx -= (rightx - distination1) / 10 + 1;
if (leftx < distination2)
leftx += (distination2 - leftx) / 10 + 1;
if (rightx <= distination1 && leftx >= distination2)
{
rightx = distination1;
leftx = distination2;
right->SetColor(ARGB(alpha, 255, 255, 255));
left->SetColor(ARGB(alpha, 255, 255, 255));
font->SetColor(ARGB(alpha, 255, 255, 255));
font2->SetColor(ARGB(alpha, 255, 255, 255));
font->Render((ACT_END_X - ACT_START_X) / 2, ACT_START_Y + (ACT_END_Y - ACT_START_Y) / 2-48, HGETEXT_CENTER, queue[0]->GetTitle());
font2->Render((ACT_END_X - ACT_START_X) / 2, ACT_START_Y + (ACT_END_Y - ACT_START_Y) / 2, HGETEXT_CENTER, queue[0]->GetMainData());
alpha-=3.5;
}
if (alpha <= 0)
{
delete queue[0];
queue.erase(queue.begin());
queue.shrink_to_fit();
rightx = ACT_END_X;
leftx = ACT_START_X;
alpha = 255;
right->SetColor(ARGB(255, 255, 255, 255));
left->SetColor(ARGB(255, 255, 255, 255));
}
}
}
NoticeManager::~NoticeManager()
{
}