Exemplo n.º 1
0
void start_replay(void *arg) {
	ReplayStage *rstg;
	StageInfo 	*gstg;
	int i;
	
	replay_copy(&global.replay, (Replay*)arg);
	global.replaymode = REPLAY_PLAY;
	
	if(global.replay.stgcount == 1)
		pickedstage = 0;
	
	init_player(&global.plr);
	for(i = pickedstage; i < global.replay.stgcount; ++i) {
		replay_select(&global.replay, i);
		rstg = global.replay.current;
		gstg = stage_get(rstg->stage);
		
		if(!gstg) {
			printf("start_replay(): Invalid stage %d in replay at %i skipped.\n", rstg->stage, i);
			continue;
		}
		
		gstg->loop();
		
		if(global.game_over == GAMEOVER_ABORT)
			break;
		global.game_over = 0;
	}
	
	global.game_over = 0;
	global.replaymode = REPLAY_RECORD;
	replay_destroy(&global.replay);
	
	replayview->instantselect = False;
}
Exemplo n.º 2
0
ReplayStage* replay_init_stage(Replay *rpy, StageInfo *stage, int seed, Player *plr) {
	ReplayStage *s;
	
	rpy->stages = (ReplayStage*)realloc(rpy->stages, sizeof(ReplayStage) * (++rpy->stgcount));
	s = &(rpy->stages[rpy->stgcount-1]);
	memset(s, 0, sizeof(ReplayStage));
	
	s->capacity 	= REPLAY_ALLOC_INITIAL;
	s->events 		= (ReplayEvent*)malloc(sizeof(ReplayEvent) * s->capacity);
	
	s->stage		= stage->id;
	s->seed			= seed;
	s->diff			= global.diff;
	s->points		= global.points;
	
	s->plr_pos		= plr->pos;
	s->plr_focus	= plr->focus;
	s->plr_fire		= plr->fire;
	s->plr_char		= plr->cha;
	s->plr_shot		= plr->shot;
	s->plr_lifes	= plr->lifes;
	s->plr_bombs	= plr->bombs;
	s->plr_power	= plr->power;
	s->plr_mflags	= plr->moveflags;
	
	printf("replay_init_stage(): created a new stage for writting\n");
	replay_select(rpy, rpy->stgcount-1);
	return s;
}