Replay2
This commit is contained in:
@@ -159,6 +159,37 @@ int32_t flushkeystrokes(struct rogue_state *rs)
|
||||
rs->num = 0;
|
||||
return(0);
|
||||
}
|
||||
|
||||
int32_t rogue_replay2(uint64_t seed,char *keystrokes,int32_t num)
|
||||
{
|
||||
struct rogue_state *rs; FILE *fp; int32_t i;
|
||||
rs = (struct rogue_state *)calloc(1,sizeof(*rs));
|
||||
rs->seed = seed;
|
||||
rs->keystrokes = keystrokes;
|
||||
rs->numkeys = num;
|
||||
rs->sleeptime = 1;
|
||||
uint32_t starttime = (uint32_t)time(NULL);
|
||||
rogueiterate(rs);
|
||||
fprintf(stderr,"elapsed %d seconds\n",(uint32_t)time(NULL) - starttime);
|
||||
sleep(2);
|
||||
|
||||
starttime = (uint32_t)time(NULL);
|
||||
for (i=0; i<100; i++)
|
||||
{
|
||||
memset(rs,0,sizeof(*rs));
|
||||
rs->seed = seed;
|
||||
rs->keystrokes = keystrokes;
|
||||
rs->numkeys = num;
|
||||
rs->sleeptime = 0;
|
||||
rogueiterate(rs);
|
||||
}
|
||||
fprintf(stderr,"elapsed %d seconds\n",(uint32_t)time(NULL)-starttime);
|
||||
sleep(1);
|
||||
if ( (fp= fopen("checkfile","wb")) != 0 )
|
||||
save_file(rs,fp,0);
|
||||
free(rs);
|
||||
return(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
long get_filesize(FILE *fp)
|
||||
@@ -204,40 +235,7 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime)
|
||||
}
|
||||
if ( num > 0 )
|
||||
{
|
||||
rs = (struct rogue_state *)calloc(1,sizeof(*rs));
|
||||
rs->seed = seed;
|
||||
rs->keystrokes = keystrokes;
|
||||
rs->numkeys = num;
|
||||
rs->sleeptime = 1;
|
||||
uint32_t starttime = (uint32_t)time(NULL);
|
||||
rogueiterate(rs);
|
||||
fprintf(stderr,"elapsed %d seconds\n",(uint32_t)time(NULL) - starttime);
|
||||
sleep(2);
|
||||
|
||||
starttime = (uint32_t)time(NULL);
|
||||
for (i=0; i<2000; i++)
|
||||
{
|
||||
memset(rs,0,sizeof(*rs));
|
||||
rs->seed = seed;
|
||||
rs->keystrokes = keystrokes;
|
||||
rs->numkeys = num;
|
||||
rs->sleeptime = 0;
|
||||
rogueiterate(rs);
|
||||
}
|
||||
fprintf(stderr,"elapsed %d seconds\n",(uint32_t)time(NULL)-starttime);
|
||||
sleep(1);
|
||||
if ( (fp= fopen("checkfile","wb")) != 0 )
|
||||
{
|
||||
save_file(rs,fp,0);
|
||||
if ( 0 && (fp= fopen("checkfile","rb")) != 0 )
|
||||
{
|
||||
for (i=0; i<0x150; i++)
|
||||
fprintf(stderr,"%02x",fgetc(fp));
|
||||
fprintf(stderr," first part rnd.%d\n",rnd(1000));
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
free(rs);
|
||||
rogue_replay2(seed,keystrokes,num);
|
||||
mvaddstr(LINES - 2, 0, (char *)"replay completed");
|
||||
endwin();
|
||||
}
|
||||
|
||||
@@ -617,6 +617,8 @@ UniValue rogue_highlander(uint64_t txfee,struct CCcontract_info *cp,cJSON *param
|
||||
return(result);
|
||||
}
|
||||
|
||||
int32_t rogue_replay2(uint64_t seed,char *keystrokes,int32_t num);
|
||||
|
||||
UniValue rogue_bailout(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
|
||||
{
|
||||
// detect if last to bailout
|
||||
@@ -640,9 +642,11 @@ UniValue rogue_bailout(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
|
||||
result.push_back(Pair("gametxid",gametxid.GetHex()));
|
||||
if ( rogue_isvalidgame(cp,gametx,buyin,maxplayers,gametxid) == 0 )
|
||||
{
|
||||
if ( rogue_findbaton(cp,&keystrokes,numkeys,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,myrogueaddr) == 0 )
|
||||
if ( rogue_findbaton(cp,&keystrokes,numkeys,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,myrogueaddr) == 0 && keystrokes != 0 )
|
||||
{
|
||||
fprintf(stderr,"found baton %s numkeys.%d\n",batontxid.ToString().c_str(),numkeys);
|
||||
rogue_replay2(4419709268196762041,keystrokes,numkeys);
|
||||
free(keystrokes);
|
||||
}
|
||||
result.push_back(Pair("result","success"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user