void cRokko::Update(void) { cEnemy::Update(); if (!m_valid_update || !Is_In_Range()) return; // if not active if (m_state != STA_FLY) { // Do not self-activate when manual triggering is enabled if (m_manual) return; // Do not activate if Maryo is a ghost else if (pLevel_Player->m_maryo_type == MARYO_GHOST) return; // if player is in front then activate else if (pLevel_Player->m_col_rect.Intersects(Get_Final_Distance_Rect())) Activate(); // Do not activate if Maryo is not near by else return; } Update_Animation(); // generate smoke m_smoke_counter += pFramerate->m_speed_factor * 4.0f; if (m_smoke_counter >= 1.0f) { Generate_Smoke(static_cast<int>(m_smoke_counter)); m_smoke_counter -= static_cast<int>(m_smoke_counter); } }
void cRokko :: Update( void ) { cEnemy::Update(); if( !m_valid_update || !Is_In_Player_Range() ) { return; } // if not active if( m_state != STA_FLY ) { GL_rect final_distance = Get_Final_Distance_Rect(); // if player is in front then activate if( pPlayer->maryo_type != MARYO_GHOST && pPlayer->m_col_rect.Intersects( final_distance ) ) { Activate(); } else { return; } } // generate smoke m_smoke_counter += pFramerate->m_speed_factor * 4.0f; if( m_smoke_counter >= 1.0f ) { Generate_Smoke( static_cast<int>(m_smoke_counter) ); m_smoke_counter -= static_cast<int>(m_smoke_counter); } }
void cRokko::Update_Normal_Dying(void) { if (m_vely < m_gravity_max) { Add_Velocity_Y_Max(1.5f, m_gravity_max); } if (m_dying_counter >= 5.0f && m_curr_img < 3) Set_Image_Num(3); else if (m_dying_counter >= 10.0f && m_curr_img == 3) Set_Image_Num(4); else if (m_dying_counter >= 15.0f && m_curr_img == 4) Set_Image_Num(5); Move(m_velx, m_vely); if (m_rot_z - m_start_rot_z < 90) { Add_Rotation_Z(pFramerate->m_speed_factor); } // generate smoke m_smoke_counter += pFramerate->m_speed_factor * 4; if (m_smoke_counter >= 2.0f) { Generate_Smoke(static_cast<int>(m_smoke_counter)); Generate_Sparks(static_cast<int>(m_smoke_counter * 0.5f)); m_smoke_counter -= static_cast<int>(m_smoke_counter); } // below ground if (m_col_rect.m_y - 200.0f > pActive_Camera->m_limit_rect.m_y + game_res_h) { m_rot_z = 0.0f; m_massive_type = MASS_PASSIVE; Set_Active(0); m_velx = 0.0f; } }
void cRokko :: Update_Dying( void ) { // add gravity if( m_vely < 25 ) { Add_Velocity( 0, 1.5f ); } Move( m_velx, m_vely ); if( m_rot_z - m_start_rot_z < 90 ) { Add_Rotation_Z( pFramerate->m_speed_factor ); } // generate smoke m_smoke_counter += pFramerate->m_speed_factor * 4; if( m_smoke_counter >= 2 ) { Generate_Smoke( static_cast<int>(m_smoke_counter) ); Generate_Sparks( static_cast<int>(m_smoke_counter * 0.5f) ); m_smoke_counter -= static_cast<int>(m_smoke_counter); } // below ground if( m_col_rect.m_y - 200.0f > pActive_Camera->limit_rect.m_y + game_res_h ) { m_rot_z = 0.0f; m_massive_type = MASS_PASSIVE; Set_Active( 0 ); m_velx = 0.0f; } }