Character::Character() { set_attributes(); set_resources(); set_behaviour(); set_abilities(); set_event_listeners(); }
void init_level() { if(level < 21) effective_level = level; set_behaviour(1); pacman_dead = 0; frightened_ = 0; remaining_dots = 244; stage = 0; pinky.dot_counter = 0; inky.dot_counter = 0; clyde.dot_counter = 0; active_counter = 0; (*exit_house[0]) = 0; (*exit_house[1]) = 0; (*exit_house[2]) = 0; stage_times[1] = 20000; /* Chase 1 and 2 times are always 20s. */ stage_times[3] = 20000; stage_times[4] = 5000; /* Scatter 3 time is always 5s. */ printf("Level: %i Level Time: %i Stage: %i Stage Time: %i\n",effective_level,level_time,stage,stage_times[stage]); switch(effective_level) { case 0: stage_times[0] = 7000; stage_times[2] = 7000; stage_times[5] = 20000; stage_times[6] = 5000; break; case 1: case 2: case 3: stage_times[0] = 7000; stage_times[2] = 7000; stage_times[5] = 1033000; stage_times[6] = 17; break; default: stage_times[0] = 5000; stage_times[2] = 5000; stage_times[5] = 1037000; stage_times[6] = 17; /* ~1/60 of a second. */ break; } }
void update_game(struct Anim* anims, struct Image* images, uint32_t dt) { if(pacman_dead == 1) { pacman_dead = isPacmanDying(); if(pacman_dead == 0) { end_kill_pacman(); } return; } level_time += dt; if(bonus_spawned == 1) bonus_timer -= dt; blinky_update(&blinky,&pacman,&my_grid); pinky_update(&pinky,&pacman,&my_grid); inky_update(&inky,&blinky, &pacman,&my_grid); clyde_update(&clyde,&pacman,&my_grid); pacman_update(&pacman,&my_grid); if(frightened_ == 1) { fright_timer -= dt; if(fright_timer < 0) { set_frightened(0); } } else { if(stage < 7) { stage_times[stage] -= dt; if(stage_times[stage] < 0) { if(behaviour_ == 1) set_behaviour(2); else set_behaviour(1); printf("Level: %i Level Time: %i Stage: %i Stage Time: %i\n",effective_level,level_time,stage,stage_times[stage]); printf("Behaviour: %i\n",behaviour_); ++stage; } } } if(get_remaining_dots() == 0) { inc_level(); init_level(); grid_reload(&my_grid); pacman_reset(&pacman); blinky_init(&blinky,anims,images); pinky_init(&pinky,anims,images); inky_init(&inky,anims,images); clyde_init(&clyde,anims,images); } else if(get_remaining_dots() == 170) { spawn_bonus(); bonus_timer = (rand() % 1000) + 9000; } else if(get_remaining_dots() == 70) { spawn_bonus(); bonus_timer = (rand() % 1000) + 9000; } if(bonus_timer <= 0 && bonus_spawned == 1) { kill_bonus(); } }