📄 koulesapp.c
字号:
koulesnrockets = (int) ConfigBuffer[6];
koulesgamemode = (int) ConfigBuffer[7];
koulesdifficulty = (int) ConfigBuffer[8];
koulesssound = (int) ConfigBuffer[9];
}
if (ConfigBuffer[0] >= 2 && fread(&ConfigBuffer[10], 1, 1, LocalHandle) == 1)
{ kouleslevel = (int) ConfigBuffer[10];
}
DISCARD fclose(LocalHandle);
// LocalHandle = NULL;
} */
}
void Koules_save_rc(void)
{
/* FILE* LocalHandle;
UBYTE ConfigBuffer[11];
int i;
ConfigBuffer[ 0] = 2; // 2 means R1.01
for (i = 0; i <= 4; i++)
{ ConfigBuffer[i + 1] = (UBYTE) koulescontroller[i];
}
ConfigBuffer[ 6] = (UBYTE) koulesnrockets;
ConfigBuffer[ 7] = (UBYTE) koulesgamemode;
ConfigBuffer[ 8] = (UBYTE) koulesdifficulty;
ConfigBuffer[ 9] = (UBYTE) koulesssound;
ConfigBuffer[10] = (UBYTE) kouleslastlevel;
if ((LocalHandle = fopen("KOULES.CFG", "wb")))
{ DISCARD fwrite(ConfigBuffer, 11, 1, LocalHandle);
DISCARD fclose(LocalHandle);
// LocalHandle = NULL;
} */}
void Koulescleanexit(int rc)
{ //int i;
int i;
if (rc == 0)
{
Koules_save_rc();
}
Koulesstop_sounds();
// for (i = 0; i < CHANNELS; i++)
// { if (WaveOpened[i])
// { DISCARD waveOutClose(hWave[i]);
// WaveOpened[i] = FALSE;
// } }
// if (WindowPtr)
// { DestroyWindow(WindowPtr);
// // WindowPtr = NULL;
// }
/* if (AmiganBitmap)
{ DeleteObject(AmiganBitmap);
// AmiganBitmap = NULL;
} */
// WinStopTimer(KoulesTimerID);
koulesinloop = FALSE;
// RkosDelayMs(200);
// free(koulesdisplay);
// RKWindowDestroyEx(pkouleswin,0,NULL);
// exit(rc);
}
void Koules_statusarea(void)
{
char s[100];
if (koulesgameplan == COOPERATIVE && koulesgamemode == KOULESMODEGAME)
{
sprintf(s, "Level: %3i", kouleslastlevel + 1);
KoulesDrawShadowText((KOULESMAPWIDTH / 2 - 18 * 4) / 2 - strlen(s) * 4, KOULESMAPHEIGHT + 10, s);
}
sprintf(s, " Lives: %6i%6i",//%6i%6i%6i",
koulesnrockets >= 1 ? koulesobject[0].live1 : 0,
koulesnrockets >= 2 ? koulesobject[1].live1 : 0
//koulesnrockets >= 3 ? koulesobject[2].live1 : 0,
// koulesnrockets >= 4 ? koulesobject[3].live1 : 0,
// koulesnrockets >= 5 ? koulesobject[4].live1 : 0
);
KoulesDrawShadowText(KOULESMAPWIDTH / 2 - strlen(s) * 2, KOULESMAPHEIGHT + 5, s);
sprintf(s, "Scores: %6i%6i",//%6i%6i%6i",
koulesobject[0].score,
koulesobject[1].score
// koulesobject[2].score,
// koulesobject[3].score,
// koulesobject[4].score
);
KoulesDrawShadowText(KOULESMAPWIDTH / 2 - strlen(s) * 2, KOULESMAPHEIGHT + 15, s);
}
//
//MODULE ULONG getsize(STRPTR filename)
//{ HANDLE hFile /* = NULL */ ;
// ULONG size;
//
// hFile = CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
// if (hFile == INVALID_HANDLE_VALUE)
// { return(0);
// }
// size = GetFileSize(hFile, NULL);
// CloseHandle(hFile);
// // hFile = NULL;
//
// if (size == (ULONG) -1)
// { return(0);
// }
//
// return(size);
//}
MODULE void Koules_load_sounds(void)
{
// FILE* LocalHandle;
// int i;
// WAVEFORMATEX l_WaveFormatEx;
//
// for (i = 0; i < SOUNDS; i++)
// { if (filelength[i] = getsize(filename[i]))
// { if ((LocalHandle = fopen(filename[i], "rb")))
// { SoundBuffer[i] = malloc(filelength[i]); // should really check return code
// DISCARD fread(SoundBuffer[i], filelength[i], 1, LocalHandle); // should really check return code
// DISCARD fclose(LocalHandle);
// // LocalHandle = NULL;
// } } }
//
// for (i = 0; i < CHANNELS; i++)
// { l_WaveFormatEx.wFormatTag = WAVE_FORMAT_PCM;
// l_WaveFormatEx.nChannels = 1;
// l_WaveFormatEx.nSamplesPerSec = 11025;
// l_WaveFormatEx.wBitsPerSample = 8;
// l_WaveFormatEx.nAvgBytesPerSec = 11025;
// l_WaveFormatEx.nBlockAlign = 1;
// // l_WaveFormatEx.cbSize = 0; ignored
// memset(&hWave[i], 0, sizeof(HWAVEOUT));
// DISCARD waveOutOpen
// ( &hWave[i],
// WAVE_MAPPER,
// &l_WaveFormatEx,
// 0,
// 0,
// CALLBACK_NULL
// );
// WaveOpened[i] = TRUE;
//}
}
void Koulesplay_sound(int which)
{
// PERSIST int channel = CHANNELS - 1;
//
// if (koulesssound)
// { if (channel == CHANNELS - 1)
// { channel = 0;
// } else
// { channel++;
// }
//
// if (WavePrepared[channel])
// { DISCARD waveOutReset(hWave[channel]);
// DISCARD waveOutUnprepareHeader(hWave[channel], &WaveHdr[channel], sizeof(WAVEHDR));
// WavePrepared[channel] = FALSE;
// }
// WaveHdr[channel].lpData = SoundBuffer[which];
// WaveHdr[channel].dwBufferLength = filelength[which];
// WaveHdr[channel].dwBytesRecorded = 0;
// WaveHdr[channel].dwUser = 0;
// WaveHdr[channel].dwFlags = 0;
// WaveHdr[channel].dwLoops = 1;
// WaveHdr[channel].lpNext = NULL;
// WaveHdr[channel].reserved = (unsigned long) NULL;
// DISCARD waveOutPrepareHeader(hWave[channel], &WaveHdr[channel], sizeof(WAVEHDR));
// WavePrepared[channel] = TRUE;
//
// WaveHdr[channel].dwFlags |= WHDR_BEGINLOOP | WHDR_ENDLOOP;
// DISCARD waveOutWrite(hWave[channel], &WaveHdr[channel], sizeof(WAVEHDR));
//}
#ifdef __arm
if (kouleslastsndh != NULL)
{
RKFSFileClose(kouleslastsndh);
kouleslastsndh = NULL;
}
if (which < SOUNDS && koulesssound)
{
kouleslastsndh = (MY_FILE*)RKFSFileOpen(koules_sndfilename[which], "rb");
CurrentCodec = 3;//wav type
RockOSSendMsg(MBAUDIO, AS_AUAU_DecInit, (void*)kouleslastsndh);
// RockOSSendMsg(MBAUDIO,AS_AUAU_DecStart,NULL);
}
#endif
}
EXPORT void Koulesstop_sounds(void)
{
// int i;
//
// for (i = 0; i < CHANNELS; i++)
// { if (WavePrepared[i])
// { DISCARD waveOutReset(hWave[i]);
// DISCARD waveOutUnprepareHeader(hWave[i], &WaveHdr[i], sizeof(WAVEHDR));
// WavePrepared[i] = FALSE;
//} }
#ifdef __arm
RockOSSendMsg(MBAUDIO, AS_GUAU_Stop, (void*)1);
if (kouleslastsndh != NULL)
{
RKFSFileClose(kouleslastsndh);
kouleslastsndh = NULL;
}
#endif
}
//UINT32 SnakeOnCreat( WINDOW* win , WMPARAM wParam, WLPARAM lParam )
//{
// SnakeGameInit();
// m_nTimerID=WinStartTimer(win,TIMERDELAY);
//}
UINT32 KoulesWindowKeyProc(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
UINT16 keyPress = (UINT16)((wParam) >> 16);
UINT16 KEY_EV = (UINT16)(wParam);
switch (KEY_EV)
{
case KE_DN_PRESS:
case KE_DN_LONGP:
koules_key_down = 1;
break;
case KE_DN_RELEASE:
case KE_DN_LONG_RELEASE:
koules_key_down = 0;
break;
case KE_PREV_PRESS://left
case KE_PREV_LONGP:
koules_key_left = 1;
break;
case KE_PREV_RELEASE:
case KE_PREV_LONG_RELEASE:
koules_key_left = 0;
break;
case KE_UP_PRESS:
case KE_UP_LONGP:
koules_key_up = 1;
break;
case KE_UP_RELEASE:
case KE_UP_LONG_RELEASE:
koules_key_up = 0;
break;
case KE_NEXT_PRESS: //right
case KE_NEXT_LONGP:
koules_key_right = 1;
break;
case KE_NEXT_RELEASE:
case KE_NEXT_LONG_RELEASE:
koules_key_right = 0;
break;
case KE_PLAY_PRESS://
koules_key_enter = 1;
break;
case KE_PLAY_RELEASE:
koules_key_enter = 0;
break;
case KE_SHIFT_PRESS://
koules_key_help = 1;
break;
case KE_SHIFT_RELEASE:
koules_key_help = 0;
break;
case KE_MENU_PRESS://
break;
case KE_MENU_RELEASE:
// koules_key_pause=0;
if (koulesgamemode != KOULESMODEMENU)
koules_key_pause = !koules_key_pause;
break;
case KE_RETURN_PRESS:
{
koules_key_esc = 1;
}
break;
case KE_RETURN_RELEASE:
{
koules_key_esc = 0;
//oulesinloop=FALSE;
}
break;
case KE_EXIT_PRESS:
case KE_EXIT_RELEASE:
break;
case KE_LONGP_RELEASE:
break;
}
// TR("KEY:%d:%d:%d:%d:%d",pp,koules_key_left,koules_key_right,koules_key_up,koules_key_down);
return TRUE;
}
extern WINDOW* pAudioWin;
UINT32 GameStartKoules(WINDOW* win , char * filePath , void* param)
{
win = WindowCreate(win ,
WS_FULLSCREEN,
WID_KoulesMain,
0, 0, LCD_W, LCD_H,
0,
BID_RKoff24,
0,
0,
KoulesProcMap,
NULL);
pkouleswin = win;
koulesdisplay = NULL;
koules_key_esc = 0;
KoulesInit();
Koulesinit_menu();
RockCreateThread(ProcGetProcGuid(GUID_EXE_GAMEENTRY), KoulesGameCycle, TPRI_LOW);
if(pAudioWin)
WindowDestroy(pAudioWin);
//音频不播放时也要设置重复模式
#if defined(BOARD)
AudioSetRepeatModeOnce(1);//设置音频的重复模式为只播放一次
RockCreateThread(ProcGetProcGuid(GUID_EXE_GAMEENTRY), AudioHighTaskMsgCallBack, TPRI_HIGH);
#endif
RockOSSendMsg((ROCK_MSG_BOX*)MBVIDEO, (ROCK_MSG_ID)AS_GUVI_KOULESGAME_START, NULL);
return 0;
}
UINT32 KoulesCloseWin(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
RKfree(koulesdisplay);
#if defined(BOARD)
if (TRUE == AudioPlaying())
{
RockOSSendMsg(MBAUDIO, AS_GUAU_Stop, (void*)1);
}
AudioSetRepeatModeOnce(0);//恢复音频原来的重复模式
#endif
koulesdisplay = NULL;
RKWindowDestroyEx(pkouleswin, 0, NULL);
pkouleswin = NULL;
return TRUE;
}
UINT32 KoulesOnDestroy(WINDOW* win , WMPARAM wParam, WLPARAM lParam)
{
if (pkouleswin != NULL)
{
Koulescleanexit(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -