From 8737db6f84116e86e653a79b0f6914d7b62a5e95 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:00:42 -1100 Subject: [PATCH 01/18] +print --- src/cc/rogue/rogue.c | 4 ++++ src/cc/rogue/state.c | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 5fc5bd7a9..27c4a9b20 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -99,7 +99,11 @@ void rogueiterate(struct rogue_state *rs) fuse(swander, 0, WANDERTIME, AFTER); start_daemon(stomach, 0, AFTER); if ( rs->restoring != 0 ) + { + fprintf(stderr,"restore player\n"); restore_player(rs); + sleep(3); + } playit(rs); } diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index 68686b255..250010fe4 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1370,6 +1370,9 @@ void rogue_restoreobject(THING *o,struct rogue_packitem *item) ws_info[item->which].oi_know = TRUE; break; } + char packitemstr[256]; + strcpy(packitemstr,inv_name(obj,FALSE)); + fprintf(stderr,"packitem.(%s)\n",packitemstr); } void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item) From 7ac4a4f99fcb9cea61a46d7003692901890ec208 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:01:18 -1100 Subject: [PATCH 02/18] Obj -> o --- src/cc/rogue/state.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index 250010fe4..abbcdbdb7 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1371,7 +1371,7 @@ void rogue_restoreobject(THING *o,struct rogue_packitem *item) break; } char packitemstr[256]; - strcpy(packitemstr,inv_name(obj,FALSE)); + strcpy(packitemstr,inv_name(o,FALSE)); fprintf(stderr,"packitem.(%s)\n",packitemstr); } From 59b2c324d5ec92a37fc43fcadb8b8b90f7be12af Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:06:17 -1100 Subject: [PATCH 03/18] Test --- src/cc/rogue/state.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index abbcdbdb7..46d789f87 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1351,6 +1351,7 @@ void rogue_restoreobject(THING *o,struct rogue_packitem *item) o->_o._o_flags = item->flags; o->_o._o_group = item->group; o->o_flags |= ISKNOW; + o->o_flags &= ~ISFOUND; switch ( item->type ) { case SCROLL: @@ -1370,9 +1371,9 @@ void rogue_restoreobject(THING *o,struct rogue_packitem *item) ws_info[item->which].oi_know = TRUE; break; } - char packitemstr[256]; - strcpy(packitemstr,inv_name(o,FALSE)); - fprintf(stderr,"packitem.(%s)\n",packitemstr); + //char packitemstr[256]; + //strcpy(packitemstr,inv_name(o,FALSE)); + //fprintf(stderr,"packitem.(%s)\n",packitemstr); } void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item) From 37dfb49e4ebb90f2d42d6e929a0d3ff4f39edba9 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:08:32 -1100 Subject: [PATCH 04/18] -prints -sleeps --- src/cc/rogue/rogue.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 27c4a9b20..c2f8c667b 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -99,11 +99,7 @@ void rogueiterate(struct rogue_state *rs) fuse(swander, 0, WANDERTIME, AFTER); start_daemon(stomach, 0, AFTER); if ( rs->restoring != 0 ) - { - fprintf(stderr,"restore player\n"); restore_player(rs); - sleep(3); - } playit(rs); } @@ -169,14 +165,11 @@ void rogue_setplayerdata(struct rogue_state *rs,char *gametxidstr) item = jitem(array,i); if ( is_cJSON_True(jobj(item,"ismine")) != 0 ) { - fprintf(stderr,"found ismine:true\n"); - sleep(2); if ( (item= jobj(item,"player")) != 0 && (datastr= jstr(item,"data")) != 0 ) { decode_hex((uint8_t *)&rs->P,(int32_t)strlen(datastr)/2,datastr); - fprintf(stderr,"set datastr[%d]\n",(int32_t)strlen(datastr)); + //fprintf(stderr,"set datastr[%d]\n",(int32_t)strlen(datastr)); rs->restoring = 1; - sleep(5); } } } From b50a9670ce7cdaa6cb927cf48706b4b316ae760a Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:21:25 -1100 Subject: [PATCH 05/18] Restore --- src/cc/rogue/rogue.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index c2f8c667b..4aaab985c 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -146,9 +146,9 @@ int32_t flushkeystrokes(struct rogue_state *rs) uint8_t *OS_fileptr(long *allocsizep,char *fname); #define is_cJSON_True(json) ((json) != 0 && ((json)->type & 0xff) == cJSON_True) -void rogue_setplayerdata(struct rogue_state *rs,char *gametxidstr) +int32_t rogue_setplayerdata(struct rogue_state *rs,char *gametxidstr) { - char cmd[32768]; int32_t i,n; char *filestr,*datastr,fname[128]; long allocsize; cJSON *retjson,*array,*item; + char cmd[32768]; int32_t i,n,retval=-1; char *filestr,*statusstr,*datastr,fname[128]; long allocsize; cJSON *retjson,*array,*item; sprintf(fname,"%s.gameinfo",gametxidstr); sprintf(cmd,"./komodo-cli -ac_name=ROGUE cclib gameinfo 17 \\\"[%%22%s%%22]\\\" > %s",gametxidstr,fname); if ( system(cmd) != 0 ) @@ -163,13 +163,17 @@ void rogue_setplayerdata(struct rogue_state *rs,char *gametxidstr) for (i=0; iP,(int32_t)strlen(datastr)/2,datastr); - //fprintf(stderr,"set datastr[%d]\n",(int32_t)strlen(datastr)); - rs->restoring = 1; + retval = 0; + if ( (item= jobj(item,"player")) != 0 && (datastr= jstr(item,"data")) != 0 ) + { + decode_hex((uint8_t *)&rs->P,(int32_t)strlen(datastr)/2,datastr); + //fprintf(stderr,"set datastr[%d]\n",(int32_t)strlen(datastr)); + rs->restoring = 1; + } } } } @@ -178,6 +182,7 @@ void rogue_setplayerdata(struct rogue_state *rs,char *gametxidstr) } free(filestr); } + return(retval); } void rogue_progress(uint64_t seed,char *keystrokes,int32_t num) // use seed to lookup gametxid @@ -209,7 +214,11 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu rs->numkeys = num; rs->sleeptime = 0; if ( player != 0 ) + { rs->P = *player; + rs->restoring = 1; + fprintf(stderr,"restore player\n"); + } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); /*fprintf(stderr,"elapsed %d seconds\n",(uint32_t)time(NULL) - starttime); @@ -298,7 +307,11 @@ int rogue(int argc, char **argv, char **envp) { rs->seed = atol(argv[1]); strcpy(Gametxidstr,argv[2]); - rogue_setplayerdata(rs,Gametxidstr); + if ( rogue_setplayerdata(rs,Gametxidstr) < 0 ) + { + fprintf(stderr,"invalid gametxid, or already started\n"); + return(-1); + } } else rs->seed = 777; rs->guiflag = 1; rs->sleeptime = 1; // non-zero to allow refresh() From 3b32174da75cee49d66c15b961cfd305f6f832d6 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:29:02 -1100 Subject: [PATCH 06/18] Test --- src/cc/rogue_rpc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 47b166ce2..ebfd32620 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -808,8 +808,9 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param { UniValue obj; struct rogue_player P; seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,myrogueaddr); - fprintf(stderr,"found baton %s numkeys.%d seed.%llu\n",batontxid.ToString().c_str(),numkeys,(long long)seed); + fprintf(stderr,"found baton %s numkeys.%d seed.%llu playerdata.%d\n",batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); memset(&P,0,sizeof(P)); + sleep(60); if ( playerdata.size() > 0 ) { for (i=0; i Date: Sun, 10 Feb 2019 03:32:42 -1100 Subject: [PATCH 07/18] +prints --- src/cc/rogue/rogue.c | 2 +- src/cc/rogue/state.c | 6 +++--- src/cc/rogue_rpc.cpp | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 4aaab985c..65a6ae605 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -217,7 +217,7 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu { rs->P = *player; rs->restoring = 1; - fprintf(stderr,"restore player\n"); + fprintf(stderr,"restore player packsize.%d\n",rp->P.packsize); } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index 46d789f87..b97c5035f 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1371,9 +1371,9 @@ void rogue_restoreobject(THING *o,struct rogue_packitem *item) ws_info[item->which].oi_know = TRUE; break; } - //char packitemstr[256]; - //strcpy(packitemstr,inv_name(o,FALSE)); - //fprintf(stderr,"packitem.(%s)\n",packitemstr); + char packitemstr[256]; + strcpy(packitemstr,inv_name(o,FALSE)); + fprintf(stderr,"packitem.(%s)\n",packitemstr); } void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index ebfd32620..28fd07f6a 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -810,7 +810,6 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,myrogueaddr); fprintf(stderr,"found baton %s numkeys.%d seed.%llu playerdata.%d\n",batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); memset(&P,0,sizeof(P)); - sleep(60); if ( playerdata.size() > 0 ) { for (i=0; i Date: Sun, 10 Feb 2019 03:34:08 -1100 Subject: [PATCH 08/18] Rs --- src/cc/rogue/rogue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 65a6ae605..d7bc45fb6 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -217,7 +217,7 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu { rs->P = *player; rs->restoring = 1; - fprintf(stderr,"restore player packsize.%d\n",rp->P.packsize); + fprintf(stderr,"restore player packsize.%d\n",rs->P.packsize); } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); From 91d0ed149b5c8427b6a39f2633cad62f6b0e0459 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:37:46 -1100 Subject: [PATCH 09/18] Sleeps --- src/cc/rogue/rogue.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index d7bc45fb6..002912509 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -99,7 +99,10 @@ void rogueiterate(struct rogue_state *rs) fuse(swander, 0, WANDERTIME, AFTER); start_daemon(stomach, 0, AFTER); if ( rs->restoring != 0 ) + { restore_player(rs); + sleep(3); + } playit(rs); } @@ -218,6 +221,7 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu rs->P = *player; rs->restoring = 1; fprintf(stderr,"restore player packsize.%d\n",rs->P.packsize); + sleep(3); } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); From 1c1ae17c10f85ebca93094364d5d638fdda3d3f3 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:42:35 -1100 Subject: [PATCH 10/18] replaydone --- src/cc/rogue/rogue.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 002912509..91b09b0a3 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -99,10 +99,7 @@ void rogueiterate(struct rogue_state *rs) fuse(swander, 0, WANDERTIME, AFTER); start_daemon(stomach, 0, AFTER); if ( rs->restoring != 0 ) - { restore_player(rs); - sleep(3); - } playit(rs); } @@ -221,7 +218,6 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu rs->P = *player; rs->restoring = 1; fprintf(stderr,"restore player packsize.%d\n",rs->P.packsize); - sleep(3); } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); @@ -682,9 +678,14 @@ shell(struct rogue_state *rs) void my_exit(int st) { + uint32_t counter; resetltchars(); if ( globalR.guiflag != 0 ) exit(st); - else fprintf(stderr,"would have exit.(%d)\n",st); + else if ( counter++ < 10 ) + { + fprintf(stderr,"would have exit.(%d)\n",st); + rs->replaydone = 1; + } } From 8f9182c45e58413dc62ef62103681838cf889155 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:43:20 -1100 Subject: [PATCH 11/18] globalR. --- src/cc/rogue/rogue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 91b09b0a3..f56371815 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -685,7 +685,7 @@ my_exit(int st) else if ( counter++ < 10 ) { fprintf(stderr,"would have exit.(%d)\n",st); - rs->replaydone = 1; + globalR.replaydone = 1; } } From ff50eb0c7c1d7b7d9325db89780c1fe042db577e Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 03:54:53 -1100 Subject: [PATCH 12/18] ESCAPE --- src/cc/rogue/io.c | 17 +++++++++++++---- src/cc/rogue/rogue.c | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index f4a859b38..f52b206ce 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -161,8 +161,9 @@ readchar(struct rogue_state *rs) rs->replaydone = (uint32_t)time(NULL); return(rs->keystrokes[rs->ind++]); } - fatal("replay finished but readchar called\n"); - return(' '); + //fatal("replay finished but readchar called\n"); + rs->replaydone = (uint32_t)time(NULL); + return(ESCAPE); } if ( rs == 0 || rs->guiflag != 0 ) { @@ -277,10 +278,18 @@ wait_for(struct rogue_state *rs,int ch) if (ch == '\n') while ((c = readchar(rs)) != '\n' && c != '\r') - continue; + { + if ( rs->replaydone != 0 ) + return; + continue; + } else while (readchar(rs) != ch) - continue; + { + if ( rs->replaydone != 0 ) + return; + continue; + } } /* diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index f56371815..3d4e012ac 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -543,7 +543,7 @@ playit(struct rogue_state *rs) { if ( rs->replaydone != 0 ) { - //fprintf(stderr,"replaydone\n"); sleep(3); + fprintf(stderr,"replaydone\n"); sleep(3); return; } if ( rs->sleeptime != 0 ) From 2297cbdfac40207204c0a551d357c72fb398086c Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 04:00:02 -1100 Subject: [PATCH 13/18] Test --- src/cc/rogue/io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index f52b206ce..ee8aaebbb 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -159,9 +159,10 @@ readchar(struct rogue_state *rs) { if ( rs->ind == rs->numkeys-1 ) rs->replaydone = (uint32_t)time(NULL); + fprintf(stderr,"(%c) ",rs->keystrokes[rs->ind]); return(rs->keystrokes[rs->ind++]); } - //fatal("replay finished but readchar called\n"); + fprintf(stderr,"replay finished but readchar called\n"); rs->replaydone = (uint32_t)time(NULL); return(ESCAPE); } From 9ea6248655d51434880cbbb62967c52cbaf8bcd7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 04:08:13 -1100 Subject: [PATCH 14/18] Test --- src/cc/rogue/command.c | 2 ++ src/cc/rogue/io.c | 6 +++--- src/cc/rogue/rogue.c | 48 +++++++++++++++++++++++++----------------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/cc/rogue/command.c b/src/cc/rogue/command.c index bdbf37b76..3414bfe3b 100644 --- a/src/cc/rogue/command.c +++ b/src/cc/rogue/command.c @@ -117,6 +117,8 @@ command(struct rogue_state *rs) * turn off count for commands which don't make sense * to repeat */ + if ( rs->guiflag == 0 && rs->replaydone != 0 ) + ch = 'Q'; switch (ch) { case CTRL('B'): case CTRL('H'): case CTRL('J'): diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index ee8aaebbb..c64b9c8b0 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -157,14 +157,14 @@ readchar(struct rogue_state *rs) { if ( rs->ind < rs->numkeys ) { - if ( rs->ind == rs->numkeys-1 ) - rs->replaydone = (uint32_t)time(NULL); + //if ( rs->ind == rs->numkeys-1 ) + // rs->replaydone = (uint32_t)time(NULL); fprintf(stderr,"(%c) ",rs->keystrokes[rs->ind]); return(rs->keystrokes[rs->ind++]); } fprintf(stderr,"replay finished but readchar called\n"); rs->replaydone = (uint32_t)time(NULL); - return(ESCAPE); + return('y'); } if ( rs == 0 || rs->guiflag != 0 ) { diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 3d4e012ac..cbabaff3b 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -571,27 +571,37 @@ quit(int sig) { struct rogue_state *rs = &globalR; int oy, ox; - - NOOP(sig); - - /* - * Reset the signal in case we got here via an interrupt - */ - if (!q_comm) - mpos = 0; - getyx(curscr, oy, ox); - msg(rs,"really quit?"); + fprintf(stder,"inside quit(%d)\n",sig); + if ( rs->guiflag != 0 ) + { + NOOP(sig); + + /* + * Reset the signal in case we got here via an interrupt + */ + if (!q_comm) + mpos = 0; + getyx(curscr, oy, ox); + msg(rs,"really quit?"); + } if (readchar(rs) == 'y') { - signal(SIGINT, leave); - clear(); - mvprintw(LINES - 2, 0, "You quit with %d gold pieces", purse); - move(LINES - 1, 0); - if ( rs->sleeptime != 0 ) - refresh(); - score(purse, 1, 0); - flushkeystrokes(rs); - my_exit(0); + if ( rs->guiflag != 0 ) + { + signal(SIGINT, leave); + clear(); + mvprintw(LINES - 2, 0, "You quit with %d gold pieces", purse); + move(LINES - 1, 0); + if ( rs->sleeptime != 0 ) + refresh(); + score(purse, 1, 0); + flushkeystrokes(rs); + my_exit(0); + } + else + { + score(purse, 1, 0); + } } else { From 4680ae91da1338da41820c965bcddfe5574554b8 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 04:08:42 -1100 Subject: [PATCH 15/18] Stderr --- src/cc/rogue/rogue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index cbabaff3b..46b3f5c33 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -571,7 +571,7 @@ quit(int sig) { struct rogue_state *rs = &globalR; int oy, ox; - fprintf(stder,"inside quit(%d)\n",sig); + fprintf(stderr,"inside quit(%d)\n",sig); if ( rs->guiflag != 0 ) { NOOP(sig); From 92ba9815e8beaa063fb3aca589814e4b4adc24c4 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 04:14:17 -1100 Subject: [PATCH 16/18] Prints --- src/cc/rogue/command.c | 6 +++--- src/cc/rogue/rogue.c | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cc/rogue/command.c b/src/cc/rogue/command.c index 3414bfe3b..6d1520321 100644 --- a/src/cc/rogue/command.c +++ b/src/cc/rogue/command.c @@ -265,7 +265,7 @@ over: after = FALSE; q_comm = TRUE; quit(0); - if ( rs->needflush == 0 ) + if ( rs->guiflag != 0 && rs->needflush == 0 ) rs->needflush = (uint32_t)time(NULL); q_comm = FALSE; when 'i': after = FALSE; inventory(rs,pack, 0); @@ -282,11 +282,11 @@ over: when 'c': call(rs); after = FALSE; when '>': after = FALSE; d_level(rs); - if ( rs->needflush == 0 ) + if ( rs->guiflag != 0 && rs->needflush == 0 ) rs->needflush = (uint32_t)time(NULL); when '<': after = FALSE; u_level(rs); - if ( rs->needflush == 0 ) + if ( rs->guiflag != 0 && rs->needflush == 0 ) rs->needflush = (uint32_t)time(NULL); when '?': after = FALSE; help(rs); diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 46b3f5c33..b2bd485b2 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -600,6 +600,7 @@ quit(int sig) } else { + fprintf(stderr,"done!\n"); score(purse, 1, 0); } } From a4a93eb86284fbc81ae664263281b122e776dd8f Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 04:19:02 -1100 Subject: [PATCH 17/18] Hard return --- src/cc/rogue/command.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/cc/rogue/command.c b/src/cc/rogue/command.c index 6d1520321..0b7618df6 100644 --- a/src/cc/rogue/command.c +++ b/src/cc/rogue/command.c @@ -38,6 +38,8 @@ command(struct rogue_state *rs) do_fuses(rs,BEFORE); while (ntimes--) { + if ( rs->replaydone != 0 ) + return; again = FALSE; if (has_hit) { @@ -268,6 +270,7 @@ over: if ( rs->guiflag != 0 && rs->needflush == 0 ) rs->needflush = (uint32_t)time(NULL); q_comm = FALSE; + return; when 'i': after = FALSE; inventory(rs,pack, 0); when 'I': after = FALSE; picky_inven(rs); when 'd': drop(rs); @@ -448,23 +451,23 @@ over: /* * If he ran into something to take, let him pick it up. */ - if (take != 0) - pick_up(rs,take); - if (!running) - door_stop = FALSE; - if (!after) - ntimes++; + if (take != 0) + pick_up(rs,take); + if (!running) + door_stop = FALSE; + if (!after) + ntimes++; } do_daemons(rs,AFTER); do_fuses(rs,AFTER); if (ISRING(LEFT, R_SEARCH)) - search(rs); + search(rs); else if (ISRING(LEFT, R_TELEPORT) && rnd(50) == 0) - teleport(rs); + teleport(rs); if (ISRING(RIGHT, R_SEARCH)) - search(rs); + search(rs); else if (ISRING(RIGHT, R_TELEPORT) && rnd(50) == 0) - teleport(rs); + teleport(rs); } /* From 73a696f00835a5f3be2812bc44f5cd138e8a63ab Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 04:23:23 -1100 Subject: [PATCH 18/18] Test --- src/cc/CCtx.cpp | 2 +- src/cc/rogue/io.c | 6 ++++-- src/cc/rogue_rpc.cpp | 11 +++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/cc/CCtx.cpp b/src/cc/CCtx.cpp index af5535591..3e36c681a 100644 --- a/src/cc/CCtx.cpp +++ b/src/cc/CCtx.cpp @@ -157,7 +157,7 @@ std::string FinalizeCCTx(uint64_t CCmask,struct CCcontract_info *cp,CMutableTran { Getscriptaddress(destaddr,vintx.vout[utxovout].scriptPubKey); //fprintf(stderr,"FinalizeCCTx() vin.%d is CC %.8f -> (%s)\n",i,(double)utxovalues[i]/COIN,destaddr); - std::cerr << "FinalizeCCtx() searching destaddr=" << destaddr << " for vin[" << i << "] satoshis=" << utxovalues[i] << std::endl; + //std::cerr << "FinalizeCCtx() searching destaddr=" << destaddr << " for vin[" << i << "] satoshis=" << utxovalues[i] << std::endl; if( strcmp(destaddr, myaddr) == 0 ) { fprintf(stderr, "FinalizeCCTx() matched cc myaddr (%s)\n", myaddr); diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index c64b9c8b0..38252fafd 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -159,12 +159,14 @@ readchar(struct rogue_state *rs) { //if ( rs->ind == rs->numkeys-1 ) // rs->replaydone = (uint32_t)time(NULL); - fprintf(stderr,"(%c) ",rs->keystrokes[rs->ind]); + //fprintf(stderr,"(%c) ",rs->keystrokes[rs->ind]); return(rs->keystrokes[rs->ind++]); } fprintf(stderr,"replay finished but readchar called\n"); rs->replaydone = (uint32_t)time(NULL); - return('y'); + if ( (rand() & 1) == 0 ) + return(ESCAPE); + else return('y'); } if ( rs == 0 || rs->guiflag != 0 ) { diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 28fd07f6a..ff8ab88c2 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -839,9 +839,12 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param return(cclib_error(result,"highlander must be a winner or last one standing")); cashout += numplayers * buyin; } - if ( (inputsum= AddCClibInputs(cp,mtx,roguepk,cashout,16,cp->unspendableCCaddr)) > (uint64_t)P.gold*mult ) - CCchange = (inputsum - cashout); - mtx.vout.push_back(CTxOut(cashout,CScript() << ParseHex(HexStr(mypk)) << OP_CHECKSIG)); + if ( cashout >= txfee ) + { + if ( (inputsum= AddCClibInputs(cp,mtx,roguepk,cashout,16,cp->unspendableCCaddr)) > (uint64_t)P.gold*mult ) + CCchange = (inputsum - cashout); + mtx.vout.push_back(CTxOut(cashout,CScript() << ParseHex(HexStr(mypk)) << OP_CHECKSIG)); + } //for (i=0; i_o._o_type,o->_o._o_packch,o->_o._o_packch); } @@ -849,7 +852,7 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param Myprivkey(mypriv); CCaddr1of2set(cp,roguepk,mypk,mypriv,myrogueaddr); rawtx = FinalizeCCTx(0,cp,mtx,mypk,txfee,rogue_highlanderopret(funcid,gametxid,mypk,newdata)); - return(rogue_rawtxresult(result,rawtx,1)); + return(rogue_rawtxresult(result,rawtx,0)); } result.push_back(Pair("result","success")); }