?? effect.cpp
字號:
case 85: wave = 1719; break;
case 86: wave = 1726; break;
case 87: wave = 1795; break;
case 88: wave = 1722; break;
case 89: wave = 1713; break;
case 90: wave = 1763; break;
case 91: wave = 1757; break;
case 92: wave = 1708; break;
case 93: wave = 1709; break;
case 94: wave = 1707; break;
case 95: wave = 1787; break;
case 96: wave = 1788; break;
case 97: wave = 1758; break;
case 100: wave = 1786; break;
case 101: wave = 1772; break;
case 102: wave = 1736; break;
case 103: wave = 1781; break;
case 104: wave = 1797; break;
case 105: wave = 1749; break;
case 106: wave = 1721; break;
case 107: wave = 1727; break;
case 108: wave = 1791; break;
default: wave = 0; break;
}
} //> CSD-030603
}
return wave;
}
////////////////////// SoundUp lkh 硅版 罰待 葷款靛 拋撈喉 肺爹 竊薦 //////////////////////
BOOL LoadBGESoundTable(void)
{
FILE* fp;
char *token;
char buf[512];
char DataPath[FILENAME_MAX]="./data/BGE.DAT";
int mapnum=0;
fp = Fopen( DataPath, "rt" );
if(fp)
{
while(!feof(fp))
{
fgets(buf, 511, fp);
token = strtok( buf, "\t\n");
if(token[0]=='~')
{
continue;
//token = strtok(NULL, "\r");
}
g_BGES[mapnum].mapNum = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].dayPattern = atoi(token);
//////////// 撤 單撈磐 /////////////
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[0] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[0] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[0] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[1] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[1] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[1] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[2] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[2] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[2] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[3] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[3] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[3] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[4] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[4] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[4] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[5] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[5] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[5] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[6] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[6] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[6] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[7] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[7] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[7] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[8] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[8] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[8] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Slot[9] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Rate[9] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].day_Type[9] = atoi(token);
for(int i=0; i<10; i++)
{
if( g_BGES[mapnum].day_Slot[i]!=0 )
g_BGES[mapnum].use_DayNum++;
}
token = strtok( NULL, "\t\n"); g_BGES[mapnum].nightPattern = atoi(token);
//////////// 廣 單撈磐 /////////////g_
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[0] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[0] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[0] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[1] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[1] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[1] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[2] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[2] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[2] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[3] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[3] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[3] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[4] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[4] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[4] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[5] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[5] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[5] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[6] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[6] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[6] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[7] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[7] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[7] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[8] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[8] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Type[8] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Slot[9] = atoi(token);
token = strtok( NULL, "\t\n"); g_BGES[mapnum].night_Rate[9] = atoi(token);
token = strtok( NULL, "\t\n\r"); g_BGES[mapnum].night_Type[9] = atoi(token);
for(int ii=0; ii<10; ii++)
{
if(g_BGES[mapnum].night_Slot[ii]!=0)
g_BGES[mapnum].use_NightNum++;
}
mapnum++;
}
}
return TRUE;
}
void StopBGE(void)
{
for(int ii=0; ii<10; ii++)
{
StopWave(g_BGES[MapNumber].day_Slot[ii]);
StopWave(g_BGES[MapNumber].night_Slot[ii]);
}
}
static int day_night=99;
////////////////////// SoundUp lkh 眠啊 ///////////////////////////
void BackEffectSound2(int MapNumber)
{
///////////////// 0813 lkh 眠啊 //////////////////
if(!g_BGE_Flag)
{
StopBGE();
return;
}
//撤苞 廣欄肺 備盒竅咯 免仿
int patternType = 0;
int useSlotNum;
/////////////////// 泅 瘤開(甘)俊 蝶弗 罰待瓤苞瀾 楷免 /////////////////
int slot[10]={ 0,}; //澆吩 葷款靛 鍋齲
int rate[10]={ 0,}; //后檔
int type[10]={ 0,}; //免仿鷗澇
int i;
if (DayLightControl > 31 ) { return; } // 0910 YGI
if(DayLightControl > 15) // 0910 YGI
{
if(day_night!=DAY_)
{
patternType = g_BGES[MapNumber].nightPattern;
useSlotNum = g_BGES[MapNumber].use_NightNum;
for(i=0; i<useSlotNum; i++)
{
slot[i] = g_BGES[MapNumber].night_Slot[i];
rate[i] = g_BGES[MapNumber].night_Rate[i];
type[i] = g_BGES[MapNumber].night_Type[i];
}
for(int z=0; z<useSlotNum; z++)
if( IsPlaying(slot[z]) )
StopWave(slot[z]);
day_night = DAY_;
}
}
else
{
if(day_night!=NIGHT_)
{
patternType = g_BGES[MapNumber].dayPattern;
useSlotNum = g_BGES[MapNumber].use_DayNum;
for(i=0; i<useSlotNum; i++)
{
slot[i] = g_BGES[MapNumber].day_Slot[i];
rate[i] = g_BGES[MapNumber].day_Rate[i];
type[i] = g_BGES[MapNumber].day_Type[i];
}
for(int z=0; z<useSlotNum; z++)
if( IsPlaying(slot[z]) )
StopWave(slot[z]);
day_night = NIGHT_;
}
}
switch(day_night)
{
case NIGHT_:
patternType = g_BGES[MapNumber].nightPattern;
useSlotNum = g_BGES[MapNumber].use_NightNum;
for(i=0; i<g_BGES[MapNumber].use_NightNum; i++)
{
slot[i] = g_BGES[MapNumber].night_Slot[i];
rate[i] = g_BGES[MapNumber].night_Rate[i];
type[i] = g_BGES[MapNumber].night_Type[i];
}
break;
default:
case DAY_:
patternType = g_BGES[MapNumber].dayPattern;
useSlotNum = g_BGES[MapNumber].use_DayNum;
for(i=0; i<g_BGES[MapNumber].use_DayNum; i++)
{
slot[i] = g_BGES[MapNumber].day_Slot[i];
rate[i] = g_BGES[MapNumber].day_Rate[i];
type[i] = g_BGES[MapNumber].day_Type[i];
}
break;
}
switch(patternType) //菩畔俊 蝶弗 瞞喊拳等 瓤苞瀾 楷免
{
case 1: //1 Pattern->阿 澆吩狼 瓤苞瀾闌 場烙 絕撈 楷加利欄肺 罰待竅霸 敲飯撈
for(i=0; i<useSlotNum; i++)
{
if(IsPlaying(slot[i])) return; //茄俺 澆吩狼 瓤苞瀾撈扼檔 敲飯撈 登絆 樂欄擱 府畔
}
PlayListAutoSounds(slot[rand()%useSlotNum], 0,rand()%4,0);
break;
default: //漂喊茄 菩畔 絕撈 瀝秦柳 后檔俊 蝶扼 罰待竅霸 免仿
for(i=0; i<useSlotNum; i++)
{
if(rate[i] == 999 && !IsPlaying(slot[i]) ) //風俏 瓤苞瀾牢 版快
{
PlayListAutoSounds(slot[i], 0, rand()%4, 1);
}
else if(rand()%10000<rate[i] && !IsPlaying(slot[i]) /*g_SoundInfo.lpDirectSoundBuffer[slot[i]] == NULL*/ )
{
PlayListAutoSounds(slot[i], 0, rand()%4, 0);
}
}
break;
}
}
////////////////////////////////////////////////////////////////
//////////////////////// 0625 lkh 眠啊 ////////////////////////////
void ReturnDazeMove(int& dest_x, int& dest_y)
{
int temp_Dist_X, temp_Dist_Y;
int distance_X, distance_Y;
temp_Dist_X = abs(Hero->x - dest_x);
temp_Dist_Y = abs(Hero->y - dest_y);
if( temp_Dist_X < 32 ) temp_Dist_X=32;
if( temp_Dist_Y < 32 ) temp_Dist_Y=32;
distance_X = (temp_Dist_X*2) + ( ( rand() % temp_Dist_X / 2 ) - (temp_Dist_X/4) );
distance_Y = (temp_Dist_Y*2) + ( ( rand() % temp_Dist_Y / 2 ) - (temp_Dist_Y/4) );
switch(rand()%4)
{
case 0: //x 措莫
if(Hero->x > dest_x)
dest_x += distance_X;
else
dest_x -= distance_X;
break;
case 1: //y 措莫
if(Hero->y > dest_y)
dest_y += distance_Y;
else
dest_y -= distance_Y;
break;
case 2: //x,y 措莫
if(Hero->x > dest_x)
dest_x += distance_X;
else
dest_x -= distance_X;
if(Hero->y > dest_y)
dest_y += distance_Y;
else
dest_y -= distance_Y;
break;
case 3: //random pattern
dest_x = rand()%distance_X-distance_X/2;
dest_y = rand()%distance_Y-distance_Y/2;
break;
}
}
////////////////////// 0618 lkh 薦瀝 //////////////////////////
void BackEffectSound(int MapNumber)
{
/////////////////// 泅 瘤開(甘)俊 蝶弗 罰待瓤苞瀾 楷免 /////////////////
// 0->MA-IN, 1->K_SUNG2, 2->FIREDUN1, 3->ICE-W01, 4->SOURCE, 5->MANDUN, 6->SUNG_TILE_00
int slot1=0, slot2=0, slot3=0, slot4=0, slot5=0, slot6=0;
int per1=0, per2=0, per3=0, per4=0, per5=0, per6=0;
int distance1_X=0, distance1_Y=0, distance2_X=0, distance2_Y=0, distance3_X=0, distance3_Y=0;
int distance4_X=0, distance4_Y=0, distance5_X=0, distance5_Y=0, distance6_X=0, distance6_Y=0;
switch(MapNumber)
{
case 0: //MA-IN->tot:16 //官恩(210,211,212), 俺磊瀾(375), 催磊瀾(374), 家磊瀾(376), Not Ability劇磊瀾(399)
per1=2; //4
slot1=210;
per2=1; //3
slot2=211;
per4=1;
slot4=375;
distance4_X=rand()%41+80;
if(rand()%2) distance4_X = -distance4_X;
distance4_Y=rand()%41+80;
if(rand()%2) distance4_Y = -distance4_Y;
per5=2;
slot5=374;
distance5_X=rand()%41+80;
if(rand()%2) distance5_X = -distance5_X;
distance5_Y=rand()%41+80;
if(rand()%2) distance5_Y = -distance5_Y;
per6=1;
slot6=376;
distance6_X=rand()%41+80;
if(rand()%2) distance6_X = -distance6_X;
distance6_Y=rand()%41+80;
if(rand()%2) distance6_Y = -distance6_Y;
break;
//case 1: //K_SUNG2->tot:14 //官恩,俺磊瀾,戳措磊瀾(379)
//case 6: //sung_tile
case 4: //SOURCE
case 13: //HU_VM
case 14: //GRAY
per1=2; //4
slot1=210;
per2=1; //2
slot2=211;
per3=1;
slot3=212;
per4=1;
slot4=375;
distance4_X=rand()%41+80;
if(rand()%2) distance4_X = -distance4_X;
distance4_Y=rand()%41+80;
if(rand()%2) distance4_Y = -distance4_Y;
per5=1;
slot5=379;
distance5_X=rand()%41+80;
if(rand()%2) distance5_X = -distance5_X;
distance5_Y=rand()%41+80;
if(rand()%2) distance5_Y = -distance5_Y;
break;
case 2: //FIREDUN1->tot:18 //官恩(吝/礙), 啊絆老磊瀾(365), 粱厚磊瀾(360)
case 7:
case 8:
per1=3; //5
slot1=211;
per2=1; //2
slot2=212;
per3=2;
slot3=365;
distance3_X=rand()%41+80;
if(rand()%2) distance3_X = -distance3_X;
distance3_Y=rand()%41+80;
if(rand()%2) distance3_Y = -distance3_Y;
per4=1;
slot4=360;
distance4_X=rand()%41+80;
if(rand()%2) distance4_X = -distance4_X;
distance4_Y=rand()%41+80;
if(rand()%2) distance4_Y = -distance4_Y;
break;
case 3: //ICE-W01->tot: //官恩(吝/礙), 刀薦府磊瀾(400), 磅磊瀾(366), 粱厚磊瀾(360)
case 9:
case 10:
per1=3; //5
slot1=211;
per2=1; //2
slot2=212;
per3=2;
slot3=400;
distance3_X=rand()%41+80;
if(rand()%2) distance3_X = -distance3_X;
distance3_Y=rand()%41+80;
if(rand()%2) distance3_Y = -distance3_Y;
per4=1;
slot4=366;
distance4_X=rand()%41+80;
if(rand()%2) distance4_X = -distance4_X;
distance4_Y=rand()%41+80;
if(rand()%2) distance4_Y = -distance4_Y;
per5=1;
slot5=360;
distance5_X=rand()%41+80;
if(rand()%2) distance5_X = -distance5_X;
distance5_Y=rand()%41+80;
if(rand()%2) distance5_Y = -distance5_Y;
break;
case 5: //MANDUN //官恩(距/吝), 鎬蹬瘤磊瀾(378), 坷農磊瀾(367), 包凱府綽家府(471)
case 11:
case 12:
per1=3; //5
slot1=210;
per2=1; //2
slot2=211;
per3=1;
slot3=378;
distance3_X=rand()%41+80;
if(rand()%2) distance3_X = -distance3_X;
distance3_Y=rand()%41+80;
if(rand()%2) distance3_Y = -distance3_Y;
per4=2;
slot4=367;
distance4_X=rand()%41+80;
if(rand()%2) distance4_X = -distance4_X;
distance4_Y=rand()%41+80;
if(rand()%2) distance4_Y = -distance4_Y;
per5=1;
slot5=471;
distance5_X=rand()%41+80;
if(rand()%2) distance5_X = -distance5_X;
distance5_Y=rand()%41+80;
if(rand()%2) distance5_Y = -distance5_Y;
break;
case 6: //SUNG_TILE_00 //傈捧閡啊&閣膠磐慣積救竊
break;
}
//slot 1 play
if(rand()%1000<per1 && g_SoundInfo.lpDirectSoundBuffer[slot1] == NULL)
{
PlayListAutoSounds(slot1, distance1_X, distance2_Y, 0);
return;
}
if(rand()%1000<per2 && g_SoundInfo.lpDirectSoundBuffer[slot2] == NULL)
{
PlayListAutoSounds(slot2, distance2_X, distance2_Y, 0);
return;
}
if(rand()%1000<per3 && g_SoundInfo.lpDirectSoundBuffer[slot3] == NULL)
{
PlayListAutoSounds(slot3, distance3_X, distance3_Y, 0);
return;
}
if(rand()%1000<per4 && g_SoundInfo.lpDirectSoundBuffer[slot4] == NULL)
{
PlayListAutoSounds(slot4, distance4_X, distance4_Y, 0);
return;
}
if(rand()%1000<per5 && g_SoundInfo.lpDirectSoundBuffer[slot5] == NULL)
{
PlayListAutoSounds(slot5, distance5_X, distance5_Y, 0);
return;
}
if(rand()%1000<per6 && g_SoundInfo.lpDirectSoundBuffer[slot6] == NULL)
{
PlayListAutoSounds(slot6, distance6_X, distance6_Y, 0);
return;
}
return;
}
void DrawClock() //諒釬綽 例措 諒釬烙
{
static int bell_Count=0;
static bool flag=0;
static DWORD endTime;
if( MapNumber != 0 ) return; //付闌 甘俊輯父 免仿
Spr* spr_Hour;
Spr* spr_Minute; //right矯魔,盒魔 膠橇扼撈飄
int y, mo,d, h, mi, sec; //矯埃:0~23, 盒:0~59
int hour_Spr=0, minute_Spr=0;
CurrentGameDate( g_curr_time * 6, &y, &mo, &d, &h, &mi, &sec ); //泅角 矯埃焊促 6硅 狐福瘤!
//矯 : 12竄困拌(矯魔橇飯烙->60F) -> 1矯埃 寸 5 Frame(12盒 付促 矯魔 傈券)
//盒 : 60竄困拌(嘿魔橇飯烙->12F) -> 5盒 寸 1 Frame
hour_Spr = (int)((h%12) * 5 + (int)(mi/12.)); // 泅 矯魔狼 橇飯烙闌 拌魂
if(hour_Spr > 59) hour_Spr-=60;
minute_Spr = (int)(mi/5.); // 泅 盒魔狼 橇飯烙闌 拌魂
if(minute_Spr > 11) minute_Spr-=12;
//////////////////////// 矯拌 輛家府 風憑 /////////////////////////
if( mi==0 && flag==0) //茄矯埃付促 輛家府
{
bell_Count = h%12; //(0~11)
if(bell_Count==0) bell_Count=12;
flag=1;
}
if( bell_Count > 0 ) //匡妨具竅綽 輛家府 墨款飄啊 0焊促 農絆 撈傈 輛家府啊 場唱瘤 臼籃 版快
{
DWORD currentTime=timeGetTime();
if ( endTime <= currentTime || endTime==0 )
{
endTime = currentTime+2300;
int distance = (int)(sqrt(pow(Hero->x-CLOCK_X,2)+pow(Hero->y-CLOCK_Y,2))/800);
PlayListAutoSounds(SN_CLOCKBELL, 0, distance, 0 );
bell_Count--;
if(bell_Count<=0)
{
bell_Count=0;
endTime=0;
}
}
}
if( minute_Spr==11 && flag==1 ) flag=0;
if( ( abs(Hero->x - CLOCK_X) > SCREEN_WIDTH && abs(Hero->y - CLOCK_Y) > SCREEN_HEIGHT ) && ( abs(Hero->x - CLOCK_X ) > SCREEN_WIDTH && abs(Hero->y - CLOCK_Y) > SCREEN_HEIGHT ) )
return;
//例措 諒釬肺 免仿(竄 矯拌啪狼 臭撈 絆妨秦輯 嘛闌 巴)
spr_Hour =&Effspr[HOUR_SPRITE].EffSpr[hour_Spr];
spr_Minute =&Effspr[MINUTE_SPRITE].EffSpr[minute_Spr];
ClockOutPut(CLOCK_X, CLOCK_Y, spr_Minute);
ClockOutPut(CLOCK_X, CLOCK_Y, spr_Hour);
}
BOOL CheckCrackRange(LPCHARACTER lpChar) //老瀝 裹困 郴俊 利撈 樂綽 版快 慣葷 救凳->1府畔
{
LPCHARACTER target = NULL;
//BOOL result;
int tile=2;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -