📄 instant.cpp
字号:
txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(215,y);
txt->SetFGColor(0x00ff00);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_RIGHT);
txt->SetClient(2);
win->AddControl(txt);
TotalScore+=cur->points;
y+=fh;
cur=cur->next;
}
RemoveObjectKillsList();
}
txt=(C_Text *)win->FindControl(IA_DBRF_BONUS_FIELD);
if(txt)
{
sprintf(buffer,"%1ld",Bonus - Penalty + LivingBonus + LandingBonus);
AddCommas(buffer);
txt->SetText(buffer);
}
txt=(C_Text *)win->FindControl(REALISM_MULTIPLIER);
if(txt)
{
sprintf(buffer,"%1ld%%",(long)(PlayerOptions.Realism * 100.00f + 0.5f));
txt->SetText(buffer);
}
TotalScore *= static_cast<long>(PlayerOptions.Realism);
txt=(C_Text *)win->FindControl(IA_DBRF_SCORE_FIELD);
if(txt)
{
sprintf(buffer,"%1ld",TotalScore);
AddCommas(buffer);
txt->SetText(buffer);
}
win->RefreshWindow();
/*
int i,j,index;
int y,fh;
C_Text *txt;
long UseFont;
_TCHAR buffer[100];
KillList *airList,*gndList;
int aircnt,gndcnt;
VehicleClassDataType *vc;
y=0;
UseFont=win->Font_;
fh=gFontList->GetHeight(UseFont);
aircnt=0;
gndcnt=0;
if(instant_action::get_num_aa_kills ())
{
airList=new KillList[instant_action::get_num_air_target_types () + instant_action::get_num_air_threat_types ()];
for(i=0;i<instant_action::get_num_air_target_types ();i++)
{
airList[aircnt].descriptionIndex=instant_action::get_air_target_description_index(0, i);
airList[aircnt].numKilled=0;
airList[aircnt].points=0;
for(j=0;j<=instant_action::get_num_levels();j++)
{
airList[aircnt].numKilled+=instant_action::get_air_target_num_killed(j,i);
airList[aircnt].points+=instant_action::get_air_target_points(j,i);
}
aircnt++;
}
for(i=0;i<instant_action::get_num_air_threat_types ();i++)
{
index=-1;
for(j=0;j<aircnt;j++)
if(airList[j].descriptionIndex == instant_action::get_air_threat_description_index (0, i))
index=j;
if(index >= 0)
{
for(j=0;j<=instant_action::get_num_levels();j++)
{
airList[aircnt].numKilled+=instant_action::get_air_threat_num_killed(j, i);
airList[aircnt].points+=instant_action::get_air_threat_points (j, i);
}
}
else
{
airList[aircnt].descriptionIndex=instant_action::get_air_threat_description_index (0, i);
airList[aircnt].numKilled=0;
airList[aircnt].points=0;
for(j=0;j<=instant_action::get_num_levels();j++)
{
airList[aircnt].numKilled+=instant_action::get_air_threat_num_killed (j,i);
airList[aircnt].points+=instant_action::get_air_threat_points (j,i);
}
aircnt++;
}
}
for(i=0;i<aircnt;i++)
{
if(airList[i].numKilled > 0)
{
_stprintf(buffer,"%1d",airList[i].numKilled);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(35,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_RIGHT);
txt->SetClient(2);
win->AddControl(txt);
vc = GetVehicleClassData (airList[i].descriptionIndex);
_stprintf(buffer,"%s",vc->Name);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
txt->SetText(buffer);
txt->SetXY(45,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_LEFT);
txt->SetClient(2);
win->AddControl(txt);
_stprintf(buffer,"%1ld",airList[i].points);
AddCommas(buffer);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(215,y);
txt->SetFGColor(0x00ff00);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_RIGHT);
txt->SetClient(2);
win->AddControl(txt);
TotalScore+=airList[i].points;
y+=fh;
}
}
delete airList;
}
if(instant_action::get_num_ag_kills ())
{
gndList=new KillList[instant_action::get_num_gnd_target_types () + instant_action::get_num_gnd_threat_types ()];
for(i=0;i<instant_action::get_num_gnd_target_types ();i++)
{
gndList[gndcnt].descriptionIndex=instant_action::get_gnd_target_description_index(0,i);
gndList[gndcnt].numKilled=0;
gndList[gndcnt].points=0;
for(j=0;j<=instant_action::get_num_levels();j++)
{
gndList[gndcnt].numKilled+=instant_action::get_gnd_target_num_killed (j,i);
gndList[gndcnt].points+=instant_action::get_gnd_target_points (j,i);
}
gndcnt++;
}
for(i=0;i<instant_action::get_num_gnd_threat_types ();i++)
{
index=-1;
for(j=0;j<gndcnt;j++)
if(gndList[j].descriptionIndex == instant_action::get_gnd_threat_description_index(0,i))
index=j;
if(index >= 0)
{
for(j=0;j<=instant_action::get_num_levels();j++)
{
gndList[index].numKilled+=instant_action::get_gnd_threat_num_killed (j,i);
gndList[index].points+=instant_action::get_gnd_threat_points (j,i);
}
}
else
{
gndList[gndcnt].descriptionIndex=instant_action::get_gnd_threat_description_index (0,i);
gndList[gndcnt].numKilled=0;
gndList[gndcnt].points=0;
for(j=0;j<=instant_action::get_num_levels();j++)
{
gndList[gndcnt].numKilled+=instant_action::get_gnd_threat_num_killed (j,i);
gndList[gndcnt].points+=instant_action::get_gnd_threat_points (j,i);
}
gndcnt++;
}
}
for(i=0;i<gndcnt;i++)
{
if(gndList[i].numKilled > 0)
{
_stprintf(buffer,"%1d",gndList[i].numKilled);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(35,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_RIGHT);
txt->SetClient(2);
win->AddControl(txt);
vc = GetVehicleClassData (gndList[i].descriptionIndex);
_stprintf(buffer,"%s",vc->Name);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
txt->SetText(buffer);
txt->SetXY(45,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_LEFT);
txt->SetClient(2);
win->AddControl(txt);
_stprintf(buffer,"%1ld",gndList[i].points);
AddCommas(buffer);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(215,y);
txt->SetFGColor(0x00ff00);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_RIGHT);
txt->SetClient(2);
win->AddControl(txt);
TotalScore+=gndList[i].points;
y+=fh;
}
}
delete gndList;
}
TotalScore *= PlayerOptions.Realism;
txt=(C_Text *)win->FindControl(IA_DBRF_SCORE_FIELD);
if(txt)
{
sprintf(buffer,"%1ld",TotalScore);
AddCommas(buffer);
txt->SetText(buffer);
}
win->RefreshWindow();
*/
}
static void ProcessBonus (void)
{
kill_list *cur;
cur = BonusList;
while (cur)
{
Bonus += cur->points;
cur = cur->next;
}
RemoveBonusList ();
}
static void ProcessWeapons(C_Window *win)
{
int y,fh;
C_Text *txt;
_TCHAR buffer[100];
WeaponClassDataType *wc;
kill_list *cur;
long UseFont;
y=0;
UseFont=win->Font_;
fh=gFontList->GetHeight(UseFont);
if(WeaponUsage)
{
cur=WeaponUsage;
while(cur)
{
wc=(WeaponClassDataType *)Falcon4ClassTable[cur->id].dataPtr;
_stprintf(buffer,"%s",wc->Name);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
txt->SetText(buffer);
txt->SetXY(20,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_LEFT);
txt->SetClient(3);
win->AddControl(txt);
_stprintf(buffer,"(%1d)",cur->num);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(130,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_LEFT);
txt->SetClient(3);
win->AddControl(txt);
_stprintf(buffer,"%1ld",cur->points);
AddCommas(buffer);
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_RIGHT);
txt->SetFixedWidth(_tcsclen(buffer)+1);
txt->SetText(buffer);
txt->SetXY(215,y);
txt->SetFGColor(0x00ff00);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_RIGHT);
txt->SetClient(3);
win->AddControl(txt);
TotalScore+=cur->points;
y+=fh;
cur=cur->next;
}
RemoveWeaponUsageList();
}
else
{
txt=new C_Text;
txt->Setup(C_DONT_CARE,C_TYPE_LEFT);
txt->SetText(TXT_NO_WEAPONS_USED);
txt->SetXY(20,y);
txt->SetFGColor(0xf0f0f0);
txt->SetFont(UseFont);
txt->SetFlagBitOn(C_BIT_LEFT);
txt->SetClient(3);
win->AddControl(txt);
}
txt=(C_Text *)win->FindControl(IA_DBRF_BONUS_FIELD);
if(txt)
{
sprintf(buffer,"%1ld",Bonus - Penalty + LivingBonus + LandingBonus);
AddCommas(buffer);
txt->SetText(buffer);
}
txt=(C_Text *)win->FindControl(REALISM_MULTIPLIER);
if(txt)
{
sprintf(buffer,"%1ld%%",(long)(PlayerOptions.Realism * 100.00f + 0.5f));
txt->SetText(buffer);
}
win->RefreshWindow();
}
void CheckHighScore(long TotalScore)
{
C_Window *win;
int i;
C_Text *txt;
long SoundID;
_TCHAR buffer[25];
i=0;
while(i < MAX_SCORES && TotalScore <= Scores.Scores[i].Score && Scores.Scores[i].Name[0] != 0)
i++;
if(TotalScore < 0)
{
SoundID=gInstantBites->Pick(IA1);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else if(TotalScore < _A_LOW_SCORE_)
{
SoundID=gInstantBites->Pick(IA2);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else if(TotalScore < _A_MEDIUM_SCORE_)
{
SoundID=gInstantBites->Pick(IA3);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else if(!i)
{
SoundID=gInstantBites->Pick(IA8);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else if(i == 1 )
{
SoundID=gInstantBites->Pick(IA7);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else if(i >= 2 && i <= 6)
{
SoundID=gInstantBites->Pick(IA6);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else if(i >= 7 && i <= 11)
{
SoundID=gInstantBites->Pick(IA5);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
else
{
SoundID=gInstantBites->Pick(IA4);
if(SoundID)
gSoundMgr->PlaySound(SoundID);
}
if(i < MAX_SCORES)
{
win=gMainHandler->FindWindow(IA_HS_WIN);
if(win)
{
gMainHandler->EnableWindowGroup(win->GetGroup());
txt=(C_Text *)win->FindControl(IA_HS_FIELD);
if(txt)
{
_stprintf(buffer,"%1ld",TotalScore);
AddCommas(buffer);
txt->SetText(buffer);
}
gMainHandler->WindowToFront(win);
win->RefreshWindow();
win->SetControl(IA_HS_NAME_EDIT);
}
}
else
{
win=gMainHandler->FindWindow(IA_DBRF_WIN);
gMainHandler->EnableWindowGroup(win->GetGroup());
}
}
static void SetupInstantAction()
{
C_Window *win;
C_Text *txt;
_TCHAR buf[20];
int i;
win=gMainHandler->FindWindow(IA_SETTINGS_WIN);
if(win)
{
SetIAStartup(win);
win->RefreshWindow();
}
GetHighScores();
win=gMainHandler->FindWindow(IA_SH_WIN);
if(win)
{
for(i=0;i<MAX_SCORES;i++)
{
if(Scores.Scores[i].Name[0] != 0)
{
// Set Name
txt=(C_Text *)win->FindControl(TEXT_1+i*2);
if(txt)
{
txt->SetText(Scores.Scores[i].Name);
}
// Set Score
txt=(C_Text *)win->FindControl(TEXT_1+i*2+1);
if(txt)
{
_stprintf(buf,"%1ld",Scores.Scores[i].Score);
txt->SetText(AddCommas(buf));
}
}
}
win->RefreshWindow();
}
win=gMainHandler->FindWindow(IA_MAP_WIN);
if(win)
SetMapStartup(win);
if((MainLastGroup == 1000))
{// these functions (with scoring) MUST be in this order to work properly
TotalScore=0;
Bonus=10000;
Penalty=0;
LivingBonus=0;
LandingBonus=0;
win=gMainHandler->FindWindow(IA_DBRF_WIN);
if(win)
{
ProcessEventList(win,1);
}
//for(i=InstantAction.iaStartLevel;i<InstantAction.iaCurLevel;i++)
//Bonus+=20000*i;
win=gMainHandler->FindWindow(IA_DBRF_WIN);
if(win)
{
ProcessBonus();
ProcessWeapons(win); // Bonus is part of this window
TotalScore+=Bonus-Penalty + LivingBonus + LandingBonus;
ProcessKills(win); // TotalScore is part of this window
win->ScanClientAreas();
win->RefreshWindow();
}
CheckHighScore(TotalScore);
TheCampaign.EndCampaign ();
}
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void OpenIAMunitionsCB (long ID, short hittype, C_Base *control)
{
if(hittype != C_TYPE_LMOUSEUP)
return;
if (!TheCampaign.IsLoaded ())
{
// Load a campaign here
strcpy(gUI_CampaignFile,"Instant");
TheCampaign.SetOnlineStatus( 0 );
TheCampaign.LoadCampaign(game_InstantAction, gUI_CampaignFile);
instant_action::create_player_flight ();
}
OpenMunitionsWindowCB (ID, hittype, control);
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -