From fdd1d04b1065e7f76634819206b919f6d9a93ab2 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 10 Feb 2019 02:17:59 -1100 Subject: [PATCH] dapp loading player data --- src/cc/rogue/rogue.c | 38 ++++++++++++++++++++++++++++++++++++++ src/cc/rogue/state.c | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index c52002447..91d638e12 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -142,6 +142,43 @@ int32_t flushkeystrokes(struct rogue_state *rs) } #else +uint8_t *OS_fileptr(long *allocsizep,char *fname); + +void 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; + 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 ) + fprintf(stderr,"error issuing (%s)\n",cmd); + else + { + filestr = (char *)OS_fileptr(&allocsize,fname); + if ( (retjson= cJSON_Parse(filestr)) != 0 ) + { + if ( (array= jarray(&n,retjson,"players")) != 0 ) + { + for (i=0; iP,(int32_t)strlen(datastr)/2,datastr); + fprintf(stderr,"set datastr[%d]\n",(int32_t)strlen(datastr)); + rs->restoring = 1; + } + } + } + } + free_json(retjson); + } + free(filestr); + } +} + void rogue_progress(uint64_t seed,char *keystrokes,int32_t num) // use seed to lookup gametxid { char cmd[32768],hexstr[32768]; int32_t i; @@ -260,6 +297,7 @@ int rogue(int argc, char **argv, char **envp) { rs->seed = atol(argv[1]); strcpy(Gametxidstr,argv[2]); + rogue_setplayerdata(rs,Gametxidstr); } else rs->seed = 777; rs->guiflag = 1; rs->sleeptime = 1; // non-zero to allow refresh() diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index def3fb859..68686b255 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1390,7 +1390,7 @@ void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item) THING *obj = new_item(); rogue_restoreobject(obj,item); strcpy(packitemstr,inv_name(obj,FALSE)); - fprintf(stderr,"packitem.(%s)\n",packitemstr); + //fprintf(stderr,"packitem.(%s)\n",packitemstr); free(obj); }