From 1917708467bb4fa454ae191596c3353a08791d41 Mon Sep 17 00:00:00 2001 From: jl777 Date: Wed, 13 Feb 2019 06:35:56 -1100 Subject: [PATCH 01/64] Fix edge case --- src/cc/rogue/command.c | 7 +++++-- src/cc/rogue/main.c | 1 + src/cc/rogue/rogue.h | 10 ++++++++++ src/cc/rogue_rpc.cpp | 31 +++++++++++++++++-------------- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/cc/rogue/command.c b/src/cc/rogue/command.c index 9446d704f..63aed25be 100644 --- a/src/cc/rogue/command.c +++ b/src/cc/rogue/command.c @@ -312,9 +312,12 @@ over: after = FALSE; msg(rs,"version %s. (mctesq was here)", release); when 'S': - msg(rs,"Saving is disabled, use bailout rpc"); after = FALSE; - //save_game(rs); +#ifdef STANDALONE + save_game(rs); +#else + msg(rs,"Saving is disabled, use bailout rpc"); +#endif when '.': ; /* Rest command */ when ' ': after = FALSE; /* "Legal" illegal command */ when '^': diff --git a/src/cc/rogue/main.c b/src/cc/rogue/main.c index 21c52deab..c3484eafe 100644 --- a/src/cc/rogue/main.c +++ b/src/cc/rogue/main.c @@ -19,6 +19,7 @@ #include #include #include +#include #define SMALLVAL 0.000000000000001 #define SATOSHIDEN ((uint64_t)100000000L) diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index 5eccb2e8c..a407ae8a6 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -17,6 +17,16 @@ #undef lines +#ifdef LINES +#undef LINES +#endif +#ifdef COLS +#undef COLS +#endif + +#define LINES 24 +#define COLS 80 + #define NOOP(x) (x += 0) #define CCHAR(x) ( (char) (x & A_CHARTEXT) ) /* diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index f37d587ea..86a633212 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -22,6 +22,23 @@ #define ROGUE_MAXPLAYERS 64 // need to send unused fees back to globalCC address to prevent leeching #define ROGUE_MAXKEYSTROKESGAP 60 #define ROGUE_MAXITERATIONS 777 + +#define MAXPACK 23 +struct rogue_packitem +{ + int32_t type,launch,count,which,hplus,dplus,arm,flags,group; + char damage[8],hurldmg[8]; +}; +struct rogue_player +{ + int32_t gold,hitpoints,strength,level,experience,packsize,dungeonlevel,pad; + struct rogue_packitem roguepack[MAXPACK]; +}; +int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player); +#define ROGUE_DECLARED_PACK +void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item); + + std::string Rogue_pname = "fred"; /* @@ -133,20 +150,6 @@ std::string Rogue_pname = "fred"; // ./c cclib bailout 17 \"[%226d3243c6e5ab383898b28a87e01f6c00b5bdd9687020f17f5caacc8a61febd19%22]\" // ./komodo-cli -ac_name=ROGUE cclib register 17 \"[%22a898f4ceef7647ba113b9f3c24ef045f5d134935a3b09bdd1a997b9d474f4c1b%22,%22f11d0cb4e2e4c21f029a1146f8e5926f11456885b7ab7d665096f5efedec8ea0%22]\" -#define MAXPACK 23 -struct rogue_packitem -{ - int32_t type,launch,count,which,hplus,dplus,arm,flags,group; - char damage[8],hurldmg[8]; -}; -struct rogue_player -{ - int32_t gold,hitpoints,strength,level,experience,packsize,dungeonlevel,pad; - struct rogue_packitem roguepack[MAXPACK]; -}; -int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player); -#define ROGUE_DECLARED_PACK -void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item); CScript rogue_newgameopret(int64_t buyin,int32_t maxplayers) { From 5740e8605efb0ce939b0d5458f0a88ce6e2cc2ac Mon Sep 17 00:00:00 2001 From: ca333 Date: Thu, 14 Feb 2019 12:01:18 +0100 Subject: [PATCH 02/64] add depends include os specific dependency headers --- src/cc/makerogue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/makerogue b/src/cc/makerogue index 08c86dee8..c4fc45dd7 100755 --- a/src/cc/makerogue +++ b/src/cc/makerogue @@ -1,7 +1,7 @@ cd rogue; ./configure # only need this first time make; cd .. -gcc -Wno-write-strings -DBUILD_ROGUE -std=c++11 -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared -o librogue.so -c cclib.cpp -lncurses +gcc -Wno-write-strings -DBUILD_ROGUE -std=c++11 -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared -o librogue.so -c cclib.cpp -lncurses #gcc -std=c++11 -fPIC -shared -o librogue.so cclib.o rogue/rogue.so cp librogue.so ../libcc.so From a37e1ae63363c64f1503e9a7c9c306666d3b432c Mon Sep 17 00:00:00 2001 From: dimxy Date: Thu, 14 Feb 2019 23:02:38 +0500 Subject: [PATCH 03/64] vopretStripped eliminated in heir cc --- src/cc/heir.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cc/heir.cpp b/src/cc/heir.cpp index 4fea0be1e..d90f87d07 100644 --- a/src/cc/heir.cpp +++ b/src/cc/heir.cpp @@ -327,16 +327,17 @@ uint8_t _DecodeHeirEitherOpRet(CScript scriptPubKey, uint256 &tokenid, CPubKey& { uint8_t evalCodeTokens = 0; std::vector voutPubkeysDummy; - std::vector vopretExtra, vopretStripped; + std::vector vopretExtra /*, vopretStripped*/; if (DecodeTokenOpRet(scriptPubKey, evalCodeTokens, tokenid, voutPubkeysDummy, vopretExtra) != 0) { if (vopretExtra.size() > 1) { // restore the second opret: - if (!E_UNMARSHAL(vopretExtra, { ss >> vopretStripped; })) { //strip string size + /* unmarshalled in DecodeTokenOpRet: + if (!E_UNMARSHAL(vopretExtra, { ss >> vopretStripped; })) { //strip string size if (!noLogging) std::cerr << "_DecodeHeirEitherOpret() could not unmarshal vopretStripped" << std::endl; return (uint8_t)0; - } + }*/ } else { if (!noLogging) std::cerr << "_DecodeHeirEitherOpret() empty vopretExtra" << std::endl; @@ -344,10 +345,10 @@ uint8_t _DecodeHeirEitherOpRet(CScript scriptPubKey, uint256 &tokenid, CPubKey& } } else { - GetOpReturnData(scriptPubKey, vopretStripped); + GetOpReturnData(scriptPubKey, vopretExtra); } - return _DecodeHeirOpRet(vopretStripped, ownerPubkey, heirPubkey, inactivityTime, heirName, memo, fundingTxidInOpret, hasHeirSpendingBegun, noLogging); + return _DecodeHeirOpRet(vopretExtra, ownerPubkey, heirPubkey, inactivityTime, heirName, memo, fundingTxidInOpret, hasHeirSpendingBegun, noLogging); } // overload to decode opret in fundingtxid: From dc739bc9daac0bff64c829adbe3de87018676f00 Mon Sep 17 00:00:00 2001 From: dimxy Date: Thu, 14 Feb 2019 23:33:34 +0500 Subject: [PATCH 04/64] empty if{} removed --- src/cc/heir.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cc/heir.cpp b/src/cc/heir.cpp index d90f87d07..aca30208b 100644 --- a/src/cc/heir.cpp +++ b/src/cc/heir.cpp @@ -330,16 +330,16 @@ uint8_t _DecodeHeirEitherOpRet(CScript scriptPubKey, uint256 &tokenid, CPubKey& std::vector vopretExtra /*, vopretStripped*/; if (DecodeTokenOpRet(scriptPubKey, evalCodeTokens, tokenid, voutPubkeysDummy, vopretExtra) != 0) { - if (vopretExtra.size() > 1) { - // restore the second opret: + /* if (vopretExtra.size() > 1) { + // restore the second opret: - /* unmarshalled in DecodeTokenOpRet: + /* unmarshalled in DecodeTokenOpRet: if (!E_UNMARSHAL(vopretExtra, { ss >> vopretStripped; })) { //strip string size - if (!noLogging) std::cerr << "_DecodeHeirEitherOpret() could not unmarshal vopretStripped" << std::endl; - return (uint8_t)0; - }*/ - } - else { + if (!noLogging) std::cerr << "_DecodeHeirEitherOpret() could not unmarshal vopretStripped" << std::endl; + return (uint8_t)0; + } + } */ + if (vopretExtra.size() < 1) { if (!noLogging) std::cerr << "_DecodeHeirEitherOpret() empty vopretExtra" << std::endl; return (uint8_t)0; } From 28ee0fd7565a4ac9247be588e2af67af4c711b95 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 14 Feb 2019 20:24:44 -1100 Subject: [PATCH 05/64] -fred --- src/cc/rogue_rpc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 86a633212..e2e427545 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -39,7 +39,7 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item); -std::string Rogue_pname = "fred"; +std::string Rogue_pname = ""; /* Roguelander - using highlander competition between rogue players @@ -403,7 +403,7 @@ UniValue rogue_playerobj(std::vector playerdata,uint256 playertxid,uint obj.push_back(Pair("experience",(int64_t)P.experience)); obj.push_back(Pair("dungeonlevel",(int64_t)P.dungeonlevel)); obj.push_back(Pair("chain",symbol)); - obj.push_back(Pair("name",pname)); + obj.push_back(Pair("pname",pname)); return(obj); } From b6e147e4d81b7aabbda58a0940ac1b7eb96ac243 Mon Sep 17 00:00:00 2001 From: jl777 Date: Thu, 14 Feb 2019 20:42:03 -1100 Subject: [PATCH 06/64] pname --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index e2e427545..70a4b842e 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1109,7 +1109,7 @@ UniValue rogue_setname(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) if ( (namestr= jstri(params,0)) != 0 ) { result.push_back(Pair("result","success")); - result.push_back(Pair("name",namestr)); + result.push_back(Pair("pname",namestr)); Rogue_pname = namestr; return(result); } From b6f1f8cf13b52469f3be607b3bbe7de47b693e47 Mon Sep 17 00:00:00 2001 From: Mihailo Milenkovic Date: Fri, 15 Feb 2019 11:10:36 +0100 Subject: [PATCH 07/64] Fix for new DecodeTokenOpRet --- src/cc/channels.cpp | 6 +++--- src/cc/gateways.cpp | 20 ++++++++------------ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/cc/channels.cpp b/src/cc/channels.cpp index ca069ee57..fd20314bb 100644 --- a/src/cc/channels.cpp +++ b/src/cc/channels.cpp @@ -106,12 +106,12 @@ CScript EncodeChannelsOpRet(uint8_t funcid,uint256 tokenid,uint256 opentxid,CPub uint8_t DecodeChannelsOpRet(const CScript &scriptPubKey, uint256 &tokenid, uint256 &opentxid, CPubKey &srcpub,CPubKey &destpub,int32_t &numpayments,int64_t &payment,uint256 &hashchain) { - std::vector vopret; uint8_t *script,e,f,tokenevalcode; - std::vector pubkeys; std::vector vOpretExtra; + std::vector vopret,vOpretExtra; uint8_t *script,e,f,tokenevalcode; + std::vector pubkeys; if (DecodeTokenOpRet(scriptPubKey,tokenevalcode,tokenid,pubkeys,vOpretExtra)!=0 && tokenevalcode==EVAL_TOKENS && vOpretExtra.size()>0) { - if (!E_UNMARSHAL(vOpretExtra, { ss >> vopret; })) return (0); + vopret=vOpretExtra; } else GetOpReturnData(scriptPubKey, vopret); if ( vopret.size() > 2 ) diff --git a/src/cc/gateways.cpp b/src/cc/gateways.cpp index 41cd37e3a..5d803a80e 100644 --- a/src/cc/gateways.cpp +++ b/src/cc/gateways.cpp @@ -167,12 +167,11 @@ CScript EncodeGatewaysBindOpRet(uint8_t funcid,uint256 tokenid,std::string coin, uint8_t DecodeGatewaysBindOpRet(char *depositaddr,const CScript &scriptPubKey,uint256 &tokenid,std::string &coin,int64_t &totalsupply,uint256 &oracletxid,uint8_t &M,uint8_t &N,std::vector &gatewaypubkeys,uint8_t &taddr,uint8_t &prefix,uint8_t &prefix2,uint8_t wiftype) { - std::vector vopret; uint8_t *script,e,f,tokenevalcode; - std::vector vOpretExtra; std::vector pubkeys; + std::vector vopret,vOpretExtra; uint8_t *script,e,f,tokenevalcode; std::vector pubkeys; if (DecodeTokenOpRet(scriptPubKey,tokenevalcode,tokenid,pubkeys,vOpretExtra)!=0 && tokenevalcode==EVAL_TOKENS && vOpretExtra.size()>0) { - if (!E_UNMARSHAL(vOpretExtra, { ss >> vopret; })) return (0); + vopret=vOpretExtra; } else GetOpReturnData(scriptPubKey, vopret); script = (uint8_t *)vopret.data(); @@ -230,12 +229,11 @@ CScript EncodeGatewaysClaimOpRet(uint8_t funcid,uint256 tokenid,uint256 bindtxid uint8_t DecodeGatewaysClaimOpRet(const CScript &scriptPubKey,uint256 &tokenid,uint256 &bindtxid,std::string &refcoin,uint256 &deposittxid,CPubKey &destpub,int64_t &amount) { - std::vector vopret; uint8_t *script,e,f,tokenevalcode; - std::vector pubkeys; std::vector vOpretExtra; + std::vector vopret,vOpretExtra; uint8_t *script,e,f,tokenevalcode; std::vector pubkeys; if (DecodeTokenOpRet(scriptPubKey,tokenevalcode,tokenid,pubkeys,vOpretExtra)!=0 && tokenevalcode==EVAL_TOKENS && vOpretExtra.size()>0) { - if (!E_UNMARSHAL(vOpretExtra, { ss >> vopret; })) return (0); + vopret=vOpretExtra; } else GetOpReturnData(scriptPubKey, vopret); script = (uint8_t *)vopret.data(); @@ -260,12 +258,11 @@ CScript EncodeGatewaysWithdrawOpRet(uint8_t funcid,uint256 tokenid,uint256 bindt uint8_t DecodeGatewaysWithdrawOpRet(const CScript &scriptPubKey, uint256& tokenid, uint256 &bindtxid, std::string &refcoin, CPubKey &withdrawpub, int64_t &amount) { - std::vector vopret; uint8_t *script,e,f,tokenevalcode; - std::vector pubkeys; std::vector vOpretExtra; + std::vector vopret,vOpretExtra; uint8_t *script,e,f,tokenevalcode; std::vector pubkeys; if (DecodeTokenOpRet(scriptPubKey,tokenevalcode,tokenid,pubkeys,vOpretExtra)!=0 && tokenevalcode==EVAL_TOKENS && vOpretExtra.size()>0) { - if (!E_UNMARSHAL(vOpretExtra, { ss >> vopret; })) return (0); + vopret=vOpretExtra; } else GetOpReturnData(scriptPubKey, vopret); script = (uint8_t *)vopret.data(); @@ -339,12 +336,11 @@ uint8_t DecodeGatewaysMarkDoneOpRet(const CScript &scriptPubKey, uint256 &withdr uint8_t DecodeGatewaysOpRet(const CScript &scriptPubKey) { - std::vector vopret; uint8_t *script,e,f,tokenevalcode; - std::vector pubkeys; std::vector vOpretExtra; uint256 tokenid; + std::vector vopret,vOpretExtra; uint8_t *script,e,f,tokenevalcode; std::vector pubkeys; uint256 tokenid; if (DecodeTokenOpRet(scriptPubKey,tokenevalcode,tokenid,pubkeys,vOpretExtra)!=0 && tokenevalcode==EVAL_TOKENS && vOpretExtra.size()>0) { - if (!E_UNMARSHAL(vOpretExtra, { ss >> vopret; })) return (0); + vopret=vOpretExtra; } else GetOpReturnData(scriptPubKey, vopret); script = (uint8_t *)vopret.data(); From def8dd646268a81afd9a3cbf8db4dff4d2e488ab Mon Sep 17 00:00:00 2001 From: jl777 Date: Fri, 15 Feb 2019 00:45:01 -1100 Subject: [PATCH 08/64] (int64_t) in Pair --- src/cc/makecclib | 1 + src/cc/makerogue | 1 + src/cc/rogue_rpc.cpp | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/cc/makecclib b/src/cc/makecclib index 0aecab072..ea44acdae 100755 --- a/src/cc/makecclib +++ b/src/cc/makecclib @@ -1 +1,2 @@ +#!/bin/sh gcc -std=c++11 -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared -c -o ../libcc.so cclib.cpp diff --git a/src/cc/makerogue b/src/cc/makerogue index c4fc45dd7..490576bd1 100755 --- a/src/cc/makerogue +++ b/src/cc/makerogue @@ -1,3 +1,4 @@ +#!/bin/sh cd rogue; ./configure # only need this first time make; cd .. diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 70a4b842e..5daca5d1c 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -1028,7 +1028,7 @@ UniValue rogue_pending(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) result.push_back(Pair("result","success")); rogue_univalue(result,"pending",-1,-1); result.push_back(Pair("pending",a)); - result.push_back(Pair("numpending",a.size())); + result.push_back(Pair("numpending",(int64_t)a.size())); return(result); } @@ -1055,7 +1055,7 @@ UniValue rogue_players(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) } } result.push_back(Pair("playerdata",a)); - result.push_back(Pair("numplayerdata",a.size())); + result.push_back(Pair("numplayerdata",(int64_t)a.size())); return(result); } @@ -1094,7 +1094,7 @@ UniValue rogue_games(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) } result.push_back(Pair("pastgames",b)); result.push_back(Pair("games",a)); - result.push_back(Pair("numgames",a.size()+b.size())); + result.push_back(Pair("numgames",(int64_t)(a.size()+b.size()))); return(result); } From c9b2389854e7872d2f90d77e40d887af60dd5dbe Mon Sep 17 00:00:00 2001 From: jl777 Date: Fri, 15 Feb 2019 04:44:22 -1100 Subject: [PATCH 09/64] Gather curses dependencies --- src/cc/rogue/armor.c | 2 +- src/cc/rogue/chase.c | 4 +- src/cc/rogue/command.c | 5 +-- src/cc/rogue/daemon.c | 2 +- src/cc/rogue/daemons.c | 2 +- src/cc/rogue/extern.c | 2 +- src/cc/rogue/extern.h | 3 ++ src/cc/rogue/fight.c | 8 ++-- src/cc/rogue/init.c | 8 ++-- src/cc/rogue/io.c | 11 ++--- src/cc/rogue/list.c | 6 +-- src/cc/rogue/mach_dep.c | 3 +- src/cc/rogue/mdport.c | 2 +- src/cc/rogue/misc.c | 8 ++-- src/cc/rogue/monsters.c | 6 +-- src/cc/rogue/move.c | 4 +- src/cc/rogue/new_level.c | 4 +- src/cc/rogue/options.c | 8 ++-- src/cc/rogue/pack.c | 6 +-- src/cc/rogue/passages.c | 4 +- src/cc/rogue/potions.c | 4 +- src/cc/rogue/rings.c | 2 +- src/cc/rogue/rip.c | 14 +++--- src/cc/rogue/rogue.c | 40 +++++++++-------- src/cc/rogue/rogue.h | 91 +++++++++++++++++++++++++++++++++++++- src/cc/rogue/rooms.c | 4 +- src/cc/rogue/save.c | 14 +++--- src/cc/rogue/scrolls.c | 4 +- src/cc/rogue/state.c | 6 +-- src/cc/rogue/sticks.c | 6 +-- src/cc/rogue/things.c | 94 ++++++++++++++++++++-------------------- src/cc/rogue/weapons.c | 6 +-- src/cc/rogue/wizard.c | 8 ++-- 33 files changed, 242 insertions(+), 149 deletions(-) diff --git a/src/cc/rogue/armor.c b/src/cc/rogue/armor.c index 5244628b1..20c5704a8 100644 --- a/src/cc/rogue/armor.c +++ b/src/cc/rogue/armor.c @@ -9,7 +9,7 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/chase.c b/src/cc/rogue/chase.c index 73d53e1fd..059df470d 100644 --- a/src/cc/rogue/chase.c +++ b/src/cc/rogue/chase.c @@ -10,8 +10,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" #define DRAGONSHOT 5 /* one chance in DRAGONSHOT that a dragon will flame */ diff --git a/src/cc/rogue/command.c b/src/cc/rogue/command.c index 63aed25be..1a32246bb 100644 --- a/src/cc/rogue/command.c +++ b/src/cc/rogue/command.c @@ -10,10 +10,7 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/daemon.c b/src/cc/rogue/daemon.c index 8309dc642..1da06d499 100644 --- a/src/cc/rogue/daemon.c +++ b/src/cc/rogue/daemon.c @@ -11,7 +11,7 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include +//#include #include "rogue.h" #define EMPTY 0 diff --git a/src/cc/rogue/daemons.c b/src/cc/rogue/daemons.c index 436aa004d..42e685320 100644 --- a/src/cc/rogue/daemons.c +++ b/src/cc/rogue/daemons.c @@ -10,7 +10,7 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/extern.c b/src/cc/rogue/extern.c index 39a48b23f..fdb77307c 100644 --- a/src/cc/rogue/extern.c +++ b/src/cc/rogue/extern.c @@ -10,7 +10,7 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include +//#include #include "rogue.h" diff --git a/src/cc/rogue/extern.h b/src/cc/rogue/extern.h index 486d85ff1..fc3454830 100644 --- a/src/cc/rogue/extern.h +++ b/src/cc/rogue/extern.h @@ -13,6 +13,9 @@ #ifndef H_EXTERN_ROGUE_H #define H_EXTERN_ROGUE_H +#include +#include + #ifdef HAVE_CONFIG_H #ifdef PDCURSES #undef HAVE_UNISTD_H diff --git a/src/cc/rogue/fight.c b/src/cc/rogue/fight.c index 7f4aad587..43474616e 100644 --- a/src/cc/rogue/fight.c +++ b/src/cc/rogue/fight.c @@ -10,10 +10,10 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" //#define EQSTR(a, b) (strcmp(a, b) == 0) diff --git a/src/cc/rogue/init.c b/src/cc/rogue/init.c index 1f63e1d51..1603474e2 100644 --- a/src/cc/rogue/init.c +++ b/src/cc/rogue/init.c @@ -10,10 +10,10 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index 30795f2ad..6791c26a4 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -4,10 +4,10 @@ * @(#)io.c 4.32 (Berkeley) 02/05/99 */ -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" /* @@ -162,7 +162,8 @@ readchar(struct rogue_state *rs) //fprintf(stderr,"(%c) ",rs->keystrokes[rs->ind]); return(rs->keystrokes[rs->ind++]); } - fprintf(stderr,"replay finished but readchar called\n"); + if ( rs->replaydone != 0 ) + fprintf(stderr,"replay finished but readchar called\n"); rs->replaydone = (uint32_t)time(NULL); //if ( (rand() & 1) == 0 ) // return(ESCAPE); diff --git a/src/cc/rogue/list.c b/src/cc/rogue/list.c index 6affc662c..622af60cd 100644 --- a/src/cc/rogue/list.c +++ b/src/cc/rogue/list.c @@ -10,9 +10,9 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include +//#include +//#include +//#include #include "rogue.h" #ifdef MASTER diff --git a/src/cc/rogue/mach_dep.c b/src/cc/rogue/mach_dep.c index 34e502816..6d0e1c66f 100644 --- a/src/cc/rogue/mach_dep.c +++ b/src/cc/rogue/mach_dep.c @@ -46,7 +46,8 @@ #include #include #include -#include +//#include +#include "rogue.h" #include "extern.h" #define NOOP(x) (x += 0) diff --git a/src/cc/rogue/mdport.c b/src/cc/rogue/mdport.c index acd257617..443ef1e60 100644 --- a/src/cc/rogue/mdport.c +++ b/src/cc/rogue/mdport.c @@ -44,7 +44,7 @@ #undef MOUSE_MOVED #endif -#include +//#include #include "extern.h" #if defined(HAVE_SYS_TYPES) diff --git a/src/cc/rogue/misc.c b/src/cc/rogue/misc.c index 168886b6b..7db9d073a 100644 --- a/src/cc/rogue/misc.c +++ b/src/cc/rogue/misc.c @@ -10,10 +10,10 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/monsters.c b/src/cc/rogue/monsters.c index 4649de9a2..2f6d68362 100644 --- a/src/cc/rogue/monsters.c +++ b/src/cc/rogue/monsters.c @@ -10,10 +10,10 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" -#include +//#include /* * List of monsters in rough order of vorpalness diff --git a/src/cc/rogue/move.c b/src/cc/rogue/move.c index 3bdf90d37..c70d668ca 100644 --- a/src/cc/rogue/move.c +++ b/src/cc/rogue/move.c @@ -10,8 +10,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/new_level.c b/src/cc/rogue/new_level.c index 9dc0d761f..b55d3e42c 100644 --- a/src/cc/rogue/new_level.c +++ b/src/cc/rogue/new_level.c @@ -11,8 +11,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" #define TREAS_ROOM 20 /* one chance in TREAS_ROOM for a treasure room */ diff --git a/src/cc/rogue/options.c b/src/cc/rogue/options.c index 6907da598..d74979365 100644 --- a/src/cc/rogue/options.c +++ b/src/cc/rogue/options.c @@ -12,10 +12,10 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" #define EQSTR(a, b, c) (strncmp(a, b, c) == 0) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index ee628b4f0..b6debc966 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -10,9 +10,9 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include +//#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/passages.c b/src/cc/rogue/passages.c index 79b3706aa..5437f4972 100644 --- a/src/cc/rogue/passages.c +++ b/src/cc/rogue/passages.c @@ -10,8 +10,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/potions.c b/src/cc/rogue/potions.c index de09efb9b..00865b5dd 100644 --- a/src/cc/rogue/potions.c +++ b/src/cc/rogue/potions.c @@ -10,8 +10,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" typedef struct diff --git a/src/cc/rogue/rings.c b/src/cc/rogue/rings.c index 56f7a0294..747da302a 100644 --- a/src/cc/rogue/rings.c +++ b/src/cc/rogue/rings.c @@ -10,7 +10,7 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/rip.c b/src/cc/rogue/rip.c index a5b3e7208..be97fb867 100644 --- a/src/cc/rogue/rip.c +++ b/src/cc/rogue/rip.c @@ -11,14 +11,14 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include +//#include +//#include +//#include #include -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" #include "score.h" diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 00cda9426..be17b25be 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -8,12 +8,11 @@ * @(#)main.c 4.22 (Berkeley) 02/05/99 */ -#include -#include +//#include +//#include #include -#include -#include -#include +//#include +//#include #include "rogue.h" #ifdef STANDALONE #include "../komodo/src/komodo_cJSON.h" @@ -88,6 +87,8 @@ void rogueiterate(struct rogue_state *rs) endwin(); my_exit(1); } + //fprintf(stderr,"LINES %d, COLS %d\n",LINES,COLS); + // Set up windows if ( hw == NULL ) hw = newwin(LINES, COLS, 0, 0); @@ -247,21 +248,24 @@ int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t nu } 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++) + if ( 0 ) { - 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(2); + + starttime = (uint32_t)time(NULL); + for (i=0; i<10000; 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(3); } - fprintf(stderr,"elapsed %d seconds\n",(uint32_t)time(NULL)-starttime); - sleep(1);*/ if ( (fp= fopen("checkfile","wb")) != 0 ) { save_file(rs,fp,0); diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index a407ae8a6..419d5aa1b 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -12,10 +12,92 @@ #ifndef H_ROGUE_H #define H_ROGUE_H +#include +#include +#include +#include +#include +#include +#include /* we need va_list */ +#include /* we want wchar_t */ +#include +#include -#include "extern.h" +#include +#include +#include +#include +#include -#undef lines +#ifndef DONTUSEGUI +#include +#else + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +typedef void *WINDOW; +WINDOW stdscr; + +#define standout() +#define standend() +#define refresh() +#define raw() +#define noecho() +#define flushinp() +#define initscr() +#define clear() +#define clrtoeol() + +#define addch(a) +#define werase(a) +#define wclear(a) +#define delwin(a) +#define addstr(a) +#define touchwin(a) +#define idlok(a,b) +#define clearok(a,b) +#define keypad(a,b) +#define leaveok(a,b) +#define waddch(a,b) +#define waddstr(a,b) +#define move(a,b) +#define mvwin(a,b,c) +#define wmove(a,b,c) +#define mvaddch(a,b,c) +#define mvaddstr(a,b,c) +#define wgetnstr(a,b,c) +#define getyx(a,b,c) +#define mvcur(a,b,c,d) +#define mvwaddch(a,b,c,d) +#define mvprintw(...) +#define printw(...) +#define wprintw(...) +#define mvwprintw(...) + + +#define A_CHARTEXT 0xff +#define inch() 0 +#define endwin() 1 +#define isendwin() 0 +#define baudrate() 9600 +#define killchar() 3 +#define erasechar() 8 +#define wclrtoeol(a) 0 +#define wrefresh(a) 0 +#define unctrl(a) "^x" +#define getmaxx(a) COLS +#define getmaxy(a) LINES +#define mvinch(a,b) '.' +#define mvwinch(a,b,c) 0 +#define newwin(a,b,c,d) 0 +#define subwin(a,b,c,d,e) 0 + +#endif #ifdef LINES #undef LINES @@ -27,6 +109,11 @@ #define LINES 24 #define COLS 80 +#include "extern.h" + + +#undef lines + #define NOOP(x) (x += 0) #define CCHAR(x) ( (char) (x & A_CHARTEXT) ) /* diff --git a/src/cc/rogue/rooms.c b/src/cc/rogue/rooms.c index 31991b08f..41041d627 100644 --- a/src/cc/rogue/rooms.c +++ b/src/cc/rogue/rooms.c @@ -10,8 +10,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" typedef struct spot { /* position matrix for maze positions */ diff --git a/src/cc/rogue/save.c b/src/cc/rogue/save.c index adec30e2e..718c5074b 100644 --- a/src/cc/rogue/save.c +++ b/src/cc/rogue/save.c @@ -10,13 +10,13 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include -#include -#include -#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include #include "rogue.h" #include "score.h" diff --git a/src/cc/rogue/scrolls.c b/src/cc/rogue/scrolls.c index b6854ab07..5554a5701 100644 --- a/src/cc/rogue/scrolls.c +++ b/src/cc/rogue/scrolls.c @@ -10,8 +10,8 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index 3db54a319..e034039a8 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -29,9 +29,9 @@ SUCH DAMAGE. */ -#include -#include -#include +//#include +//#include +//#include #include "rogue.h" /************************************************************************/ diff --git a/src/cc/rogue/sticks.c b/src/cc/rogue/sticks.c index 39e098339..f048f9423 100644 --- a/src/cc/rogue/sticks.c +++ b/src/cc/rogue/sticks.c @@ -11,9 +11,9 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include +//#include +//#include +//#include #include "rogue.h" /* diff --git a/src/cc/rogue/things.c b/src/cc/rogue/things.c index 4e572c60b..29c51c4ed 100644 --- a/src/cc/rogue/things.c +++ b/src/cc/rogue/things.c @@ -11,9 +11,9 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include +//#include +//#include +//#include #include "rogue.h" /* @@ -498,55 +498,55 @@ add_line(struct rogue_state *rs,char *fmt, char *arg) if (line_cnt >= LINES - 1 || fmt == NULL) { if (inv_type == INV_OVER && fmt == NULL && !newpage) - { - msg(rs,""); + { + msg(rs,""); if ( rs->sleeptime != 0 ) refresh(); - tw = newwin(line_cnt + 1, maxlen + 2, 0, COLS - maxlen - 3); - sw = subwin(tw, line_cnt + 1, maxlen + 1, 0, COLS - maxlen - 2); - for (y = 0; y <= line_cnt; y++) - { - wmove(sw, y, 0); - for (x = 0; x <= maxlen; x++) - waddch(sw, mvwinch(hw, y, x)); - } - wmove(tw, line_cnt, 1); - waddstr(tw, prompt); - /* - * if there are lines below, use 'em - */ - if (LINES > NUMLINES) - { - if (NUMLINES + line_cnt > LINES) - mvwin(tw, LINES - (line_cnt + 1), COLS - maxlen - 3); - else - mvwin(tw, NUMLINES, 0); - } - touchwin(tw); - wrefresh(tw); - wait_for(rs,' '); - if (md_hasclreol()) - { - werase(tw); - leaveok(tw, TRUE); - wrefresh(tw); - } - delwin(tw); - touchwin(stdscr); + tw = newwin(line_cnt + 1, maxlen + 2, 0, COLS - maxlen - 3); + sw = subwin(tw, line_cnt + 1, maxlen + 1, 0, COLS - maxlen - 2); + for (y = 0; y <= line_cnt; y++) + { + wmove(sw, y, 0); + for (x = 0; x <= maxlen; x++) + waddch(sw, mvwinch(hw, y, x)); + } + wmove(tw, line_cnt, 1); + waddstr(tw, prompt); + /* + * if there are lines below, use 'em + */ + if (LINES > NUMLINES) + { + if (NUMLINES + line_cnt > LINES) + mvwin(tw, LINES - (line_cnt + 1), COLS - maxlen - 3); + else + mvwin(tw, NUMLINES, 0); + } + touchwin(tw); + wrefresh(tw); + wait_for(rs,' '); + if (md_hasclreol()) + { + werase(tw); + leaveok(tw, TRUE); + wrefresh(tw); + } + delwin(tw); + touchwin(stdscr); } else { - wmove(hw, LINES - 1, 0); - waddstr(hw, prompt); - wrefresh(hw); - wait_for(rs,' '); - clearok(curscr, TRUE); - wclear(hw); - touchwin(stdscr); - } - newpage = TRUE; - line_cnt = 0; - maxlen = (int) strlen(prompt); + wmove(hw, LINES - 1, 0); + waddstr(hw, prompt); + wrefresh(hw); + wait_for(rs,' '); + clearok(curscr, TRUE); + wclear(hw); + touchwin(stdscr); + } + newpage = TRUE; + line_cnt = 0; + maxlen = (int) strlen(prompt); } if (fmt != NULL && !(line_cnt == 0 && *fmt == '\0')) { diff --git a/src/cc/rogue/weapons.c b/src/cc/rogue/weapons.c index 6693f0814..e5a5eacf6 100644 --- a/src/cc/rogue/weapons.c +++ b/src/cc/rogue/weapons.c @@ -10,9 +10,9 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include +//#include +//#include +//#include #include "rogue.h" #define NO_WEAPON -1 diff --git a/src/cc/rogue/wizard.c b/src/cc/rogue/wizard.c index e56928d33..ee16b2d9b 100644 --- a/src/cc/rogue/wizard.c +++ b/src/cc/rogue/wizard.c @@ -11,10 +11,10 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include "rogue.h" /* From 72a3a99eaacb877649e6a496b394a12335b80d26 Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 15 Feb 2019 15:52:15 -0800 Subject: [PATCH 10/64] quick hack to make things build on mac --- src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 8503ebb56..84445f5be 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -572,7 +572,7 @@ komodod_LDADD += \ $(LIBVERUS_CRYPTO) \ $(LIBVERUS_PORTABLE_CRYPTO) \ $(LIBZCASH_LIBS) \ - libcc.so -lncurses + libcc.dylib -lncurses if ENABLE_PROTON komodod_LDADD += $(LIBBITCOIN_PROTON) $(PROTON_LIBS) From 88e7828253c341129c86047e4bcc32cd78c0f41a Mon Sep 17 00:00:00 2001 From: "Jonathan \"Duke\" Leto" Date: Fri, 15 Feb 2019 17:15:12 -0800 Subject: [PATCH 11/64] Fix building of libcc on darwin --- src/Makefile.am | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index 84445f5be..1881f0a90 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -571,8 +571,14 @@ komodod_LDADD += \ $(LIBBITCOIN_CRYPTO) \ $(LIBVERUS_CRYPTO) \ $(LIBVERUS_PORTABLE_CRYPTO) \ - $(LIBZCASH_LIBS) \ - libcc.dylib -lncurses + $(LIBZCASH_LIBS) + +if TARGET_DARWIN +komodod_LDADD += libcc.dylib -lncurses +else +komodod_LDADD += libcc.so -lncurses +endif + if ENABLE_PROTON komodod_LDADD += $(LIBBITCOIN_PROTON) $(PROTON_LIBS) From f3be53cbff1d35bdda82265915f6ce082db85878 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 00:20:39 -1100 Subject: [PATCH 12/64] +print --- src/cc/rogue/pack.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index b6debc966..ebc4c32f4 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -178,7 +178,8 @@ pack_room(struct rogue_state *rs,bool from_floor, THING *obj) inpack = MAXPACK; return FALSE; } - + fprintf(stderr,"inpack.%d vs MAX.%d\n",inpack,MAXPACK), sleep(2); + if (from_floor) { detach(lvl_obj, obj); From f5d952300c5bb614d417c7de99e560ec3480bc29 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 00:29:13 -1100 Subject: [PATCH 13/64] +/- print --- src/cc/rogue/pack.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index ebc4c32f4..bfe176dfa 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -178,7 +178,7 @@ pack_room(struct rogue_state *rs,bool from_floor, THING *obj) inpack = MAXPACK; return FALSE; } - fprintf(stderr,"inpack.%d vs MAX.%d\n",inpack,MAXPACK), sleep(2); + //fprintf(stderr,"inpack.%d vs MAX.%d\n",inpack,MAXPACK), sleep(2); if (from_floor) { @@ -273,6 +273,8 @@ inventory(struct rogue_state *rs,THING *list, int type) } msg_esc = FALSE; } + //if ( n_objs != numpack ) + fprintf(stderr,"n_objs.%d vs numpack.%d\n",n_objs,numpack), sleep(2); if (n_objs == 0) { if (terse) From e64329265c916dfa41c52e8e877691bdeb5e4e46 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 00:43:26 -1100 Subject: [PATCH 14/64] cursesd.h --- src/cc/rogue/cursesd.h | 79 ++++++++++++++++++++++++++++++++++++++++++ src/cc/rogue/rogue.h | 65 +--------------------------------- 2 files changed, 80 insertions(+), 64 deletions(-) create mode 100644 src/cc/rogue/cursesd.h diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h new file mode 100644 index 000000000..76e9b878e --- /dev/null +++ b/src/cc/rogue/cursesd.h @@ -0,0 +1,79 @@ +/* + * Score file structure + * + * @(#)score.h 4.6 (Berkeley) 02/05/99 + * + * Rogue: Exploring the Dungeons of Doom + * Copyright (C) 1980-1983, 1985, 1999 Michael Toy, Ken Arnold and Glenn Wichman + * All rights reserved. + * + * See the file LICENSE.TXT for full copyright and licensing information. + */ +#ifndef H_CURSESD_H +#define H_CURSESD_H + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +typedef void *WINDOW; +WINDOW stdscr; + +#define standout() +#define standend() +#define refresh() +#define raw() +#define noecho() +#define flushinp() +#define initscr() +#define clear() +#define clrtoeol() + +#define addch(a) +#define werase(a) +#define wclear(a) +#define delwin(a) +#define addstr(a) +#define touchwin(a) +#define idlok(a,b) +#define clearok(a,b) +#define keypad(a,b) +#define leaveok(a,b) +#define waddch(a,b) +#define waddstr(a,b) +#define move(a,b) +#define mvwin(a,b,c) +#define wmove(a,b,c) +#define mvaddch(a,b,c) +#define mvaddstr(a,b,c) +#define wgetnstr(a,b,c) +#define getyx(a,b,c) +#define mvcur(a,b,c,d) +#define mvwaddch(a,b,c,d) +#define mvprintw(...) +#define printw(...) +#define wprintw(...) +#define mvwprintw(...) + + +#define A_CHARTEXT 0xff +#define inch() 0 +#define endwin() 1 +#define isendwin() 0 +#define baudrate() 9600 +#define killchar() 3 +#define erasechar() 8 +#define wclrtoeol(a) 0 +#define wrefresh(a) 0 +#define unctrl(a) "^x" +#define getmaxx(a) COLS +#define getmaxy(a) LINES +#define mvinch(a,b) '.' +#define mvwinch(a,b,c) 0 +#define newwin(a,b,c,d) 0 +#define subwin(a,b,c,d,e) 0 + +#endif diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index 419d5aa1b..b83b1a3f5 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -33,70 +33,7 @@ #include #else -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - -typedef void *WINDOW; -WINDOW stdscr; - -#define standout() -#define standend() -#define refresh() -#define raw() -#define noecho() -#define flushinp() -#define initscr() -#define clear() -#define clrtoeol() - -#define addch(a) -#define werase(a) -#define wclear(a) -#define delwin(a) -#define addstr(a) -#define touchwin(a) -#define idlok(a,b) -#define clearok(a,b) -#define keypad(a,b) -#define leaveok(a,b) -#define waddch(a,b) -#define waddstr(a,b) -#define move(a,b) -#define mvwin(a,b,c) -#define wmove(a,b,c) -#define mvaddch(a,b,c) -#define mvaddstr(a,b,c) -#define wgetnstr(a,b,c) -#define getyx(a,b,c) -#define mvcur(a,b,c,d) -#define mvwaddch(a,b,c,d) -#define mvprintw(...) -#define printw(...) -#define wprintw(...) -#define mvwprintw(...) - - -#define A_CHARTEXT 0xff -#define inch() 0 -#define endwin() 1 -#define isendwin() 0 -#define baudrate() 9600 -#define killchar() 3 -#define erasechar() 8 -#define wclrtoeol(a) 0 -#define wrefresh(a) 0 -#define unctrl(a) "^x" -#define getmaxx(a) COLS -#define getmaxy(a) LINES -#define mvinch(a,b) '.' -#define mvwinch(a,b,c) 0 -#define newwin(a,b,c,d) 0 -#define subwin(a,b,c,d,e) 0 - +#include "cursesd.h" #endif #ifdef LINES From f341a6938ee2c4f84b633004f5f70826e5b34c81 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 00:44:29 -1100 Subject: [PATCH 15/64] Inpack --- src/cc/rogue/pack.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index bfe176dfa..1984a87a8 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -273,8 +273,8 @@ inventory(struct rogue_state *rs,THING *list, int type) } msg_esc = FALSE; } - //if ( n_objs != numpack ) - fprintf(stderr,"n_objs.%d vs numpack.%d\n",n_objs,numpack), sleep(2); + //if ( n_objs != inpack ) + fprintf(stderr,"n_objs.%d vs inpack.%d\n",n_objs,inpack), sleep(2); if (n_objs == 0) { if (terse) From 49e84c350ebb7c27b91030436753d380a9ade706 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 01:29:42 -1100 Subject: [PATCH 16/64] Calculate unpack --- src/cc/rogue/Makefile.in | 2 +- src/cc/rogue/cursesd.c | 22 ++++++++++++++++++++++ src/cc/rogue/cursesd.h | 38 ++++++++++++++++++++++++-------------- src/cc/rogue/pack.c | 11 +++++++++++ src/cc/rogue/rogue.h | 1 + 5 files changed, 59 insertions(+), 15 deletions(-) create mode 100644 src/cc/rogue/cursesd.c diff --git a/src/cc/rogue/Makefile.in b/src/cc/rogue/Makefile.in index c2f4e551a..e276584a9 100644 --- a/src/cc/rogue/Makefile.in +++ b/src/cc/rogue/Makefile.in @@ -101,7 +101,7 @@ HDRS = rogue.h extern.h score.h OBJS1 = vers.$(O) extern.$(O) armor.$(O) chase.$(O) command.$(O) \ daemon.$(O) daemons.$(O) fight.$(O) init.$(O) io.$(O) list.$(O) \ mach_dep.$(O) rogue.$(O) mdport.$(O) misc.$(O) monsters.$(O) \ - move.$(O) new_level.$(O) + move.$(O) new_level.$(O) cursesd.$(O) OBJS2 = options.$(O) pack.$(O) passages.$(O) potions.$(O) rings.$(O) \ rip.$(O) rooms.$(O) save.$(O) scrolls.$(O) state.$(O) sticks.$(O) \ things.$(O) weapons.$(O) wizard.$(O) xcrypt.$(O) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c new file mode 100644 index 000000000..71843d36d --- /dev/null +++ b/src/cc/rogue/cursesd.c @@ -0,0 +1,22 @@ +/****************************************************************************** + * Copyright © 2014-2019 The SuperNET Developers. * + * * + * See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at * + * the top-level directory of this distribution for the individual copyright * + * holder information and the developer policies on copyright and licensing. * + * * + * Unless otherwise agreed in a custom licensing agreement, no part of the * + * SuperNET software, including this file may be copied, modified, propagated * + * or distributed except according to the terms contained in the LICENSE file * + * * + * Removal or modification of this copyright notice is prohibited. * + * * + ******************************************************************************/ + +#include "cursesd.h" + +WINDOW *initscr() +{ + if ( stdscr == 0 ) + stdscr = (WINDOW)calloc(1,sizeof(*stdscr)); +} diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 76e9b878e..54c368220 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -1,17 +1,30 @@ -/* - * Score file structure - * - * @(#)score.h 4.6 (Berkeley) 02/05/99 - * - * Rogue: Exploring the Dungeons of Doom - * Copyright (C) 1980-1983, 1985, 1999 Michael Toy, Ken Arnold and Glenn Wichman - * All rights reserved. - * - * See the file LICENSE.TXT for full copyright and licensing information. - */ +/****************************************************************************** + * Copyright © 2014-2019 The SuperNET Developers. * + * * + * See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at * + * the top-level directory of this distribution for the individual copyright * + * holder information and the developer policies on copyright and licensing. * + * * + * Unless otherwise agreed in a custom licensing agreement, no part of the * + * SuperNET software, including this file may be copied, modified, propagated * + * or distributed except according to the terms contained in the LICENSE file * + * * + * Removal or modification of this copyright notice is prohibited. * + * * + ******************************************************************************/ + #ifndef H_CURSESD_H #define H_CURSESD_H +#define LINES 24 +#define COLS 80 + +struct cursesd_info +{ + uint8_t screen[LINES][COLS]; +} *stdscr; +typedef struct cursesd_info WINDOW; + #ifndef TRUE #define TRUE 1 #endif @@ -19,8 +32,6 @@ #define FALSE 0 #endif -typedef void *WINDOW; -WINDOW stdscr; #define standout() #define standend() @@ -28,7 +39,6 @@ WINDOW stdscr; #define raw() #define noecho() #define flushinp() -#define initscr() #define clear() #define clrtoeol() diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 1984a87a8..1e308892e 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -165,6 +165,7 @@ out: bool pack_room(struct rogue_state *rs,bool from_floor, THING *obj) { + inpack = num_packitems(); if (++inpack > MAXPACK) { if (!terse) @@ -245,6 +246,16 @@ pack_char() * List what is in the pack. Return TRUE if there is something of * the given type. */ + +int32_t num_packitems() +{ + THING *list = pack; + int32_t type = 0,n = 0; + for (; list != NULL; list = next(list)) + n++; + return(n); +} + bool inventory(struct rogue_state *rs,THING *list, int type) { diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index b83b1a3f5..7d00bd8cf 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -816,6 +816,7 @@ THING *leave_pack(struct rogue_state *rs,THING *obj, bool newobj, bool all); THING *new_item(void); THING *new_thing(struct rogue_state *rs); void end_line(struct rogue_state *rs); +int32_t num_packitems(); void runners(struct rogue_state *rs,int); void land(struct rogue_state *rs,int); From 2fc5f85f0f920aaeaa641bee9fb416fff1321f20 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 01:33:36 -1100 Subject: [PATCH 17/64] Fix --- src/cc/rogue/cursesd.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 54c368220..db6c184b9 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -19,6 +19,8 @@ #define LINES 24 #define COLS 80 +#include + struct cursesd_info { uint8_t screen[LINES][COLS]; From 9da6a5c5d0972ccbbc52654743237d9570fc4fae Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 01:34:23 -1100 Subject: [PATCH 18/64] Test --- src/cc/rogue/cursesd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 71843d36d..ff1e9a388 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -13,10 +13,10 @@ * * ******************************************************************************/ -#include "cursesd.h" +/*#include "cursesd.h" WINDOW *initscr() { if ( stdscr == 0 ) stdscr = (WINDOW)calloc(1,sizeof(*stdscr)); -} +}*/ From ffccabc6f288d1b8b43387e17df0646e6c851236 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 01:39:02 -1100 Subject: [PATCH 19/64] -print --- src/cc/rogue/cursesd.c | 7 ++++--- src/cc/rogue/pack.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index ff1e9a388..174ce89e7 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -13,10 +13,11 @@ * * ******************************************************************************/ -/*#include "cursesd.h" +#include "cursesd.h" WINDOW *initscr() { if ( stdscr == 0 ) - stdscr = (WINDOW)calloc(1,sizeof(*stdscr)); -}*/ + stdscr = (WINDOW *)calloc(1,sizeof(*stdscr)); + return(stdscr); +} diff --git a/src/cc/rogue/pack.c b/src/cc/rogue/pack.c index 1e308892e..2f683441b 100644 --- a/src/cc/rogue/pack.c +++ b/src/cc/rogue/pack.c @@ -285,7 +285,7 @@ inventory(struct rogue_state *rs,THING *list, int type) msg_esc = FALSE; } //if ( n_objs != inpack ) - fprintf(stderr,"n_objs.%d vs inpack.%d\n",n_objs,inpack), sleep(2); + // fprintf(stderr,"n_objs.%d vs inpack.%d\n",n_objs,inpack), sleep(2); if (n_objs == 0) { if (terse) From 49593a055a48acde8f6ebf50b6e19971ebf89cae Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 01:41:22 -1100 Subject: [PATCH 20/64] -print --- src/cc/rogue/cursesd.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index db6c184b9..3df9a5a19 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -19,7 +19,22 @@ #define LINES 24 #define COLS 80 +#include #include +#include +#include +#include +#include +#include /* we need va_list */ +#include /* we want wchar_t */ +#include +#include + +#include +#include +#include +#include +#include struct cursesd_info { From eb2e0928c094ecba54298f15c96ffd1c92c6ba4e Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 02:07:04 -1100 Subject: [PATCH 21/64] Test --- src/cc/rogue/Makefile.in | 2 +- src/cc/rogue/cursesd.c | 85 ++++++++++++++++++++++++++++++++++++++++ src/cc/rogue/cursesd.h | 22 +++++++++++ 3 files changed, 108 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/Makefile.in b/src/cc/rogue/Makefile.in index e276584a9..a6d410b23 100644 --- a/src/cc/rogue/Makefile.in +++ b/src/cc/rogue/Makefile.in @@ -101,7 +101,7 @@ HDRS = rogue.h extern.h score.h OBJS1 = vers.$(O) extern.$(O) armor.$(O) chase.$(O) command.$(O) \ daemon.$(O) daemons.$(O) fight.$(O) init.$(O) io.$(O) list.$(O) \ mach_dep.$(O) rogue.$(O) mdport.$(O) misc.$(O) monsters.$(O) \ - move.$(O) new_level.$(O) cursesd.$(O) + move.$(O) new_level.$(O) OBJS2 = options.$(O) pack.$(O) passages.$(O) potions.$(O) rings.$(O) \ rip.$(O) rooms.$(O) save.$(O) scrolls.$(O) state.$(O) sticks.$(O) \ things.$(O) weapons.$(O) wizard.$(O) xcrypt.$(O) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 174ce89e7..643ed87de 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -15,9 +15,94 @@ #include "cursesd.h" +static int32_t endwinflag; + WINDOW *initscr() { if ( stdscr == 0 ) stdscr = (WINDOW *)calloc(1,sizeof(*stdscr)); return(stdscr); } + +void endwin() +{ + if ( stdscr != 0 ) + free(stdscr), stdscr = 0; + endwinflag = 1; +} + +int isendwin(void) +{ + return(endwinflag); +} + +int wrefresh(WINDOW *win) +{ + return(0); +} + +int refresh(void) +{ + endwinflag = 0; + return(wrefresh(stdscr)); +} + +int wnoutrefresh(WINDOW *win) +{ + return(0); +} + +int doupdate(void) +{ + return(0); +} + +int redrawwin(WINDOW *win) +{ + return(wrefresh(win)); +} + +int wredrawln(WINDOW *win, int beg_line, int num_lines) +{ + return(wrefresh(win)); +} + +int werase(WINDOW *win) +{ + +} + +int erase(void) +{ + return(werase(stdscr)); +} + +int wclear(WINDOW *win) +{ + +} + +int clear(void) +{ + return(wclear(stdscr)); +} + +int wclrtobot(WINDOW *win) +{ + +} + +int clrtobot(void) +{ + return(wclrtobot(stdscr)); +} + +int wclrtoeol(WINDOW *win) +{ + +} + +int clrtoeol(void) +{ + return(wclrtoeol(stdscr)); +} diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 3df9a5a19..d01a9325d 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -49,6 +49,28 @@ typedef struct cursesd_info WINDOW; #define FALSE 0 #endif +WINDOW *initscr(void); +int endwin(void); +int isendwin(void); +//SCREEN *newterm(const char *type, FILE *outfd, FILE *infd); +//SCREEN *set_term(SCREEN *new); +//void delscreen(SCREEN* sp); + +int refresh(void); +int wrefresh(WINDOW *win); +//int wnoutrefresh(WINDOW *win); +//int doupdate(void); +int redrawwin(WINDOW *win); +int wredrawln(WINDOW *win, int beg_line, int num_lines); + +int erase(void); +int werase(WINDOW *win); +int clear(void); +int wclear(WINDOW *win); +int clrtobot(void); +int wclrtobot(WINDOW *win); +int clrtoeol(void); +int wclrtoeol(WINDOW *win); #define standout() #define standend() From 4c2dfcbc8e99720b979e5625c71512f654df9b41 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 02:08:09 -1100 Subject: [PATCH 22/64] Test --- src/cc/rogue/cursesd.h | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index d01a9325d..5e3d375ca 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -36,19 +36,14 @@ #include #include +#ifdef notyet + struct cursesd_info { uint8_t screen[LINES][COLS]; } *stdscr; typedef struct cursesd_info WINDOW; -#ifndef TRUE -#define TRUE 1 -#endif -#ifndef FALSE -#define FALSE 0 -#endif - WINDOW *initscr(void); int endwin(void); int isendwin(void); @@ -72,6 +67,16 @@ int wclrtobot(WINDOW *win); int clrtoeol(void); int wclrtoeol(WINDOW *win); +#endif + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + + #define standout() #define standend() #define refresh() From ec0a203d88aa48031c2934d5eb3d12bb8bbf67fc Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 07:19:14 -1100 Subject: [PATCH 23/64] Extract roc --- src/cc/cclib.cpp | 3 +++ src/cc/rogue/rogue.c | 6 ++--- src/cc/rogue/rogue.h | 2 +- src/cc/rogue_rpc.cpp | 62 +++++++++++++++++++++++++++++++++++++++----- 4 files changed, 62 insertions(+), 11 deletions(-) diff --git a/src/cc/cclib.cpp b/src/cc/cclib.cpp index c13f55ce4..be6f3a3fe 100644 --- a/src/cc/cclib.cpp +++ b/src/cc/cclib.cpp @@ -89,6 +89,7 @@ UniValue rogue_playerinfo(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_players(uint64_t txfee,struct CCcontract_info *cp,cJSON *params); UniValue rogue_games(uint64_t txfee,struct CCcontract_info *cp,cJSON *params); UniValue rogue_setname(uint64_t txfee,struct CCcontract_info *cp,cJSON *params); +UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params); #else bool sudoku_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx); @@ -118,6 +119,8 @@ UniValue CClib_method(struct CCcontract_info *cp,char *method,cJSON *params) return(rogue_bailout(txfee,cp,params)); else if ( strcmp(method,"highlander") == 0 ) return(rogue_highlander(txfee,cp,params)); + else if ( strcmp(method,"extract") == 0 ) + return(rogue_extract(txfee,cp,params)); else if ( strcmp(method,"playerinfo") == 0 ) return(rogue_playerinfo(txfee,cp,params)); else if ( strcmp(method,"players") == 0 ) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index be17b25be..0f53dfff2 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -232,14 +232,14 @@ void rogue_bailout(struct rogue_state *rs) fprintf(stderr,"error issuing (%s)\n",cmd); } -int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player) +int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player,int32_t sleepmillis) { 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 = 0*50000; + rs->sleeptime = sleepmillis * 1000; if ( player != 0 ) { rs->P = *player; @@ -320,7 +320,7 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) } if ( num > 0 ) { - rogue_replay2(0,seed,keystrokes,num,0); + rogue_replay2(0,seed,keystrokes,num,0,0); mvaddstr(LINES - 2, 0, (char *)"replay completed"); endwin(); } diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index 7d00bd8cf..fac84d8b0 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -392,7 +392,7 @@ int32_t roguefname(char *fname,uint64_t seed,int32_t counter); int32_t flushkeystrokes(struct rogue_state *rs); int32_t rogue_restorepack(struct rogue_state *rs); void restore_player(struct rogue_state *rs); -int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player); +int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player,int32_t sleepmillis); void rogue_bailout(struct rogue_state *rs); /* diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 5daca5d1c..3597eab5a 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -34,7 +34,7 @@ struct rogue_player int32_t gold,hitpoints,strength,level,experience,packsize,dungeonlevel,pad; struct rogue_packitem roguepack[MAXPACK]; }; -int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player); +int32_t rogue_replay2(uint8_t *newdata,uint64_t seed,char *keystrokes,int32_t num,struct rogue_player *player,int32_t sleepmillis); #define ROGUE_DECLARED_PACK void rogue_packitemstr(char *packitemstr,struct rogue_packitem *item); @@ -826,6 +826,54 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param } else return(cclib_error(result,"couldnt reparse params")); } +UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) +{ + UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,regslot,numkeys,err; std::string symbol,pname,maxplayers,batonht,batonvout; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; + mypk = pubkey2pk(Mypubkey()); + roguepk = GetUnspendable(cp,0); + GetCCaddress1of2(cp,myrogueaddr,roguepk,mypk); + result.push_back(Pair("name","rogue")); + result.push_back(Pair("method",method)); + result.push_back(Pair("myrogueaddr",myrogueaddr)); + if ( (params= cclib_reparse(&n,params)) != 0 ) + { + if ( n > 0 ) + { + gametxid = juint256(jitem(params,0)); + result.push_back(Pair("gametxid",gametxid.GetHex())); + if ( (err= rogue_isvalidgame(cp,gameheight,gametx,buyin,maxplayers,gametxid)) == 0 ) + { + if ( rogue_findbaton(cp,playertxid,&keystrokes,numkeys,regslot,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,myrogueaddr,numplayers,symbol,pname) == 0 ) + { + UniValue obj; struct rogue_player P; + seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,myrogueaddr); + fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname,batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); + memset(&P,0,sizeof(P)); + if ( playerdata.size() > 0 ) + { + for (i=0; i highlander vout from creategame TCBOO @@ -869,15 +917,11 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param result.push_back(Pair("gametxid",gametxid.GetHex())); if ( (err= rogue_isvalidgame(cp,gameheight,gametx,buyin,maxplayers,gametxid)) == 0 ) { - if ( maxplayers == 1 ) - mult /= 2; if ( rogue_findbaton(cp,playertxid,&keystrokes,numkeys,regslot,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,myrogueaddr,numplayers,symbol,pname) == 0 ) { UniValue obj; struct rogue_player P; - if ( pname.size() == 0 ) - pname = Rogue_pname; seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,myrogueaddr); - fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.c_str(),batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); + fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname,batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); memset(&P,0,sizeof(P)); if ( playerdata.size() > 0 ) { @@ -886,7 +930,7 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param } if ( keystrokes != 0 ) { - num = rogue_replay2(player,seed,keystrokes,numkeys,playerdata.size()==0?0:&P); + num = rogue_replay2(player,seed,keystrokes,numkeys,playerdata.size()==0?0:&P,0); if ( keystrokes != 0 ) free(keystrokes); } else num = 0; @@ -909,6 +953,8 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param } else { + if ( maxplayers == 1 ) + mult /= 2; cpTokens = CCinit(&tokensC, EVAL_TOKENS); mtx.vout.push_back(MakeCC1vout(EVAL_TOKENS, txfee, GetUnspendable(cpTokens,NULL))); // marker to token cc addr, burnable and validated mtx.vout.push_back(MakeTokensCC1vout(cp->evalcode,1,mypk)); @@ -933,6 +979,8 @@ UniValue rogue_finishgame(uint64_t txfee,struct CCcontract_info *cp,cJSON *param Myprivkey(mypriv); CCaddr1of2set(cp,roguepk,mypk,mypriv,myrogueaddr); CScript opret; + if ( pname.size() == 0 ) + pname = Rogue_pname; if ( newdata.size() == 0 ) { opret = rogue_highlanderopret(funcid, gametxid, regslot, mypk, nodata,pname); From 466fdb06a7f198a884cfd521a19722bfc016786f Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 07:20:36 -1100 Subject: [PATCH 24/64] syntax --- src/cc/rogue_rpc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 3597eab5a..0041a68c4 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -828,12 +828,12 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { - UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,regslot,numkeys,err; std::string symbol,pname,maxplayers,batonht,batonvout; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; + UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,gameheight,numplayers,regslot,numkeys,err; std::string symbol,pname,maxplayers,batonht,batonvout; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000]; mypk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); GetCCaddress1of2(cp,myrogueaddr,roguepk,mypk); result.push_back(Pair("name","rogue")); - result.push_back(Pair("method",method)); + result.push_back(Pair("method","extract")); result.push_back(Pair("myrogueaddr",myrogueaddr)); if ( (params= cclib_reparse(&n,params)) != 0 ) { From c501ef7e684a30bb6e894757f9b52597614c2587 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 07:22:12 -1100 Subject: [PATCH 25/64] Fix --- src/cc/rogue_rpc.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 0041a68c4..88e8a1749 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -828,7 +828,7 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { - UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,gameheight,numplayers,regslot,numkeys,err; std::string symbol,pname,maxplayers,batonht,batonvout; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000]; + UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,maxplayers,gameheight,numplayers,regslot,numkeys,err; std::string symbol,pname,maxplayers,batonht,batonvout; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000]; mypk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); GetCCaddress1of2(cp,myrogueaddr,roguepk,mypk); @@ -847,7 +847,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { UniValue obj; struct rogue_player P; seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,myrogueaddr); - fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname,batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); + fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname.c_str(),batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); memset(&P,0,sizeof(P)); if ( playerdata.size() > 0 ) { @@ -921,7 +921,7 @@ 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,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname,batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); + fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname.c_str(),batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); memset(&P,0,sizeof(P)); if ( playerdata.size() > 0 ) { From efbaeecaa39f4dca075edcf6236efdedeb738d7d Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 07:23:08 -1100 Subject: [PATCH 26/64] ,batonht,batonvout --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 88e8a1749..b403acd1a 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -828,7 +828,7 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { - UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,maxplayers,gameheight,numplayers,regslot,numkeys,err; std::string symbol,pname,maxplayers,batonht,batonvout; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000]; + UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000]; mypk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); GetCCaddress1of2(cp,myrogueaddr,roguepk,mypk); From 3a93aa649c74b64efe411e6c4947ab8bea416044 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 07:39:28 -1100 Subject: [PATCH 27/64] Test --- src/cc/rogue_rpc.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index b403acd1a..60e7fab35 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -832,6 +832,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) mypk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); GetCCaddress1of2(cp,myrogueaddr,roguepk,mypk); + result.push_back(Pair("status","success")); result.push_back(Pair("name","rogue")); result.push_back(Pair("method","extract")); result.push_back(Pair("myrogueaddr",myrogueaddr)); @@ -841,6 +842,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { gametxid = juint256(jitem(params,0)); result.push_back(Pair("gametxid",gametxid.GetHex())); + fprintf(stderr,"gametxid.%s\n",gametxid.GetHex().c_str()); if ( (err= rogue_isvalidgame(cp,gameheight,gametx,buyin,maxplayers,gametxid)) == 0 ) { if ( rogue_findbaton(cp,playertxid,&keystrokes,numkeys,regslot,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,myrogueaddr,numplayers,symbol,pname) == 0 ) From 0871a2be6acec1b82bea5b057296bc988a23b106 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 07:41:24 -1100 Subject: [PATCH 28/64] Add to table --- src/cc/cclib.cpp | 1 + src/cc/rogue_rpc.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/cc/cclib.cpp b/src/cc/cclib.cpp index be6f3a3fe..481dd81ce 100644 --- a/src/cc/cclib.cpp +++ b/src/cc/cclib.cpp @@ -64,6 +64,7 @@ CClib_methods[] = { (char *)"rogue", (char *)"players", (char *)"", 0, 0, 'D', EVAL_ROGUE }, { (char *)"rogue", (char *)"games", (char *)"", 0, 0, 'F', EVAL_ROGUE }, { (char *)"rogue", (char *)"setname", (char *)"pname", 1, 1, 'N', EVAL_ROGUE }, + { (char *)"rogue", (char *)"extract", (char *)"gametxid", 1, 1, 'X', EVAL_ROGUE }, #else { (char *)"sudoku", (char *)"gen", (char *)"", 0, 0, 'G', EVAL_SUDOKU }, { (char *)"sudoku", (char *)"txidinfo", (char *)"txid", 1, 1, 'T', EVAL_SUDOKU }, diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 60e7fab35..36e770823 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -836,6 +836,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) result.push_back(Pair("name","rogue")); result.push_back(Pair("method","extract")); result.push_back(Pair("myrogueaddr",myrogueaddr)); + fprintf(stderr,"extract\n"); if ( (params= cclib_reparse(&n,params)) != 0 ) { if ( n > 0 ) From 0ddddd52f02fd25121a32f222b044430ae2703e9 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 08:16:18 -1100 Subject: [PATCH 29/64] +prints --- src/cc/rogue/rogue.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 0f53dfff2..4b96026ef 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -294,11 +294,13 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) while ( 1 ) { roguefname(fname,seed,counter); + printf("check (%s)\n",fname); if ( (fp= fopen(fname,"rb")) == 0 ) break; if ( (fsize= get_filesize(fp)) <= 0 ) { fclose(fp); + printf("fsize.%ld\n",fsize); break; } if ( (keystrokes= (char *)realloc(keystrokes,num+fsize)) == 0 ) From a2da66be25e56359aee4d6a65edcd8950f0ce07a Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 08:20:56 -1100 Subject: [PATCH 30/64] rogue.seed.0 --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 36e770823..ebef1f19d 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -859,7 +859,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) } if ( keystrokes != 0 ) { - sprintf(fname,"%llu.0",(long long)seed); + sprintf(fname,"rogue.%llu.0",(long long)seed); if ( (fp= fopen(fname,"wb")) != 0 ) { if ( fwrite(keystrokes,1,numkeys,fp) != numkeys ) From 16e9d5e6b2086d4bcb09aec4738c2efed09c1bb4 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 08:21:47 -1100 Subject: [PATCH 31/64] Slow down replay --- 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 4b96026ef..494e99b9c 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -322,7 +322,7 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) } if ( num > 0 ) { - rogue_replay2(0,seed,keystrokes,num,0,0); + rogue_replay2(0,seed,keystrokes,num,0,50); mvaddstr(LINES - 2, 0, (char *)"replay completed"); endwin(); } From 878db4d87968f5d81307b24910a691ac353b3ff2 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 08:33:56 -1100 Subject: [PATCH 32/64] Pub key arg to extract --- src/cc/cclib.cpp | 2 +- src/cc/rogue_rpc.cpp | 23 +++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/cc/cclib.cpp b/src/cc/cclib.cpp index 481dd81ce..8a5cd2185 100644 --- a/src/cc/cclib.cpp +++ b/src/cc/cclib.cpp @@ -64,7 +64,7 @@ CClib_methods[] = { (char *)"rogue", (char *)"players", (char *)"", 0, 0, 'D', EVAL_ROGUE }, { (char *)"rogue", (char *)"games", (char *)"", 0, 0, 'F', EVAL_ROGUE }, { (char *)"rogue", (char *)"setname", (char *)"pname", 1, 1, 'N', EVAL_ROGUE }, - { (char *)"rogue", (char *)"extract", (char *)"gametxid", 1, 1, 'X', EVAL_ROGUE }, + { (char *)"rogue", (char *)"extract", (char *)"gametxid [pubkey]", 1, 2, 'X', EVAL_ROGUE }, #else { (char *)"sudoku", (char *)"gen", (char *)"", 0, 0, 'G', EVAL_SUDOKU }, { (char *)"sudoku", (char *)"txidinfo", (char *)"txid", 1, 1, 'T', EVAL_SUDOKU }, diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index ebef1f19d..69e77f5d8 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -828,28 +828,35 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { - UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char myrogueaddr[64],fname[64],*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000]; - mypk = pubkey2pk(Mypubkey()); + UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char rogueaddr[64],fname[64],*pubstr,*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000],pub33[33]; + pk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); - GetCCaddress1of2(cp,myrogueaddr,roguepk,mypk); result.push_back(Pair("status","success")); result.push_back(Pair("name","rogue")); result.push_back(Pair("method","extract")); - result.push_back(Pair("myrogueaddr",myrogueaddr)); - fprintf(stderr,"extract\n"); if ( (params= cclib_reparse(&n,params)) != 0 ) { if ( n > 0 ) { gametxid = juint256(jitem(params,0)); result.push_back(Pair("gametxid",gametxid.GetHex())); - fprintf(stderr,"gametxid.%s\n",gametxid.GetHex().c_str()); + if ( n == 2 ) + { + if ( (pubstr= jstr(jitem(params,1),0)) != 0 && strlen(pubstr) == 66 ) + { + decode_hex(pub33,33,pubstr); + pk = buf2pk(pub33); + } + fprintf(stderr,"gametxid.%s %s\n",gametxid.GetHex().c_str(),pubstr); + } + GetCCaddress1of2(cp,myrogueaddr,roguepk,pk); + result.push_back(Pair("rogueaddr",rogueaddr)); if ( (err= rogue_isvalidgame(cp,gameheight,gametx,buyin,maxplayers,gametxid)) == 0 ) { - if ( rogue_findbaton(cp,playertxid,&keystrokes,numkeys,regslot,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,myrogueaddr,numplayers,symbol,pname) == 0 ) + if ( rogue_findbaton(cp,playertxid,&keystrokes,numkeys,regslot,playerdata,batontxid,batonvout,batonvalue,batonht,gametxid,gametx,maxplayers,rogueaddr,numplayers,symbol,pname) == 0 ) { UniValue obj; struct rogue_player P; - seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,myrogueaddr); + seed = rogue_gamefields(obj,maxplayers,buyin,gametxid,rogueaddr); fprintf(stderr,"(%s) found baton %s numkeys.%d seed.%llu playerdata.%d\n",pname.size()!=0?pname.c_str():Rogue_pname.c_str(),batontxid.ToString().c_str(),numkeys,(long long)seed,(int32_t)playerdata.size()); memset(&P,0,sizeof(P)); if ( playerdata.size() > 0 ) From c7db40898ae5d4673bc60fff9c62be05e5870582 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 08:35:27 -1100 Subject: [PATCH 33/64] Fix --- src/cc/rogue_rpc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 69e77f5d8..d9daf2187 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -828,7 +828,7 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { - UniValue result; CPubKey mypk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char rogueaddr[64],fname[64],*pubstr,*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000],pub33[33]; + UniValue result; CPubKey pk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char rogueaddr[64],fname[64],*pubstr,*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000],pub33[33]; pk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); result.push_back(Pair("status","success")); @@ -849,7 +849,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) } fprintf(stderr,"gametxid.%s %s\n",gametxid.GetHex().c_str(),pubstr); } - GetCCaddress1of2(cp,myrogueaddr,roguepk,pk); + GetCCaddress1of2(cp,rogueaddr,roguepk,pk); result.push_back(Pair("rogueaddr",rogueaddr)); if ( (err= rogue_isvalidgame(cp,gameheight,gametx,buyin,maxplayers,gametxid)) == 0 ) { From e9bddb1ed175a33c22d5fc8d8908cf50f74daf33 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 08:53:22 -1100 Subject: [PATCH 34/64] Mark replay done on Q --- src/cc/rogue/command.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cc/rogue/command.c b/src/cc/rogue/command.c index 1a32246bb..6cc6b0763 100644 --- a/src/cc/rogue/command.c +++ b/src/cc/rogue/command.c @@ -269,6 +269,7 @@ over: q_comm = FALSE; if ( rs->guiflag != 0 ) rogue_bailout(rs); + else rs->replaydone = (uint32_t)time(NULL); return; when 'i': after = FALSE; inventory(rs,pack, 0); when 'I': after = FALSE; picky_inven(rs); From eba3ba86f637a4a932d028f0429381ddd08916ce Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 09:00:32 -1100 Subject: [PATCH 35/64] Alternate esc and y --- src/cc/rogue/io.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index 6791c26a4..fbcddf5fa 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -155,6 +155,7 @@ readchar(struct rogue_state *rs) char ch = -1; if ( rs != 0 && rs->guiflag == 0 ) { + static uint32_t counter; if ( rs->ind < rs->numkeys ) { //if ( rs->ind == rs->numkeys-1 ) @@ -162,13 +163,15 @@ readchar(struct rogue_state *rs) //fprintf(stderr,"(%c) ",rs->keystrokes[rs->ind]); return(rs->keystrokes[rs->ind++]); } - if ( rs->replaydone != 0 ) + if ( rs->replaydone != 0 && counter++ < 3 ) fprintf(stderr,"replay finished but readchar called\n"); rs->replaydone = (uint32_t)time(NULL); //if ( (rand() & 1) == 0 ) // return(ESCAPE); //else - return('y'); + if ( counter < 3 || (counter & 1) == 0 ) + return('y'); + else return(ESCAPE); } if ( rs == 0 || rs->guiflag != 0 ) { From 139a7bdfec066e1c25cd6aedcd02dbbced2f1807 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 09:31:50 -1100 Subject: [PATCH 36/64] Extract player data --- src/cc/rogue/init.c | 4 ++++ src/cc/rogue/rogue.c | 4 +++- src/cc/rogue_rpc.cpp | 7 +++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/init.c b/src/cc/rogue/init.c index 1603474e2..dcbdb2f6d 100644 --- a/src/cc/rogue/init.c +++ b/src/cc/rogue/init.c @@ -49,7 +49,11 @@ void init_player(struct rogue_state *rs) // duplicate rng usage of normal case obj = new_item(); init_weapon(obj, MACE); + free(obj); + obj = new_item(); init_weapon(obj, BOW); + free(obj); + obj = new_item(); init_weapon(obj, ARROW); obj->o_count = rnd(15) + 25; free(obj); diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 494e99b9c..43d230eec 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -104,7 +104,9 @@ void rogueiterate(struct rogue_state *rs) fuse(swander, 0, WANDERTIME, AFTER); start_daemon(stomach, 0, AFTER); if ( rs->restoring != 0 ) + { restore_player(rs); + } playit(rs); } @@ -244,7 +246,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); + fprintf(stderr,"restore player packsize.%d HP.%d\n",rs->P.packsize,rs->P.hitpoints); } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index d9daf2187..143842007 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -873,6 +873,13 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) fprintf(stderr,"error writing %s\n",fname); fclose(fp); } + sprintf(fname,"rogue.%llu.player",(long long)seed); + if ( (fp= fopen(fname,"wb")) != 0 ) + { + if ( fwrite(playerdata,1,(int32_t)playerdata.size(),fp) != playerdata.size() ) + fprintf(stderr,"error writing %s\n",fname); + fclose(fp); + } num = rogue_replay2(player,seed,keystrokes,numkeys,playerdata.size()==0?0:&P,50); if ( keystrokes != 0 ) free(keystrokes); From d0090c3c881a237fe9db63a4fd7456c8c0c53d7c Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 09:33:09 -1100 Subject: [PATCH 37/64] Syntax --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 143842007..65b8be53e 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -876,7 +876,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) sprintf(fname,"rogue.%llu.player",(long long)seed); if ( (fp= fopen(fname,"wb")) != 0 ) { - if ( fwrite(playerdata,1,(int32_t)playerdata.size(),fp) != playerdata.size() ) + if ( fwrite(&playerdata[0],1,(int32_t)playerdata.size(),fp) != playerdata.size() ) fprintf(stderr,"error writing %s\n",fname); fclose(fp); } From eeee29d3ae81e1bf8ee157480a4d16764b11c82b Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 09:39:28 -1100 Subject: [PATCH 38/64] Make app use player data --- src/cc/rogue/rogue.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 43d230eec..f8b645d91 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -290,7 +290,7 @@ long get_filesize(FILE *fp) int32_t rogue_replay(uint64_t seed,int32_t sleeptime) { - FILE *fp; char fname[1024]; char *keystrokes = 0; long num=0,fsize; int32_t i,counter = 0; struct rogue_state *rs; + FILE *fp; char fname[1024]; char *keystrokes = 0; long num=0,fsize; int32_t i,counter = 0; struct rogue_state *rs; struct rogue_player P,*player = 0; if ( seed == 0 ) seed = 777; while ( 1 ) @@ -324,7 +324,17 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) } if ( num > 0 ) { - rogue_replay2(0,seed,keystrokes,num,0,50); + sprintf(fname,"rogue.%llu.player",(long long)seed); + if ( (fp=fopen(fname,"rb")) != 0 ) + { + if ( fread(&P,1,sizeof(P),fp) > 0 ) + { + printf("max size player\n"); + player = &P; + } + fclose(fp); + } + rogue_replay2(0,seed,keystrokes,num,player,50); mvaddstr(LINES - 2, 0, (char *)"replay completed"); endwin(); } From ede1db736aa26d811fe889a11ecb80e5ed5009e7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:01:15 -1100 Subject: [PATCH 39/64] +print --- src/cc/rogue_rpc.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 65b8be53e..854f5f6e1 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -828,7 +828,7 @@ UniValue rogue_keystrokes(uint64_t txfee,struct CCcontract_info *cp,cJSON *param UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) { - UniValue result; CPubKey pk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char rogueaddr[64],fname[64],*pubstr,*keystrokes = 0; std::vector playerdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000],pub33[33]; + UniValue result; CPubKey pk,roguepk; int32_t i,n,num,maxplayers,gameheight,batonht,batonvout,numplayers,regslot,numkeys,err; std::string symbol,pname; CTransaction gametx; uint64_t seed,mult; int64_t buyin,batonvalue; char rogueaddr[64],fname[64],*pubstr,*keystrokes = 0; std::vector playerdata,newdata; uint256 batontxid,playertxid,gametxid; FILE *fp; uint8_t player[10000],pub33[33]; pk = pubkey2pk(Mypubkey()); roguepk = GetUnspendable(cp,0); result.push_back(Pair("status","success")); @@ -881,6 +881,18 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) fclose(fp); } num = rogue_replay2(player,seed,keystrokes,numkeys,playerdata.size()==0?0:&P,50); + newdata.resize(num); + for (i=0; i no playerdata\n"); + newdata.resize(0); + } + else fprintf(stderr,"\nextracted $$$gold.%d hp.%d strength.%d level.%d exp.%d dl.%d n.%d size.%d\n",P.gold,P.hitpoints,P.strength,P.level,P.experience,P.dungeonlevel,n,(int32_t)sizeof(P)); if ( keystrokes != 0 ) free(keystrokes); } else num = 0; From 4f6cdb4b155b8c63c430a7c4275464a7bfb139f7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:02:42 -1100 Subject: [PATCH 40/64] +print --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 854f5f6e1..4d6167b3f 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -892,7 +892,7 @@ UniValue rogue_extract(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) fprintf(stderr,"zero value character was killed -> no playerdata\n"); newdata.resize(0); } - else fprintf(stderr,"\nextracted $$$gold.%d hp.%d strength.%d level.%d exp.%d dl.%d n.%d size.%d\n",P.gold,P.hitpoints,P.strength,P.level,P.experience,P.dungeonlevel,n,(int32_t)sizeof(P)); + fprintf(stderr,"\nextracted $$$gold.%d hp.%d strength.%d level.%d exp.%d dl.%d n.%d size.%d\n",P.gold,P.hitpoints,P.strength,P.level,P.experience,P.dungeonlevel,n,(int32_t)sizeof(P)); if ( keystrokes != 0 ) free(keystrokes); } else num = 0; From 8b6fe6bec71ff6f772d582949a7db23fb9dc2f08 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:19:22 -1100 Subject: [PATCH 41/64] -print --- src/cc/rogue/save.c | 15 +++++++++------ src/cc/rogue/state.c | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/cc/rogue/save.c b/src/cc/rogue/save.c index 718c5074b..7349c196a 100644 --- a/src/cc/rogue/save.c +++ b/src/cc/rogue/save.c @@ -165,21 +165,24 @@ save_file(struct rogue_state *rs,FILE *savef,int32_t guiflag) memset(histo,0,sizeof(histo)); for (i=0; iP)[i]); + //fprintf(stderr,"%02x",((uint8_t *)&rs->P)[i]); histo[((uint8_t *)&rs->P)[i]]++; rs->playerdata[i] = ((uint8_t *)&rs->P)[i]; } rs->playersize = n; - fprintf(stderr," packsize.%d n.%d\n",rs->P.packsize,n); + //fprintf(stderr," packsize.%d n.%d\n",rs->P.packsize,n); if ( (fp= fopen(rogue_packfname(rs,fname),"wb")) != 0 ) { fwrite(&rs->P,1,n,fp); fclose(fp); } - for (i=nonz=0; i<0x100; i++) - if ( histo[i] != 0 ) - fprintf(stderr,"(%d %d) ",i,histo[i]), nonz++; - fprintf(stderr,"nonz.%d\n",nonz); + if ( 0 ) + { + for (i=nonz=0; i<0x100; i++) + if ( histo[i] != 0 ) + fprintf(stderr,"(%d %d) ",i,histo[i]), nonz++; + fprintf(stderr,"nonz.%d\n",nonz); + } fflush(savef); fclose(savef); if ( guiflag != 0 ) diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index e034039a8..36191d72c 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1434,7 +1434,7 @@ rs_write_object(struct rogue_state *rs,FILE *savef, THING *o) item = &rs->P.roguepack[rs->P.packsize]; if ( pstats.s_hpt <= 0 ) { - fprintf(stderr,"KILLED\n"); + //fprintf(stderr,"KILLED\n"); rs->P.gold = -1; rs->P.hitpoints = -1; rs->P.strength = -1; @@ -1452,9 +1452,9 @@ rs_write_object(struct rogue_state *rs,FILE *savef, THING *o) rs->P.level = pstats.s_lvl; rs->P.experience = pstats.s_exp; rs->P.dungeonlevel = level; - fprintf(stderr,"%ld gold.%d hp.%d strength.%d level.%d exp.%d %d\n",ftell(savef),purse,max_hp,max_stats.s_str,pstats.s_lvl,pstats.s_exp,level); + //fprintf(stderr,"%ld gold.%d hp.%d strength.%d level.%d exp.%d %d\n",ftell(savef),purse,max_hp,max_stats.s_str,pstats.s_lvl,pstats.s_exp,level); } - fprintf(stderr,"object (%s) x.%d y.%d type.%d pack.(%c:%d)\n",inv_name(o,FALSE),o->_o._o_pos.x,o->_o._o_pos.y,o->_o._o_type,o->_o._o_packch,o->_o._o_packch); + //fprintf(stderr,"object (%s) x.%d y.%d type.%d pack.(%c:%d)\n",inv_name(o,FALSE),o->_o._o_pos.x,o->_o._o_pos.y,o->_o._o_type,o->_o._o_packch,o->_o._o_packch); if ( rs->P.packsize < MAXPACK && o->o_type != AMULET ) { packsave(item,o->_o._o_type,o->_o._o_launch,o->_o._o_damage,sizeof(o->_o._o_damage),o->_o._o_hurldmg,sizeof(o->_o._o_hurldmg),o->_o._o_count,o->_o._o_which,o->_o._o_hplus,o->_o._o_dplus,o->_o._o_arm,o->_o._o_flags,o->_o._o_group); From 2f13dbdf4e30d5eb3b8949a4978022de4cc11ac5 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:23:55 -1100 Subject: [PATCH 42/64] -print + delay --- src/cc/rogue/main.c | 2 +- src/cc/rogue/rogue.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cc/rogue/main.c b/src/cc/rogue/main.c index c3484eafe..12e6af368 100644 --- a/src/cc/rogue/main.c +++ b/src/cc/rogue/main.c @@ -252,7 +252,7 @@ int main(int argc, char **argv, char **envp) if ( argc == 2 && (fp=fopen(argv[1],"rb")) == 0 ) { seed = atol(argv[1]); - fprintf(stderr,"replay %llu\n",(long long)seed); + //fprintf(stderr,"replay %llu\n",(long long)seed); return(rogue_replay(seed,50000)); } else diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index f8b645d91..7f885e861 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -246,7 +246,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 HP.%d\n",rs->P.packsize,rs->P.hitpoints); + //fprintf(stderr,"restore player packsize.%d HP.%d\n",rs->P.packsize,rs->P.hitpoints); } uint32_t starttime = (uint32_t)time(NULL); rogueiterate(rs); @@ -296,7 +296,7 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) while ( 1 ) { roguefname(fname,seed,counter); - printf("check (%s)\n",fname); + //printf("check (%s)\n",fname); if ( (fp= fopen(fname,"rb")) == 0 ) break; if ( (fsize= get_filesize(fp)) <= 0 ) @@ -329,13 +329,14 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) { if ( fread(&P,1,sizeof(P),fp) > 0 ) { - printf("max size player\n"); + //printf("max size player\n"); player = &P; } fclose(fp); } rogue_replay2(0,seed,keystrokes,num,player,50); mvaddstr(LINES - 2, 0, (char *)"replay completed"); + sleep(4); endwin(); } if ( keystrokes != 0 ) From 593ec0e34092997f12d528d51f45882d057277c7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:25:49 -1100 Subject: [PATCH 43/64] Pause --- src/cc/rogue/rogue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 7f885e861..340fe94a8 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -335,8 +335,9 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) fclose(fp); } rogue_replay2(0,seed,keystrokes,num,player,50); - mvaddstr(LINES - 2, 0, (char *)"replay completed"); sleep(4); + + //mvaddstr(LINES - 2, 0, (char *)"replay completed"); endwin(); } if ( keystrokes != 0 ) From 40a2bb28df79dc4378058740e7fb2e1042017941 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:26:05 -1100 Subject: [PATCH 44/64] 150 --- 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 340fe94a8..4e9d9438e 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -334,7 +334,7 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) } fclose(fp); } - rogue_replay2(0,seed,keystrokes,num,player,50); + rogue_replay2(0,seed,keystrokes,num,player,150); sleep(4); //mvaddstr(LINES - 2, 0, (char *)"replay completed"); From bc71d62f820f415f55d1d9a802f218176b7a2aeb Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:29:29 -1100 Subject: [PATCH 45/64] -score --- src/cc/rogue/rogue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 4e9d9438e..1e110ee12 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -646,8 +646,8 @@ quit(int sig) } else { - score(rs,purse, 1, 0); - fprintf(stderr,"done!\n"); + //score(rs,purse, 1, 0); + //fprintf(stderr,"done!\n"); } } else From 009b20d427f56e566744fe7fa617047e35f8e404 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:32:00 -1100 Subject: [PATCH 46/64] Test --- src/cc/rogue/rogue.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 1e110ee12..e288bcf1a 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -335,7 +335,6 @@ int32_t rogue_replay(uint64_t seed,int32_t sleeptime) fclose(fp); } rogue_replay2(0,seed,keystrokes,num,player,150); - sleep(4); //mvaddstr(LINES - 2, 0, (char *)"replay completed"); endwin(); @@ -589,7 +588,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 8c4226da9b970711352553cac62e03b2f38f8354 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 10:33:17 -1100 Subject: [PATCH 47/64] Sleeptime --- src/cc/rogue/rogue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index e288bcf1a..63e699c30 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -588,7 +588,8 @@ playit(struct rogue_state *rs) { if ( rs->replaydone != 0 ) { - fprintf(stderr,"replaydone\n"); sleep(3); + if ( rs->sleeptime != 0 ) + sleep(3); return; } if ( rs->sleeptime != 0 ) From e225c54012f306294773afe8ba0fac4dd8859da0 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 16 Feb 2019 20:32:20 -1100 Subject: [PATCH 48/64] Use current strength --- src/cc/rogue/init.c | 2 +- src/cc/rogue/state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/init.c b/src/cc/rogue/init.c index dcbdb2f6d..f296d6182 100644 --- a/src/cc/rogue/init.c +++ b/src/cc/rogue/init.c @@ -27,7 +27,7 @@ void restore_player(struct rogue_state *rs) int32_t i; THING *obj; //rs->P.gold = purse; max_hp = rs->P.hitpoints; - max_stats.s_str = rs->P.strength; + pstats.s_str = max_stats.s_str = rs->P.strength; pstats.s_lvl = rs->P.level; pstats.s_exp = rs->P.experience; for (i=0; iP.packsize; i++) diff --git a/src/cc/rogue/state.c b/src/cc/rogue/state.c index 36191d72c..e738a9d16 100644 --- a/src/cc/rogue/state.c +++ b/src/cc/rogue/state.c @@ -1448,7 +1448,7 @@ rs_write_object(struct rogue_state *rs,FILE *savef, THING *o) { rs->P.gold = purse; rs->P.hitpoints = max_hp; - rs->P.strength = max_stats.s_str; + rs->P.strength = pstats.s_str; //max_stats.s_str; rs->P.level = pstats.s_lvl; rs->P.experience = pstats.s_exp; rs->P.dungeonlevel = level; From e3ccd36f0b325587acaf5a5c9affa36fb9190f9b Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:46:28 -1100 Subject: [PATCH 49/64] Initial cursesd --- src/cc/makerogue | 2 +- src/cc/rogue/cursesd.c | 363 +++++++++++++++++++++++++++++++++++++---- src/cc/rogue/cursesd.h | 161 +++++++++--------- src/cc/rogue/options.c | 6 +- src/cc/rogue/rip.c | 1 + src/cc/rogue/rogue.c | 2 + src/cc/rogue/rogue.h | 2 +- src/cc/rogue/rogue.scr | 0 src/cc/rogue/save.c | 4 +- src/cc/rogue/things.c | 63 +++---- 10 files changed, 465 insertions(+), 139 deletions(-) create mode 100644 src/cc/rogue/rogue.scr diff --git a/src/cc/makerogue b/src/cc/makerogue index 490576bd1..249e646f5 100755 --- a/src/cc/makerogue +++ b/src/cc/makerogue @@ -2,7 +2,7 @@ cd rogue; ./configure # only need this first time make; cd .. -gcc -Wno-write-strings -DBUILD_ROGUE -std=c++11 -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared -o librogue.so -c cclib.cpp -lncurses +gcc -Wno-write-strings -DBUILD_ROGUE -std=c++11 -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I.. -I. -fPIC -shared -o librogue.so -c cclib.cpp #gcc -std=c++11 -fPIC -shared -o librogue.so cclib.o rogue/rogue.so cp librogue.so ../libcc.so diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 643ed87de..54f55c4f5 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -17,13 +17,268 @@ static int32_t endwinflag; +WINDOW *newwin(int32_t nlines,int32_t ncols,int32_t begin_y,int32_t begin_x) +{ + WINDOW *scr = 0; + if ( nlines == LINES && ncols == COLS && begin_y == 0 && begin_x == 0 ) + scr = (WINDOW *)calloc(1,sizeof(*stdscr)); + return(scr); +} + WINDOW *initscr() { if ( stdscr == 0 ) - stdscr = (WINDOW *)calloc(1,sizeof(*stdscr)); + stdscr = newwin(LINES,COLS,0,0); return(stdscr); } +int32_t delwin(WINDOW *win) +{ + free(win); + return(0); +} + +int32_t wmove(WINDOW *win, int32_t y, int32_t x) +{ + win->y = y; + win->x = x; + return(0); +} + +int32_t move(int32_t y, int32_t x) +{ + return(wmove(stdscr,y,x)); +} + +int werase(WINDOW *win) +{ + memset(win->screen,' ',sizeof(win->screen)); + return(0); +} + +int wclear(WINDOW *win) +{ + werase(win); + clearok(win,TRUE); + return(0); +} + +int wclrtoeol(WINDOW *win) +{ + if ( win->x < COLS-1 ) + memset(&win->screen[win->y][win->x],' ',COLS - win->x); + return(0); +} + +int wclrtobot(WINDOW *win) +{ + wclrtoeol(win); + if ( win->y < LINES-1 ) + memset(&win->screen[win->y+1][0],' ',COLS); + return(0); +} + +int erase(void) +{ + return(werase(stdscr)); +} + +int clear(void) +{ + return(wclear(stdscr)); +} + +int clrtobot(void) +{ + return(wclrtobot(stdscr)); +} + +int clrtoeol(void) +{ + return(wclrtoeol(stdscr)); +} + +int32_t waddch(WINDOW *win, chtype ch) +{ + int32_t t; + if ( ch == '\t' ) + { + for (i=0; i<8; i++) + { + if ( win->x >= COLS-1 ) + break; + win->x++; + if ( (win->x & 7) == 0 ) + break; + } + } + else if ( ch == '\n' ) + { + wclrtoeol(win); + win->x = 0; + win->y++; + if ( win->y >= LINES ) + win->y = 0; + } + else if ( ch == '\b' ) + { + if ( win->x > 0 ) + win->x--; + } + else + { + win->screen[win->y][win->x++] = ch; + if ( win->x >= COLS ) + { + win->x = 0; + win->y++; + if ( win->y >= LINES ) + win->y = 0; + } + } + reurn(0); +} + +int32_t mvwaddch(WINDOW *win, int32_t y, int32_t x, chtype ch) +{ + win->y = y; + win->x = x; + return(waddch(win,ch)); +} + +int32_t addch(chtype ch) +{ + return(waddch(stdscr,ch)); +} + +int32_t mvaddch(int32_t y, int32_t x, chtype ch) +{ + return(mvwaddch(stdscr,y,x,ch)); +} + +int32_t waddstr(WINDOW *win, const char *str) +{ + int32_t i; + for (i=0; str[i]!=0; i++) + waddch(win,str[i]); + return(0); +} + +int32_t waddnstr(WINDOW *win, const char *str, int32_t n) +{ + int32_t i; + for (i=0; str[i]!=0 && iy = y; + win->x = x; + return(waddstr(win,str)); +} + +int32_t mvwaddnstr(WINDOW *win, int32_t y, int32_t x, const char *str, int32_t n) +{ + win->y = y; + win->x = x; + return(waddnstr(win,str)); +} + +int32_t addstr(const char *str) +{ + return(waddstr(stdscr,str)); +} + +int32_t addnstr(const char *str, int32_t n) +{ + return(waddnstr(stdscr,str,n)); +} + +int32_t mvaddstr(int32_t y, int32_t x, const char *str) +{ + stdscr->y = y; + stdscr->x = x; + return(waddstr(stdscr,str)); +} + +int32_t mvaddnstr(int32_t y, int32_t x, const char *str, int32_t n) +{ + stdscr->y = y; + stdscr->x = x; + return(waddnstr(stdscr,str,n)); +} + +int32_t printw(char *fmt,...) +{ + char str[512]; int32_t ret; va_list myargs; // Declare a va_list type variable + va_start(myargs,fmt); // Initialise the va_list variable with the ... after fmt + ret = vsprintf(str,fmt,myargs); // Forward the '...' to vsprintf + va_end(myargs); // Clean up the va_list + return(addstr(str)); +} + +int32_t wprintw(WINDOW *win,char *fmt,...) +{ + char str[512]; int32_t ret; va_list myargs; // Declare a va_list type variable + va_start(myargs,fmt); // Initialise the va_list variable with the ... after fmt + ret = vsprintf(str,fmt,myargs); // Forward the '...' to vsprintf + va_end(myargs); // Clean up the va_list + return(waddstr(win,str)); +} + +int32_t mvprintw(int32_t y,int32_t x,char *fmt,...) +{ + char str[512]; int32_t ret; va_list myargs; // Declare a va_list type variable + va_start(myargs,fmt); // Initialise the va_list variable with the ... after fmt + ret = vsprintf(str,fmt,myargs); // Forward the '...' to vsprintf + va_end(myargs); // Clean up the va_list + stdscr->y = y; + stdscr->x = x; + return(addstr(str)); +} + +int32_t mvwprintw(WINDOW *win,int32_t y,int32_t x,char *fmt,...) +{ + char str[512]; int32_t ret; va_list myargs; // Declare a va_list type variable + va_start(myargs,fmt); // Initialise the va_list variable with the ... after fmt + ret = vsprintf(str,fmt,myargs); // Forward the '...' to vsprintf + va_end(myargs); // Clean up the va_list + win->y = y; + win->x = x; + return(waddstr(win,str)); +} + +chtype winch(WINDOW *win) +{ + return(win->screen[win->y][win->x]); +} + +chtype inch(void) +{ + return(winch(stdscr)); +} + +chtype mvwinch(WINDOW *win, int32_t y, int32_t x) +{ + win->y = y; + win->x = x; + return(win->screen[win->y][win->x]); +} + +chtype mvinch(int32_t y, int32_t x) +{ + return(mvwinch(stdscr,y,x)); +} + +int32_t mvcur(int32_t oldrow, int32_t oldcol, int32_t newrow, int32_t newcol) +{ + stdscr->y = newrow; + stdscr->x = newcol; + return(0); +} + void endwin() { if ( stdscr != 0 ) @@ -36,27 +291,12 @@ int isendwin(void) return(endwinflag); } -int wrefresh(WINDOW *win) -{ - return(0); -} - int refresh(void) { endwinflag = 0; return(wrefresh(stdscr)); } -int wnoutrefresh(WINDOW *win) -{ - return(0); -} - -int doupdate(void) -{ - return(0); -} - int redrawwin(WINDOW *win) { return(wrefresh(win)); @@ -67,42 +307,101 @@ int wredrawln(WINDOW *win, int beg_line, int num_lines) return(wrefresh(win)); } -int werase(WINDOW *win) +// functions with no data side effect +#ifdef they_are_macros +int wrefresh(WINDOW *win) { - + return(0); } -int erase(void) +int wnoutrefresh(WINDOW *win) { - return(werase(stdscr)); + return(0); } -int wclear(WINDOW *win) +int doupdate(void) { - + return(0); } -int clear(void) +int32_t touchwin(WINDOW *win) { - return(wclear(stdscr)); + return(0); } -int wclrtobot(WINDOW *win) +int standout(void) { - + return(0); } -int clrtobot(void) +int standend(void) { - return(wclrtobot(stdscr)); + return(0); } -int wclrtoeol(WINDOW *win) +int raw(void) { - + return(0); } -int clrtoeol(void) +int32_t keypad(WINDOW *win, bool bf) { - return(wclrtoeol(stdscr)); + return(0); } + +int noecho(void) +{ + return(0); +} + +int flushinp(void) +{ + return(0); +} + +int clearok(WINDOW *win, bool bf) +{ + return(0); +} + +int idlok(WINDOW *win, bool bf) +{ + return(0); +} + +int leaveok(WINDOW *win, bool bf) +{ + return(0); +} +#endif + +int32_t mvwin(WINDOW *win, int32_t y, int32_t x); // stub +{ + fprintf(stderr,"unexpected call to mvwin\n"); + return(0); +} + +WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x) +{ + fprintf(stderr,"unexpected and unsupported call to subwin\n"); + return(0); +} + +char erasechar(void) +{ + fprintf(stderr,"unexpected and unsupported call to erasechar\n"); + return(8); +} + +char killchar(void) +{ + fprintf(stderr,"unexpected and unsupported call to erasechar\n"); + return(3); +} + +int32_t mvgetnstr(int32_t y, int32_t x, char *str, int32_t n) // stub +{ + fprintf(stderr,"unexpected and unsupported call to mvgetnstr\n"); + return(0); +} + diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 5e3d375ca..6d5944b75 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -36,38 +36,107 @@ #include #include -#ifdef notyet - struct cursesd_info { uint8_t screen[LINES][COLS]; + int32_t x,y; } *stdscr; typedef struct cursesd_info WINDOW; +typedef char chtype; WINDOW *initscr(void); -int endwin(void); -int isendwin(void); +int32_t endwin(void); +int32_t isendwin(void); //SCREEN *newterm(const char *type, FILE *outfd, FILE *infd); //SCREEN *set_term(SCREEN *new); //void delscreen(SCREEN* sp); -int refresh(void); -int wrefresh(WINDOW *win); -//int wnoutrefresh(WINDOW *win); -//int doupdate(void); -int redrawwin(WINDOW *win); -int wredrawln(WINDOW *win, int beg_line, int num_lines); +int32_t refresh(void); +int32_t wrefresh(WINDOW *win); +//int32_t wnoutrefresh(WINDOW *win); +//int32_t doupdate(void); +int32_t redrawwin(WINDOW *win); +int32_t wredrawln(WINDOW *win, int32_t beg_line, int32_t num_lines); -int erase(void); -int werase(WINDOW *win); -int clear(void); -int wclear(WINDOW *win); -int clrtobot(void); -int wclrtobot(WINDOW *win); -int clrtoeol(void); -int wclrtoeol(WINDOW *win); +int32_t erase(void); +int32_t werase(WINDOW *win); +int32_t clear(void); +int32_t wclear(WINDOW *win); +int32_t clrtobot(void); +int32_t wclrtobot(WINDOW *win); +int32_t clrtoeol(void); +int32_t wclrtoeol(WINDOW *win); -#endif +int32_t standout(void); +int32_t standend(void); +int32_t raw(void); +int32_t noecho(void); +int32_t flushinp(void); +int32_t keypad(WINDOW *win, bool bf); + +int32_t clearok(WINDOW *win, bool bf); +int32_t idlok(WINDOW *win, bool bf); +int32_t leaveok(WINDOW *win, bool bf); + +WINDOW *newwin(int32_t nlines,int32_t ncols,int32_t begin_y,int32_t begin_x); // only LINES,COLS,0,0 +int32_t delwin(WINDOW *win); +int32_t touchwin(WINDOW *win); // stub +WINDOW *subwin(WINDOW *orig, int32_t nlines, int32_t ncols, int32_t begin_y, int32_t begin_x); // stub +int32_t mvwin(WINDOW *win, int32_t y, int32_t x); // stub +int32_t mvcur(int32_t oldrow, int32_t oldcol, int32_t newrow, int32_t newcol); + +char erasechar(void); // stub +char killchar(void); // stub + +int32_t move(int32_t y, int32_t x); +int32_t wmove(WINDOW *win, int32_t y, int32_t x); + +chtype inch(void); +chtype winch(WINDOW *win); +chtype mvinch(int32_t y, int32_t x); +chtype mvwinch(WINDOW *win, int32_t y, int32_t x); + +int32_t addch(chtype ch); +int32_t waddch(WINDOW *win, chtype ch); +int32_t mvaddch(int32_t y, int32_t x, chtype ch); +int32_t mvwaddch(WINDOW *win, int32_t y, int32_t x, chtype ch); + +int32_t addstr(const char *str); +int32_t addnstr(const char *str, int32_t n); +int32_t waddstr(WINDOW *win, const char *str); +int32_t waddnstr(WINDOW *win, const char *str, int32_t n); +int32_t mvaddstr(int32_t y, int32_t x, const char *str); +int32_t mvaddnstr(int32_t y, int32_t x, const char *str, int32_t n); +int32_t mvwaddstr(WINDOW *win, int32_t y, int32_t x, const char *str); +int32_t mvwaddnstr(WINDOW *win, int32_t y, int32_t x, const char *str, int32_t n); + +int32_t mvgetnstr(int32_t y, int32_t x, char *str, int32_t n); // stub +int32_t printw(char *fmt,...); +int32_t wprintw(WINDOW *win,char *fmt,...); +int32_t mvprintw(int32_t y,int32_t x,char *fmt,...); +int32_t mvwprintw(WINDOW *win,int32_t y,int32_t x,char *fmt,...); + +#define A_CHARTEXT 0xff +#define baudrate() 9600 +#define unctrl(a) "^x" +#define getmaxx(a) COLS +#define getmaxy(a) LINES +#define getxy(win,y,x) y = win->y, x = win->x + +// functions with only visible effects +#define wrefresh(win) 0 +#define wnoutrefresh(win) 0 +#define doupdate() 0 +#define touchwin(win) 0 +#define standout() 0 +#define standend() 0 +#define raw() 0 +#define keypad(win,bf) 0 +#define noecho() 0 +#define flushinp() 0 +#define clearok(win,bf) 0 +#define idlok(win,bf) 0 +#define leaveok(win,bf) 0 #ifndef TRUE #define TRUE 1 @@ -77,57 +146,3 @@ int wclrtoeol(WINDOW *win); #endif -#define standout() -#define standend() -#define refresh() -#define raw() -#define noecho() -#define flushinp() -#define clear() -#define clrtoeol() - -#define addch(a) -#define werase(a) -#define wclear(a) -#define delwin(a) -#define addstr(a) -#define touchwin(a) -#define idlok(a,b) -#define clearok(a,b) -#define keypad(a,b) -#define leaveok(a,b) -#define waddch(a,b) -#define waddstr(a,b) -#define move(a,b) -#define mvwin(a,b,c) -#define wmove(a,b,c) -#define mvaddch(a,b,c) -#define mvaddstr(a,b,c) -#define wgetnstr(a,b,c) -#define getyx(a,b,c) -#define mvcur(a,b,c,d) -#define mvwaddch(a,b,c,d) -#define mvprintw(...) -#define printw(...) -#define wprintw(...) -#define mvwprintw(...) - - -#define A_CHARTEXT 0xff -#define inch() 0 -#define endwin() 1 -#define isendwin() 0 -#define baudrate() 9600 -#define killchar() 3 -#define erasechar() 8 -#define wclrtoeol(a) 0 -#define wrefresh(a) 0 -#define unctrl(a) "^x" -#define getmaxx(a) COLS -#define getmaxy(a) LINES -#define mvinch(a,b) '.' -#define mvwinch(a,b,c) 0 -#define newwin(a,b,c,d) 0 -#define subwin(a,b,c,d,e) 0 - -#endif diff --git a/src/cc/rogue/options.c b/src/cc/rogue/options.c index d74979365..258bd184f 100644 --- a/src/cc/rogue/options.c +++ b/src/cc/rogue/options.c @@ -266,7 +266,7 @@ get_str(struct rogue_state *rs,void *vopt, WINDOW *win) { if (c == -1) continue; - else if (c == erasechar()) /* process erase character */ + /*else if (c == erasechar()) // process erase character { if (sp > buf) { @@ -276,12 +276,12 @@ get_str(struct rogue_state *rs,void *vopt, WINDOW *win) } continue; } - else if (c == killchar()) /* process kill character */ + else if (c == killchar()) // process kill character { sp = buf; wmove(win, oy, ox); continue; - } + }*/ else if (sp == buf) { if (c == '-' && win != stdscr) diff --git a/src/cc/rogue/rip.c b/src/cc/rogue/rip.c index be97fb867..65be2e8fa 100644 --- a/src/cc/rogue/rip.c +++ b/src/cc/rogue/rip.c @@ -87,6 +87,7 @@ score(struct rogue_state *rs,int amount, int flags, char monst) delwin(curscr); if (hw != NULL) delwin(hw); + hw = NULL; } top_ten = (SCORE *) malloc(numscores * sizeof (SCORE)); diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index 63e699c30..eb605385d 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -91,7 +91,9 @@ void rogueiterate(struct rogue_state *rs) // Set up windows if ( hw == NULL ) + { hw = newwin(LINES, COLS, 0, 0); + } idlok(stdscr, TRUE); idlok(hw, TRUE); #ifdef MASTER diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index fac84d8b0..f8e5dd23b 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -29,7 +29,7 @@ #include #include -#ifndef DONTUSEGUI +#ifndef BUILD_ROGUE #include #else diff --git a/src/cc/rogue/rogue.scr b/src/cc/rogue/rogue.scr new file mode 100644 index 000000000..e69de29bb diff --git a/src/cc/rogue/save.c b/src/cc/rogue/save.c index 7349c196a..15dda401e 100644 --- a/src/cc/rogue/save.c +++ b/src/cc/rogue/save.c @@ -227,7 +227,9 @@ restore(struct rogue_state *rs,char *file, char **envp) char buf[MAXSTR]; //auto STAT sbuf2; - + if ( rs->guiflag == 0 ) + return(0); + if (strcmp(file, "-r") == 0) file = file_name; diff --git a/src/cc/rogue/things.c b/src/cc/rogue/things.c index 29c51c4ed..39c7b94b7 100644 --- a/src/cc/rogue/things.c +++ b/src/cc/rogue/things.c @@ -502,37 +502,44 @@ add_line(struct rogue_state *rs,char *fmt, char *arg) msg(rs,""); if ( rs->sleeptime != 0 ) refresh(); - tw = newwin(line_cnt + 1, maxlen + 2, 0, COLS - maxlen - 3); - sw = subwin(tw, line_cnt + 1, maxlen + 1, 0, COLS - maxlen - 2); - for (y = 0; y <= line_cnt; y++) + if ( rs->guiflag != 0 ) { - wmove(sw, y, 0); - for (x = 0; x <= maxlen; x++) - waddch(sw, mvwinch(hw, y, x)); - } - wmove(tw, line_cnt, 1); - waddstr(tw, prompt); - /* - * if there are lines below, use 'em - */ - if (LINES > NUMLINES) - { - if (NUMLINES + line_cnt > LINES) - mvwin(tw, LINES - (line_cnt + 1), COLS - maxlen - 3); - else - mvwin(tw, NUMLINES, 0); - } - touchwin(tw); - wrefresh(tw); - wait_for(rs,' '); - if (md_hasclreol()) - { - werase(tw); - leaveok(tw, TRUE); + tw = newwin(line_cnt + 1, maxlen + 2, 0, COLS - maxlen - 3); + sw = subwin(tw, line_cnt + 1, maxlen + 1, 0, COLS - maxlen - 2); + for (y = 0; y <= line_cnt; y++) + { + wmove(sw, y, 0); + for (x = 0; x <= maxlen; x++) + waddch(sw, mvwinch(hw, y, x)); + } + wmove(tw, line_cnt, 1); + waddstr(tw, prompt); + /* + * if there are lines below, use 'em + */ + if (LINES > NUMLINES) + { + if (NUMLINES + line_cnt > LINES) + mvwin(tw, LINES - (line_cnt + 1), COLS - maxlen - 3); + else + mvwin(tw, NUMLINES, 0); + } + touchwin(tw); wrefresh(tw); + wait_for(rs,' '); + if (md_hasclreol()) + { + werase(tw); + leaveok(tw, TRUE); + wrefresh(tw); + } + delwin(tw); + touchwin(stdscr); + } + else + { + wait_for(rs,' '); } - delwin(tw); - touchwin(stdscr); } else { From a6b024b5595f0a9e1c65217fc25b3cc32bee5fac Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:47:24 -1100 Subject: [PATCH 50/64] Delete rogue.scr --- src/cc/rogue/rogue.scr | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/cc/rogue/rogue.scr diff --git a/src/cc/rogue/rogue.scr b/src/cc/rogue/rogue.scr deleted file mode 100644 index e69de29bb..000000000 From 8d1a4eb532cc2ac86aa237be27af71e914a75ca6 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:48:56 -1100 Subject: [PATCH 51/64] Terminate ifdef --- src/cc/rogue/cursesd.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 6d5944b75..8a2062a36 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -145,4 +145,5 @@ int32_t mvwprintw(WINDOW *win,int32_t y,int32_t x,char *fmt,...); #define FALSE 0 #endif +#endif From a76f1fd959472a54c7534ceca9a48287f42a3b40 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:51:28 -1100 Subject: [PATCH 52/64] Test --- src/cc/rogue/rogue.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index f8e5dd23b..8cf5f7d90 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -30,9 +30,10 @@ #include #ifndef BUILD_ROGUE +xxx #include #else - +yyy #include "cursesd.h" #endif From 360cb73281bddb712eeec96dbbe11dbd96d3bb23 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:53:51 -1100 Subject: [PATCH 53/64] Mdport -= curses.h --- src/cc/rogue/mdport.c | 5 +++++ src/cc/rogue/rogue.h | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/mdport.c b/src/cc/rogue/mdport.c index 443ef1e60..899f5d9db 100644 --- a/src/cc/rogue/mdport.c +++ b/src/cc/rogue/mdport.c @@ -81,7 +81,12 @@ #endif #endif +#ifndef BUILD_ROGUE #include /* AIX requires curses.h be included before term.h */ +#else +#include "cursesd.h" +#endif + #if defined(HAVE_TERM_H) #include diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index 8cf5f7d90..e99c0d5ff 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -30,10 +30,8 @@ #include #ifndef BUILD_ROGUE -xxx #include #else -yyy #include "cursesd.h" #endif From 413b477db0f6baba40e942d991cbcac87ac3983b Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:55:09 -1100 Subject: [PATCH 54/64] io.c --- src/cc/rogue/io.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index fbcddf5fa..a5762adda 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -8,6 +8,12 @@ //#include //#include //#include +#ifndef BUILD_ROGUE +#include +#else +#include "cursesd.h" +#endif + #include "rogue.h" /* From bc1fc144ae51f30579e19e765737e5d9db511627 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 00:58:04 -1100 Subject: [PATCH 55/64] Stdscr --- src/cc/rogue/cursesd.c | 1 + src/cc/rogue/cursesd.h | 3 ++- src/cc/rogue/io.c | 5 ----- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 54f55c4f5..76760c3f9 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -16,6 +16,7 @@ #include "cursesd.h" static int32_t endwinflag; +WINDOW *stdscr; WINDOW *newwin(int32_t nlines,int32_t ncols,int32_t begin_y,int32_t begin_x) { diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 8a2062a36..0cbb2cc01 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -40,7 +40,8 @@ struct cursesd_info { uint8_t screen[LINES][COLS]; int32_t x,y; -} *stdscr; +}; +extern WINDOW *stdscr; typedef struct cursesd_info WINDOW; typedef char chtype; diff --git a/src/cc/rogue/io.c b/src/cc/rogue/io.c index a5762adda..c920ee411 100644 --- a/src/cc/rogue/io.c +++ b/src/cc/rogue/io.c @@ -8,11 +8,6 @@ //#include //#include //#include -#ifndef BUILD_ROGUE -#include -#else -#include "cursesd.h" -#endif #include "rogue.h" From da992ca886ca526d58536b91501581d89284e848 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 01:15:30 -1100 Subject: [PATCH 56/64] Fixes --- src/cc/rogue/cursesd.c | 3 ++- src/cc/rogue/cursesd.h | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 76760c3f9..8462532b9 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -23,6 +23,7 @@ WINDOW *newwin(int32_t nlines,int32_t ncols,int32_t begin_y,int32_t begin_x) WINDOW *scr = 0; if ( nlines == LINES && ncols == COLS && begin_y == 0 && begin_x == 0 ) scr = (WINDOW *)calloc(1,sizeof(*stdscr)); + curscr = scr; return(scr); } @@ -400,7 +401,7 @@ char killchar(void) return(3); } -int32_t mvgetnstr(int32_t y, int32_t x, char *str, int32_t n) // stub +int32_t wgetnstr(WINDOW *win, char *str, int32_t n) // stub { fprintf(stderr,"unexpected and unsupported call to mvgetnstr\n"); return(0); diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 0cbb2cc01..57cb51237 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -41,7 +41,7 @@ struct cursesd_info uint8_t screen[LINES][COLS]; int32_t x,y; }; -extern WINDOW *stdscr; +extern WINDOW *stdscr,*curscr; typedef struct cursesd_info WINDOW; typedef char chtype; @@ -111,7 +111,7 @@ int32_t mvaddnstr(int32_t y, int32_t x, const char *str, int32_t n); int32_t mvwaddstr(WINDOW *win, int32_t y, int32_t x, const char *str); int32_t mvwaddnstr(WINDOW *win, int32_t y, int32_t x, const char *str, int32_t n); -int32_t mvgetnstr(int32_t y, int32_t x, char *str, int32_t n); // stub +int32_t wgetnstr(WINDOW *win, char *str, int32_t n); // stub int32_t printw(char *fmt,...); int32_t wprintw(WINDOW *win,char *fmt,...); int32_t mvprintw(int32_t y,int32_t x,char *fmt,...); @@ -122,7 +122,7 @@ int32_t mvwprintw(WINDOW *win,int32_t y,int32_t x,char *fmt,...); #define unctrl(a) "^x" #define getmaxx(a) COLS #define getmaxy(a) LINES -#define getxy(win,y,x) y = win->y, x = win->x +#define getyx(win,y,x) y = win->y, x = win->x // functions with only visible effects #define wrefresh(win) 0 From 958365e987e02457d833e96b657c0e2406151d48 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 01:42:06 -1100 Subject: [PATCH 57/64] _argfory --- src/cc/rogue/cursesd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 57cb51237..12ab8b2be 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -122,7 +122,7 @@ int32_t mvwprintw(WINDOW *win,int32_t y,int32_t x,char *fmt,...); #define unctrl(a) "^x" #define getmaxx(a) COLS #define getmaxy(a) LINES -#define getyx(win,y,x) y = win->y, x = win->x +#define getyx(win,_argfory,_argforx) _argfory = win->y, _argforx = win->x // functions with only visible effects #define wrefresh(win) 0 From 8824e836a700a03bdcc1265e1aa36cbd37e275f3 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 01:44:12 -1100 Subject: [PATCH 58/64] extern WINDOW *stdscr,*curscr; --- src/cc/rogue/rogue.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index e99c0d5ff..f3f5572b2 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -860,5 +860,8 @@ extern const char *wood[]; extern int cNWOOD; extern const char *metal[]; extern int cNMETAL; + +extern WINDOW *stdscr,*curscr; + #endif From 43edfb4ae23abe6ce59ce2377f7329e78eb83e17 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 01:51:13 -1100 Subject: [PATCH 59/64] Stubs --- src/cc/rogue/cursesd.c | 6 ++++++ src/cc/rogue/cursesd.h | 6 +++++- src/cc/rogue/rogue.c | 2 ++ src/cc/rogue/rogue.h | 2 +- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 8462532b9..c89a713ae 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -407,3 +407,9 @@ int32_t wgetnstr(WINDOW *win, char *str, int32_t n) // stub return(0); } +int32_t getch(void) +{ + fprintf(stderr,"unexpected and unsupported call to getch\n"); + return(0); +} + diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 12ab8b2be..53d928ad0 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -41,10 +41,12 @@ struct cursesd_info uint8_t screen[LINES][COLS]; int32_t x,y; }; -extern WINDOW *stdscr,*curscr; typedef struct cursesd_info WINDOW; +extern WINDOW *stdscr,*curscr; typedef char chtype; +int32_t getch(void); // stub + WINDOW *initscr(void); int32_t endwin(void); int32_t isendwin(void); @@ -138,6 +140,8 @@ int32_t mvwprintw(WINDOW *win,int32_t y,int32_t x,char *fmt,...); #define clearok(win,bf) 0 #define idlok(win,bf) 0 #define leaveok(win,bf) 0 +#define halfdelay(x) 0 +#define nocbreak() 0 #ifndef TRUE #define TRUE 1 diff --git a/src/cc/rogue/rogue.c b/src/cc/rogue/rogue.c index eb605385d..b709e8d3a 100644 --- a/src/cc/rogue/rogue.c +++ b/src/cc/rogue/rogue.c @@ -544,9 +544,11 @@ tstp(int ignored) fflush(stdout); //wmove(curscr,oy,ox); #ifndef __APPLE__ +#ifndef BUILD_ROGUE curscr->_cury = oy; curscr->_curx = ox; #endif +#endif } /* diff --git a/src/cc/rogue/rogue.h b/src/cc/rogue/rogue.h index f3f5572b2..a5ddf943f 100644 --- a/src/cc/rogue/rogue.h +++ b/src/cc/rogue/rogue.h @@ -861,7 +861,7 @@ extern int cNWOOD; extern const char *metal[]; extern int cNMETAL; -extern WINDOW *stdscr,*curscr; +//extern WINDOW *stdscr,*curscr; #endif From db50762b5cd84439904e55d0f1d8515b84b24653 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 01:59:19 -1100 Subject: [PATCH 60/64] md_readchar --- src/cc/rogue/cursesd.c | 7 +++++++ src/cc/rogue/cursesd.h | 4 ++++ src/cc/rogue/mdport.c | 4 +++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index c89a713ae..c7a28fc62 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -17,6 +17,7 @@ static int32_t endwinflag; WINDOW *stdscr; +int32_t ESCDELAY; WINDOW *newwin(int32_t nlines,int32_t ncols,int32_t begin_y,int32_t begin_x) { @@ -413,3 +414,9 @@ int32_t getch(void) return(0); } +int32_t md_readchar(void) +{ + fprintf(stderr,"unexpected and unsupported call to md_readchar\n"); + return(0); +} + diff --git a/src/cc/rogue/cursesd.h b/src/cc/rogue/cursesd.h index 53d928ad0..4fa09e9d9 100644 --- a/src/cc/rogue/cursesd.h +++ b/src/cc/rogue/cursesd.h @@ -36,6 +36,8 @@ #include #include +#define ERR (-1) + struct cursesd_info { uint8_t screen[LINES][COLS]; @@ -43,9 +45,11 @@ struct cursesd_info }; typedef struct cursesd_info WINDOW; extern WINDOW *stdscr,*curscr; +extern int32_t ESCDELAY; typedef char chtype; int32_t getch(void); // stub +int32_t md_readchar(void); // stub WINDOW *initscr(void); int32_t endwin(void); diff --git a/src/cc/rogue/mdport.c b/src/cc/rogue/mdport.c index 899f5d9db..841dffbb8 100644 --- a/src/cc/rogue/mdport.c +++ b/src/cc/rogue/mdport.c @@ -1081,6 +1081,7 @@ md_setsuspchar(int c) #define M_KEYPAD 2 #define M_TRAIL 3 +#ifndef BUILD_ROGUE int md_readchar() { @@ -1320,7 +1321,8 @@ md_readchar() return(ch & 0x7F); } - +#endif + #if defined(LOADAV) && defined(HAVE_NLIST_H) && defined(HAVE_NLIST) /* * loadav: From 0e79c0002e61f8597ffd0e047ea14b0864859c04 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 02:03:09 -1100 Subject: [PATCH 61/64] Build cursesd.c --- src/cc/cclib.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cc/cclib.cpp b/src/cc/cclib.cpp index 8a5cd2185..77f6a21ac 100644 --- a/src/cc/cclib.cpp +++ b/src/cc/cclib.cpp @@ -496,6 +496,7 @@ cJSON *cclib_reparse(int32_t *nump,cJSON *origparams) // assumes origparams will #ifdef BUILD_ROGUE #include "rogue_rpc.cpp" +#include "rogue/cursesd.c" #include "rogue/vers.c" #include "rogue/extern.c" #include "rogue/armor.c" From 4a6e3550134ae0b1d04a86f4e2fdac2a9aa4b1f4 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 02:05:20 -1100 Subject: [PATCH 62/64] syntax --- src/cc/rogue/cursesd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index c7a28fc62..d1975624c 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -103,7 +103,7 @@ int clrtoeol(void) int32_t waddch(WINDOW *win, chtype ch) { - int32_t t; + int32_t i; if ( ch == '\t' ) { for (i=0; i<8; i++) @@ -139,7 +139,7 @@ int32_t waddch(WINDOW *win, chtype ch) win->y = 0; } } - reurn(0); + return(0); } int32_t mvwaddch(WINDOW *win, int32_t y, int32_t x, chtype ch) @@ -186,7 +186,7 @@ int32_t mvwaddnstr(WINDOW *win, int32_t y, int32_t x, const char *str, int32_t n { win->y = y; win->x = x; - return(waddnstr(win,str)); + return(waddnstr(win,str,n)); } int32_t addstr(const char *str) @@ -378,7 +378,7 @@ int leaveok(WINDOW *win, bool bf) } #endif -int32_t mvwin(WINDOW *win, int32_t y, int32_t x); // stub +int32_t mvwin(WINDOW *win, int32_t y, int32_t x) // stub { fprintf(stderr,"unexpected call to mvwin\n"); return(0); From 62e1966b14263fcb96ca95d36f4535bc70b514f7 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 02:05:58 -1100 Subject: [PATCH 63/64] Void --- src/cc/rogue/cursesd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index d1975624c..5bba65c95 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -282,7 +282,7 @@ int32_t mvcur(int32_t oldrow, int32_t oldcol, int32_t newrow, int32_t newcol) return(0); } -void endwin() +void endwin(void) { if ( stdscr != 0 ) free(stdscr), stdscr = 0; From 3666f642e496ef9a2bc9d27e5514794bd19dcfc3 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 17 Feb 2019 02:07:34 -1100 Subject: [PATCH 64/64] int32_t --- src/cc/rogue/cursesd.c | 51 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/cc/rogue/cursesd.c b/src/cc/rogue/cursesd.c index 5bba65c95..99274b86f 100644 --- a/src/cc/rogue/cursesd.c +++ b/src/cc/rogue/cursesd.c @@ -53,27 +53,27 @@ int32_t move(int32_t y, int32_t x) return(wmove(stdscr,y,x)); } -int werase(WINDOW *win) +int32_t werase(WINDOW *win) { memset(win->screen,' ',sizeof(win->screen)); return(0); } -int wclear(WINDOW *win) +int32_t wclear(WINDOW *win) { werase(win); clearok(win,TRUE); return(0); } -int wclrtoeol(WINDOW *win) +int32_t wclrtoeol(WINDOW *win) { if ( win->x < COLS-1 ) memset(&win->screen[win->y][win->x],' ',COLS - win->x); return(0); } -int wclrtobot(WINDOW *win) +int32_t wclrtobot(WINDOW *win) { wclrtoeol(win); if ( win->y < LINES-1 ) @@ -81,22 +81,22 @@ int wclrtobot(WINDOW *win) return(0); } -int erase(void) +int32_t erase(void) { return(werase(stdscr)); } -int clear(void) +int32_t clear(void) { return(wclear(stdscr)); } -int clrtobot(void) +int32_t clrtobot(void) { return(wclrtobot(stdscr)); } -int clrtoeol(void) +int32_t clrtoeol(void) { return(wclrtoeol(stdscr)); } @@ -282,47 +282,48 @@ int32_t mvcur(int32_t oldrow, int32_t oldcol, int32_t newrow, int32_t newcol) return(0); } -void endwin(void) +int32_t endwin(void) { if ( stdscr != 0 ) free(stdscr), stdscr = 0; endwinflag = 1; + return(0); } -int isendwin(void) +int32_t isendwin(void) { return(endwinflag); } -int refresh(void) +int32_t refresh(void) { endwinflag = 0; return(wrefresh(stdscr)); } -int redrawwin(WINDOW *win) +int32_t redrawwin(WINDOW *win) { return(wrefresh(win)); } -int wredrawln(WINDOW *win, int beg_line, int num_lines) +int32_t wredrawln(WINDOW *win, int32_t beg_line, int32_t num_lines) { return(wrefresh(win)); } // functions with no data side effect #ifdef they_are_macros -int wrefresh(WINDOW *win) +int32_t wrefresh(WINDOW *win) { return(0); } -int wnoutrefresh(WINDOW *win) +int32_t wnoutrefresh(WINDOW *win) { return(0); } -int doupdate(void) +int32_t doupdate(void) { return(0); } @@ -332,17 +333,17 @@ int32_t touchwin(WINDOW *win) return(0); } -int standout(void) +int32_t standout(void) { return(0); } -int standend(void) +int32_t standend(void) { return(0); } -int raw(void) +int32_t raw(void) { return(0); } @@ -352,27 +353,27 @@ int32_t keypad(WINDOW *win, bool bf) return(0); } -int noecho(void) +int32_t noecho(void) { return(0); } -int flushinp(void) +int32_t flushinp(void) { return(0); } -int clearok(WINDOW *win, bool bf) +int32_t clearok(WINDOW *win, bool bf) { return(0); } -int idlok(WINDOW *win, bool bf) +int32_t idlok(WINDOW *win, bool bf) { return(0); } -int leaveok(WINDOW *win, bool bf) +int32_t leaveok(WINDOW *win, bool bf) { return(0); } @@ -384,7 +385,7 @@ int32_t mvwin(WINDOW *win, int32_t y, int32_t x) // stub return(0); } -WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x) +WINDOW *subwin(WINDOW *orig, int32_t nlines, int32_t ncols, int32_t begin_y, int32_t begin_x) { fprintf(stderr,"unexpected and unsupported call to subwin\n"); return(0);