-> -> ANNVIT CÆPTIS MDCCLXXVI! -> -> Hall of Fame client 1.4 stab -> -> $NSAREG: 23F27N06OR2748D5894.3 [Crassus] -> -> Copyright © 1995 Psilocybe Software -> -> This program is free software; you can redistribute it and/or modify -> it under the terms of the GNU General Public License as published by -> the Free Software Foundation; either version 2 of the License, or -> (at your option) any later version. -> -> This program is distributed in the hope that it will be useful, -> but WITHOUT ANY WARRANTY; without even the implied warranty of -> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -> GNU General Public License for more details. -> -> You should have received a copy of the GNU General Public License -> along with this program; if not, write to the Free Software -> Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -> -> $HISTORY: -> -> 22 Sep 1995 : 001.005 : Understands SNAKE_HIDE/SHOWINTERFACE -> 13 Sep 1995 : 001.004 : Performs simple encryption on data file -> 12 Sep 1995 : 001.003 : Highlights current player's position -> 20 Aug 1995 : 001.002 : Updated to use krsnake.library -> 27 Jun 1995 : 001.001 : Initial release -> -> NOVUS ORDO SECLORUM! -> OPT OSVERSION=37 MODULE 'intuition/intuition','intuition/screens','dos/dos','graphics/text' MODULE 'graphics/view','exec/ports','exec/lists','exec/nodes','utility' MODULE 'reqtools','libraries/reqtools','krsnake','libraries/krsnake' MODULE 'tools/trapguru','tools/exceptions','exec/tasks','*createpath' RAISE "SCR" IF LockPubScreen()=0, "WIN" IF OpenWindowTagList()=0, "DRI" IF GetScreenDrawInfo()=0, "FONT" IF OpenFont()=0, "LIB" IF OpenLibrary()=0 OBJECT playernode succ:PTR TO playernode pred:PTR TO playernode name:PTR TO CHAR score:LONG ENDOBJECT DEF krc=0,w=0:PTR TO window,s=0:PTR TO screen DEF dri=0:PTR TO drawinfo,font:PTR TO textfont,dripens[NUMDRIPENS]:ARRAY OF INT DEF ww=160,wh=-1,iw,ih,fy,fh,wx=0,wy=-1,th DEF killtask=FALSE DEF pubscreen[128]:ARRAY OF CHAR DEF hall=0:PTR TO playernode DEF dn[256]:ARRAY OF CHAR,current=0:PTR TO playernode DEF visible=0 PROC newplayer(name:PTR TO CHAR,score) DEF node:PTR TO playernode,nodename:PTR TO CHAR NEW node NEW nodename[StrLen(name)+1] node.name:=nodename copystring(nodename,name) node.score:=score insertplayer(node) ENDPROC node PROC deleteplayer(node:PTR TO playernode) DEF nodename:PTR TO CHAR removeplayer(node) nodename:=node.name END nodename END node ENDPROC PROC removeplayer(node:PTR TO playernode) IF node.succ THEN node.succ::playernode.pred:=node.pred IF node.pred THEN node.pred::playernode.succ:=node.succ IF hall=node THEN hall:=node.succ ENDPROC PROC findplayer(name:PTR TO CHAR) DEF node:PTR TO playernode node:=hall WHILE node IF Stricmp(node.name,name)=0 THEN RETURN node node:=node.succ ENDWHILE node:=0 ENDPROC node PROC insertplayer(node:PTR TO playernode) DEF c:PTR TO playernode,ok=0 c:=hall IF c=0 node.succ:=0 node.pred:=0 hall:=node ELSE WHILE ok=0 IF node.score>=c.score node.pred:=c.pred node.succ:=c IF node.pred node.pred::playernode.succ:=node ELSE hall:=node node.pred:=0 ENDIF c.pred:=node ok:=1 ELSE IF c.succ c:=c.succ ELSE c.succ:=node node.pred:=c node.succ:=0 ok:=1 ENDIF ENDIF ENDWHILE ENDIF ENDPROC PROC getname(score) DEF node:PTR TO playernode RtGetStringA(dn,255,'Hall of Fame!',0,[RTGS_TEXTFMT,'Enter your name for the Hall of Fame:',RTGS_FLAGS,GSREQF_CENTERTEXT,NIL]) IF (node:=findplayer(TrimStr(dn))) IF node.score0 AND current removeplayer(current) current.score:=postpone insertplayer(current) IF visible THEN renderhall(TRUE) postpone:=0 ENDIF ELSEIF visible=1 IF And(sig,Shl(1,w.userport::mp.sigbit)) WHILE (msg:=GetMsg(w.userport)) icl:=msg.class ico:=msg.code ReplyMsg(msg) SELECT icl CASE IDCMP_CLOSEWINDOW killtask:=TRUE CASE IDCMP_REFRESHWINDOW render() CASE IDCMP_NEWSIZE render() CASE IDCMP_RAWKEY IF ico=$45 THEN killtask:=TRUE ENDSELECT ENDWHILE ENDIF ENDIF UNTIL killtask vanish() dumphall() dumpsettings() EXCEPT DO IF krc THEN KsRemoveClient(krc) vanish() IF utilitybase THEN CloseLibrary(utilitybase) IF reqtoolsbase THEN CloseLibrary(reqtoolsbase) IF krsnakebase THEN CloseLibrary(krsnakebase) IF exception THEN report_exception() ENDPROC CHAR '$VER: HallOfFame 1.005 (22 Sep 1995) stable beta test version'