view trace.c @ 39:5484b8606e8e

add trace mode to tree_dandy2(GL).
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Tue, 11 Jan 2011 23:39:31 +0900
parents 435ac1cdb64e
children cbe5bb9068c3
line wrap: on
line source

#include <stdio.h>
#include "trace.h"
#include "object.h"
#include "sgoex.h"

#define PAD_BUFSIZ 32
#define RESET_BUTTON 768

FILE *pad_fp;
int runmode;
static char pad_buf[PAD_BUFSIZ];

void
pad_trace(unsigned int pad)
{
    fprintf(pad_fp, "%d\n", pad);
}


void
pad_file_open(char *f)
{
    pad_fp = fopen(f, "r+");
    if (!pad_fp) {
// 本当はerrnoをチェックするのがいいんだろうなぁ
	pad_fp = fopen(f, "w+");
	if (!pad_fp) {
	  printf("can't open output file.\n");
	  runmode = 0;
	}
	//        goto dbg_abort(4);
    }
}


int
pad_file_read()
{
  if (fgets(pad_buf, PAD_BUFSIZ, pad_fp)) {
    sscanf(pad_buf, "%hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd %hd ",
	   &pad[0].up, &pad[0].down, &pad[0].right, &pad[0].left,
	   &pad[0].k0, &pad[0].k1, &pad[0].k3, &pad[0].k4,
	   &pad[0].r1, &pad[0].r2, &pad[0].l1, &pad[0].st, &pad[0].se);
    return 1;
  }
  return 0;
}


void
pad_file_close()
{
  if ((runmode ==1)||(runmode == 2)) {
    fclose(pad_fp);
  }
}

#ifdef USE_MYRAND
static FILE *myrand_fp;
extern int runmode;

int myrand_open_file(char *filename)
{
    myrand_fp = fopen(filename, "r+");
    if (!myrand_fp) {
	myrand_fp = fopen(filename, "w+");
	if (myrand_fp) {
	    return 0;
	} else {
	    return 1;
	}
    }
    return 0;
}

static char buf[16];

int myrand()
{
    int r = 0;
    if (runmode) {
	if (runmode == 1) {
	    r = rand();
	    fprintf(myrand_fp, "%d\n", r);
	} else if (runmode == 2) {
//            dbg_printf("check0\n");
	    if (fgets(buf, 16, myrand_fp)) {
		sscanf(buf, "%d", &r);
	    } else {
		fseek(myrand_fp, 0, SEEK_SET);
	    }
	}
    } else {
	r = rand();
    }
    return r;
}
#endif				// USE_MYRAND