📄 ui.cpp
字号:
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_R, x, y);
j=k=0;
for (i=0; i<3; i++) {
while ((str[j]) && (str[j] != '@'))
j++;
if (str[j]) {
str[j] = 0;
DrawMenuString(x-31-(lr?41:0), y-48+8*i, str+k);
str[j] = '@';
k=++j;
} else {
DrawMenuString(x-31-(lr?41:0), y-48+8*i, str+k);
k=j;
}
}
return;
}
i=j=k=0;
if (lr)
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_LP2, x, y);
else
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_RP2, x, y);
if (m_tutString != str) {
m_tutString = str;
m_tutFrame = 9;
} else
m_tutFrame--;
k=m_tutFrame;
while (k<0) {
k+=8;
while (str[i] && (str[i] != '@'))
i++;
if (str[i])
i++;
else
i=0;
}
while (k<=34) {
j=i;
while (str[j] && (str[j] != '@'))
j++;
if (str[j]) {
str[j] = 0;
DrawMenuString(x-31-(lr?41:0), y-56+k, str+i);
str[j] = '@';
i = j+1;
} else {
DrawMenuString(x-31-(lr?41:0), y-56+k, str+i);
i=0;
}
k+=8;
}
if (lr)
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_LP1, x, y);
else
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_RP1, x, y);
}
void CUI::CollideMString(int y, int yinc, int xdir, int ydir, const char *str[], int frame)
{
}
int CUI::GetB2CharModuleid(char ch) const
{
if (ch >= 'A' && ch <= 'Z')
return ch-'A'+14;
if ((ch >= 'a' && ch <= 'z'))
return ch-'a'+14;
if (ch >= '0' && ch <= '9')
return ch-'0';
if (ch == '!')
return 12;
if (ch == '\'')
return 13;
return 0;
}
void CUI::BHChar(int ch, int x, int y, int size)
{
SYS_ASSERT(ch>=0&&ch<=10);
if (size == 0)
m_pAnim[IDA_RESULTNUM].drawModule(99+ch, x, y);
if (size == 1)
m_pAnim[IDA_RESULTNUM].drawModule(110+ch, x, y-1);
if (size == 2)
m_pAnim[IDA_RESULTNUM].drawModule(121+ch, x, y-2);
}
void CUI::TVScreen(int cam, int ctrl, int maxf, int curf)
{
const int i = INFOBARF_0+cam;
//to fill the first line in tv screen when height be 204
m_pGfx->DrawLine(0, 0, SCREEN_WIDTH, 0, MAKERGB(0, 0, 0));
m_pGfx->DrawBmp(10, 24, m_Images[IMAGE_TVSPECULAR]->w, m_Images[IMAGE_TVSPECULAR]->h, m_Images[IMAGE_TVSPECULAR], 0, 0, GFX_SEMITRANS);
m_pAnim[IDA_INFOBAR].drawFrame(i, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
switch (ctrl) {
case -1:
m_pGfx->DrawBmp(10, 24, m_Images[IMAGE_REPTUT]->w, m_Images[IMAGE_REPTUT]->h, m_Images[IMAGE_REPTUT], 0, 0, 0);
break;
case 1:
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_BW, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
break;
case 2:
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_PAUSE, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_STEP, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
break;
case 3:
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_FW, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
break;
case 4:
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_PAUSE, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_STEP, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_STEPBW, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
break;
case 5:
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_PAUSE, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_STEP, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_STEPFW, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
break;
}
if (maxf) {
m_pAnim[IDA_INFOBAR].drawFrame(INFOBARF_PROGRESS, SCREEN_WIDTH/2+curf*68/maxf, SCREEN_HEIGHT/2);
if (curf*68/maxf>=2) {
m_pGfx->DrawLine(85, SCREEN_HEIGHT-23, 85+curf*68/maxf-2, SCREEN_HEIGHT-23, MAKERGB(181, 239, 206));
m_pGfx->DrawLine(85, SCREEN_HEIGHT-22, 85+curf*68/maxf-2, SCREEN_HEIGHT-22, MAKERGB(132, 207, 156));
m_pGfx->DrawLine(85, SCREEN_HEIGHT-21, 85+curf*68/maxf-2, SCREEN_HEIGHT-21, MAKERGB(82, 158, 107));
}
}
}
int CUI::TVAnim(int i, int anim)
{
if (anim < 0)
anim = 0;
m_pGfx->FillRec(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0xffff);
m_pGfx->DrawFadeMask(0x6e, 0x30, 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1);
const int seq[12] = {
IMAGE_TVSPLASHA5, IMAGE_TVSPLASHA6, IMAGE_TVSPLASHA5, IMAGE_TVSPLASHA2, IMAGE_TVSPLASHA1, IMAGE_TVSPLASHA2,
IMAGE_TVSPLASHA7, IMAGE_TVSPLASHA8, IMAGE_TVSPLASHA7, IMAGE_TVSPLASHA4, IMAGE_TVSPLASHA3, IMAGE_TVSPLASHA4
};
const int seq2[12] = {
IMAGE_TVSPLASHB6, IMAGE_TVSPLASHB7, IMAGE_TVSPLASHB6, IMAGE_TVSPLASHB1, IMAGE_TVSPLASHB2, IMAGE_TVSPLASHB1,
IMAGE_TVSPLASHB8, IMAGE_TVSPLASHB5, IMAGE_TVSPLASHB8, IMAGE_TVSPLASHB3, IMAGE_TVSPLASHB4, IMAGE_TVSPLASHB3
};
m_pGfx->DrawBmp(10, 24, m_Images[i?seq[anim%12]:seq2[anim%12]]->w, m_Images[i?seq[anim%12]:seq2[anim%12]]->h, m_Images[i?seq[anim%12]:seq2[anim%12]], 0, 0, GFX_SEMITRANS);
if (anim >= 30)
return false;
return true;
}
void CUI::Bet(int min, int max, int cur, int total)
{
m_pGfx->DrawColorMask(MAKERGB(128, 128, 128), 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
DrawMenuString(16, 43, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BET_TITLE]);
DrawMenuString(SCREEN_WIDTH/2, 58, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BET_STRING], 1);
DrawMenuString(SCREEN_WIDTH/2, 73, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BET_STRING2], 1);
m_pGfx->DrawLine(10, 84, 166, 84, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(10, 85, 166, 85, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(10, 86, 166, 86, MAKERGB(16, 56, 173));
char str[50];
SPRINTF(str, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BET_MINMAX], min, max);
DrawMenuString(SCREEN_WIDTH/2, 91, str, 1);
SPRINTF(str, "$ %d", cur);
DrawMenuString(SCREEN_WIDTH/2, 110, " ", 1, 0, 1);
DrawMenuString(SCREEN_WIDTH/2, 110, str, 1, 0);
SPRINTF(str, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BET_TOTALMONEY], total);
DrawMenuString(34, 137, str);
}
void CUI::BetResult(int money, int min, int total, int seed, int win)
{
m_pGfx->DrawColorMask(MAKERGB(128, 128, 128), 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
DrawMenuString(16, 58, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BETR_TITLE]);
if (seed%9<6)
if (win)
BigString2(SCREEN_WIDTH/2, 73, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BETR_WIN], 1);
else
BigString2(SCREEN_WIDTH/2, 73, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_BETR_LOSE], 1);
m_pGfx->DrawLine(10, 99, 166, 99, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(10, 100, 166, 100, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(10, 101, 166, 101, MAKERGB(16, 56, 173));
char str[50];
if (win>0)
SPRINTF(str, "$ %d", money);
else
SPRINTF(str, "- $ %d", money);
DrawMenuString(156, 106, str, 2);
DrawMenuString(16, 137, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_TOTALMONEY]);
if (seed < money/min)
if (win)
SPRINTF(str, "$ %d", total-money+seed*min);
else
SPRINTF(str, "$ %d", total+money-seed*min);
else
SPRINTF(str, "$ %d", total);
DrawMenuString(156, 137, str, 2);
}
void CUI::RepResult(const MoneySys& ms, int& animseed, int need, int win)
{
m_pGfx->DrawColorMask(MAKERGB(64, 64, 64), 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
TVScreen();
DrawMenuString(18, 36, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_RESULT]);
m_pGfx->DrawLine(14, 46, 161, 46, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(14, 47, 161, 47, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(14, 48, 161, 48, MAKERGB(16, 56, 173));
char str[50];
int seed = animseed;
int isSoundPlaying = false;
seed-=4;
if (seed<0)
return;
DrawMenuString(16, 57, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_SCORE]);
seed-=2;
if (seed<0)
return;
SPRINTF(str, "%d", ms.currScore);
DrawMenuString(80, 57, str, 2);
seed-=2;
if (seed<0)
return;
DrawMenuString(84, 57, "X");
SPRINTF(str, "%d", MONEY_SCORE);
DrawMenuString(116, 57, str, 2);
seed-=2;
if (seed<0)
return;
if ((seed==0) && ms.currScore) {
m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_REPUTATION),0);
isSoundPlaying = true;
}
SPRINTF(str, "%d", RollMoney(ms.currScoreMoney, seed));
DrawMenuString(159, 57, str, 2);
if(seed!=0 && isSoundPlaying)
m_pEngine->GetSound()->stopMIDI();
seed-=4;
if (seed<0)
return;
DrawMenuString(16, 72, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_STRIKE]);
seed-=2;
if (seed<0)
return;
SPRINTF(str, "%d", ms.currStrikeCount);
DrawMenuString(80, 72, str, 2);
seed-=2;
if (seed<0)
return;
DrawMenuString(84, 72, "X");
SPRINTF(str, "%d", MONEY_STRIKE);
DrawMenuString(116, 72, str, 2);
seed-=2;
if (seed<0)
return;
if ((seed==0) && ms.currStrikeCount) {
m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_REPUTATION),0);
isSoundPlaying = true;
}
SPRINTF(str, "%d", RollMoney(ms.currStrikeMoney, seed));
DrawMenuString(159, 72, str, 2);
if(seed!=0 && isSoundPlaying)
m_pEngine->GetSound()->stopMIDI();
seed-=4;
if (seed<0)
return;
DrawMenuString(16, 87, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_SPARE]);
seed-=2;
if (seed<0)
return;
SPRINTF(str, "%d", ms.currSpareCount);
DrawMenuString(80, 87, str, 2);
seed-=2;
if (seed<0)
return;
DrawMenuString(84, 87, "X");
SPRINTF(str, "%d", MONEY_SPARE);
DrawMenuString(116, 87, str, 2);
seed-=2;
if (seed<0)
return;
if ((seed==0) && ms.currSpareCount) {
m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_REPUTATION),0);
isSoundPlaying = true;
}
SPRINTF(str, "%d", RollMoney(ms.currSpareMoney, seed));
DrawMenuString(159, 87, str, 2);
if(seed!=0 && isSoundPlaying)
m_pEngine->GetSound()->stopMIDI();
seed-=4;
if (seed<0)
return;
if (need) {
DrawMenuString(16, 102, "Win Bonus");
if (win)
DrawMenuString(159, 102, "1000", 2);
else
DrawMenuString(159, 102, "0", 2);
}
DrawMenuString(18, 105+need*15, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_YOUEARN]);
DrawMenuString(116, 105+need*15, "$", 2);
if ((seed==0) && ms.currScoreMoney) {
m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_REPUTATION),0);
isSoundPlaying = true;
}
SPRINTF(str, "%d", RollMoney(ms.currScoreMoney+ms.currSpareMoney+ms.currStrikeMoney+ms.winBonus, seed));
DrawMenuString(159, 105+need*15, str, 2);
if(seed!=0 && isSoundPlaying)
m_pEngine->GetSound()->stopMIDI();
seed-=2;
if (seed<0)
return;
m_pGfx->DrawLine(14, 118+need*15, 161, 118+need*15, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(14, 119+need*15, 161, 119+need*15, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(14, 120+need*15, 161, 120+need*15, MAKERGB(16, 56, 173));
DrawMenuString(18, 126+need*15, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_REP_TOTALMONEY]);
if (seed%9<6) {
SPRINTF(str, "$ %d", ms.totalMoney);
DrawMenuString(159, 126+need*15, str, 2);
}
if (animseed<MAXANIMFRAME)
animseed = MAXANIMFRAME+1;
}
void CUI::Unlock(int type, const char* name, int brep)
{
if (!brep) {
m_pGfx->DrawColorMask(MAKERGB(128, 128, 128), 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
DrawMenuString(SCREEN_WIDTH/2, 74, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_TITLE], 1);
m_pGfx->DrawLine(10, 84, 166, 84, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(10, 85, 166, 85, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(10, 86, 166, 86, MAKERGB(16, 56, 173));
char str[50];
if (type == 1)
SPRINTF(str, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_CHAR], name);
if (type == 0)
SPRINTF(str, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_BALL], name);
if (type == 2)
SPRINTF(str, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_COSTUME], name);
DrawMenuString(SCREEN_WIDTH/2, 88, str, 1);
return;
}
m_pGfx->DrawColorMask(MAKERGB(64, 64, 64), 0, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
TVScreen();
DrawMenuString(18, 36, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_RESULT]);
m_pGfx->DrawLine(14, 46, 161, 46, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(14, 47, 161, 47, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(14, 48, 161, 48, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(14, 118, 161, 118, MAKERGB(16, 56, 173));
m_pGfx->DrawLine(14, 119, 161, 119, MAKERGB(16, 81, 206));
m_pGfx->DrawLine(14, 120, 161, 120, MAKERGB(16, 56, 173));
DrawMenuString(SCREEN_WIDTH/2, 68, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_TITLE], 1);
if (type == 1)
DrawMenuString(SCREEN_WIDTH/2, 85, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_CHAR2], 1);
if (type == 0)
DrawMenuString(SCREEN_WIDTH/2, 85, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_BALL2], 1);
if (type == 2)
DrawMenuString(SCREEN_WIDTH/2, 85, ((CGame*)m_pEngine->m_pGame)->GetDataManager()->m_pStringItem[ID_UI_UNLOCK_COSTUME], 1);
DrawMenuString(SCREEN_WIDTH/2, 102, name, 1);
}
//draw VS string effect, move from right to center
bool CUI::DrawVStringEffect(const char ** strings, int strCount, int y, int cpt, int space)
{
bool ret=false;
int i;
int pStrWidth[10];
int pStrX[10];
char **str = (char **)strings;
int total_width=0;
int step = 33;
//calculate string witdh
for( i=0; i<strCount; i++ )
{
pStrWidth[i] = BStr2Len(str[i]);
total_width += pStrWidth[i];
}
//calculate Y value
/* if( strCount == 3 )
{
pStrX[1] = (SCREEN_WIDTH - pStrWidth[1])/2;
pStrX[0] = pStrX[1] - pStrWidth[0] - space;
pStrX[2] = pStrX[1] + pStrWidth[1] + space;
}
else
*/ {
pStrX[0] = (SCREEN_WIDTH - total_width - (strCount-1)*space )/2;
for( i=1; i<strCount; i++ )
{
pStrX[i] = pStrX[i-1] + pStrWidth[i-1] + space;
}
}
//init
if( cpt == 0 )
{
curLine = 0;
curLine_deltacpt = 0;
}
else
{
curLine_deltacpt++;
}
//draw moving string
for( i=0; i<strCount; i++ )
{
if( i < curLine )
{
//draw string at exact place
BigString2(pStrX[i], y, str[i], 0); //align left
}
else if( i == curLine )
{
int x = SCREEN_WIDTH + step*2 - step * curLine_deltacpt;
if( x < pStrX[i] )
{
x = pStrX[i];
curLine++;
curLine_deltacpt = 0;
}
BigString2(x, y, str[i], 0); //align left
}
}
if( curLine >= strCount )
ret = true;
return ret;
}
void CUI::DrawTutAction(int type)
{
switch (type) {
case 0:
m_pAnim[IDA_AIMSPOT].drawAction(1, ((m_arrAni++)&4)>>2, SCREEN_WIDTH/2, SCREEN_HEIGHT-15);
break;
case 1:
m_pAnim[IDA_AIMSPOT].drawAction(0, ((m_arrAni++)&4)>>2, SCREEN_WIDTH/4, SCREEN_HEIGHT/2+15);
break;
case 2:
m_pAnim[IDA_AIMSPOT].drawAction(0, ((m_arrAni++)&4)>>2, SCREEN_WIDTH/2, SCREEN_HEIGHT-50);
break;
case 3:
m_pAnim[IDA_AIMSPOT].drawAction(2, ((m_arrAni++)&4)>>2, SCREEN_WIDTH/2, SCREEN_HEIGHT-30);
break;
}
}
int CUI::RollMoney(int money, int& seed)
{
int ret = 0;
int i, j = 1;
while (money && seed) {
if (i=money%10)
if (seed > i) {
ret += j*i;
seed -= i;
} else {
ret += j*seed;
seed = 0;
}
j*=10;
money/=10;
}
return ret;
}
void CUI::SelArrow(int x, int y)
{
m_arrAni %= m_pAnim[IDA_MENU].GetActionSize(MENUA_2_A)*4;
m_pAnim[IDA_MENU].drawModule(10, x-30-7-(m_arrAni++)/4, y-6);
m_pAnim[IDA_MENU].drawModule(9, x+30+(m_arrAni++)/4, y-6);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -