VOID TimerUpdate(HWND hWnd, WPARAM wParam, LPARAM lParam) { HeroUpdate(); TerrianUpdate(); GameStatusUpdate(); InvalidateRect(hWnd, NULL, FALSE); }
VOID TimerUpdate(HWND hWnd, WPARAM wParam, LPARAM lParam) { if (wParam == TIMER_ID) { HeroUpdate(); BackgroundUpdate(); TerrianUpdate(); if (GameStart) { GameStatusUpdate(); OthersUpdate(); CoinUpdate(); MissileUpdate(); LaserUpdate(); BOOL judgecollision = CheckCollision(); if (judgecollision) { m_hero.life--; if (!m_hero.life) { m_hero.alive = FALSE; IsOnFire = FALSE; //KillTimer(hWnd, TIMER_ID); //KillTimer(hWnd, SCORE_ID); } else { m_hero.invincible = 100; for (int i = 0; i < MAX_LASER_NUM; i++) { m_laser[i].blink = FALSE; } } m_missile.active = FALSE; } } } if (wParam == SCORE_ID) { //GameStatusUpdate(); ScorePerFrame++; if (LaserRandom >= 9) LaserRandom -= 3; if (MissileRandom >= 90) MissileRandom -= 30; } if (wParam == ENDING_ID) { CharacterCount++; } InvalidateRect(hWnd, NULL, FALSE); }
// // HeroEM_PROC // Purpose; Processes entity messages. // void HeroEM_PROC( ENTITY *self, EM msg, int var1, int var2 ) { switch(msg) { // General case EM_CREATE: HeroConstruct( self, var1 ); break; case EM_DESTROY: HeroDestroy( self ); break; case EM_CLSINIT: HeroInit( (const char *)var1 ); break; case EM_UPDATE: HeroUpdate( self, (float *)var1 ); break; case EM_DRAW: HeroDraw( self ); break; case EM_INACTIVE: EntityInactive( self ); break; // Position case EM_SETPOS: SendComEM( self->comps.POSC, EM_SETPOS, var1, var2 ); break; case EM_GETPOS: SendComEM( self->comps.POSC, EM_GETPOS, var1, var2 ); break; // Physics case EM_SETVEL: SendComEM( self->comps.PC, EM_SETVEL, var1, var2 ); break; case EM_GETVEL: SendComEM( self->comps.PC, EM_GETVEL, var1, var2 ); break; case EM_SETACCEL: SendComEM( self->comps.PC, EM_SETACCEL, var1, var2 ); break; case EM_GETACCEL: SendComEM( self->comps.PC, EM_GETACCEL, var1, var2 ); break; case EM_STEPXPOS: SendComEM( self->comps.PC, EM_STEPXPOS, var1, var2 ); break; case EM_STEPYPOS: SendComEM( self->comps.PC, EM_STEPYPOS, var1, var2 ); break; case EM_GRAVITY: SendComEM( self->comps.PC, EM_GRAVITY, var1, 0 ); break; // COLLISION case EM_GETWH: SendComEM( self->comps.CC, EM_GETWH, var1, var2 ); break; case EM_SETWH: SendComEM( self->comps.CC, EM_SETWH, var1, var2 ); break; case EM_HITTEST: SendComEM( self->comps.CC, EM_HITTEST, var1, var2 ); break; case EM_IHITYOU: SendComEM( self->comps.CC, EM_IHITYOU, var1, var2 ); break; // PLAYERCOMPONENT case EM_SETJUMP: SendComEM( self->comps.PLAC, EM_SETJUMP, (BOOL *)var1, 0 ); break; case EM_GETJUMP: SendComEM( self->comps.PLAC, EM_GETJUMP, (BOOL *)var1, 0 ); break; case EM_GETINVEC: SendComEM( self->comps.PLAC, EM_GETINVEC, (VECTOR2D *)var1, 0 ); break; case EM_SETINVEC: SendComEM( self->comps.PLAC, EM_SETINVEC, (VECTOR2D *)var1, 0 ); break; case EM_SETJUMPN: SendComEM( self->comps.PLAC, EM_SETJUMPN, var1, 0 ); break; case EM_GETJUMPN: SendComEM( self->comps.PLAC, EM_GETJUMPN, (BOOL *)var1, 0 ); break; case EM_GETHTBTM: SendComEM( self->comps.PLAC, EM_GETHTBTM, (BOOL *)var1, 0 ); break; case EM_SETHTBTM: SendComEM( self->comps.PLAC, EM_SETHTBTM, var1, 0 ); break; // LOCI case EM_GETLOCUS: SendComEM( self->comps.GC, EM_GETLOCUS, (const char *)var1, (LOCUS *)var2 ); break; case EM_CLDSETIM: SendComEM( self->comps.GC, EM_CLDSETIM, (const char *)var1, (IMAGE *)var2 ); break; case EM_CLDSETAN: SendComEM( self->comps.GC, EM_CLDSETAN, (const char *)var1, (ANIMATION *)var2 ); break; case EM_INSLOCUS: SendComEM( self->comps.GC, EM_INSLOCUS, (LOCUS *)var1, 0 ); break; case EM_CLDFREAN: SendComEM( self->comps.GC, EM_CLDFREAN, (const char *)var1, 0 ); break; case EM_CLDTGLLC: SendComEM( self->comps.GC, EM_CLDTGLLC, (const char *)var1, 0 ); break; case EM_CLDSETLC: SendComEM( self->comps.GC, EM_CLDSETLC, (const char *)var1, (BOOL *)var2 ); break; case EM_CLDOFFLC: SendComEM( self->comps.GC, EM_CLDOFFLC, (const char *)var1, 0 ); break; case EM_CLDONLC: SendComEM( self->comps.GC, EM_CLDONLC, (const char *)var1, 0 ); break; // HITPOINTS case EM_GETHP: SendComEM( self->comps.HP, EM_GETHP, (int *)var1, 0 ); break; case EM_SETHP: SendComEM( self->comps.HP, EM_SETHP, var1, 0 ); break; case EM_DAMAGEHP: SendComEM( self->comps.HP, EM_DAMAGEHP, var1, 0 ); break; case EM_HEALHP: SendComEM( self->comps.HP, EM_HEALHP, var1, 0 ); break; // INVENTORY case EM_GETINV: SendComEM( self->comps.IC, EM_GETINV, (int *)var1, var2 ); break; case EM_SETINV: SendComEM( self->comps.IC, EM_SETINV, (ITEM_ID)var1, var2 ); break; case EM_INSINV: SendComEM( self->comps.IC, EM_INSINV, (ITEM_ID)var1, 0 ); break; case EM_GETINVSZ: SendComEM( self->comps.IC, EM_GETINVSZ, (int *)var1, 0 ); break; case EM_INVEJECT: SendComEM( self->comps.IC, EM_INVEJECT, 0, 0 ); break; case EM_INVGDRAW: SendComEM( self->comps.IC, EM_INVGDRAW, (BOOL *)var1, 0 ); break; case EM_INVSDRAW: SendComEM( self->comps.IC, EM_INVSDRAW, var1, 0 ); break; case EM_INVTDRAW: SendComEM( self->comps.IC, EM_INVTDRAW, 0, 0 ); break; } }