diff options
Diffstat (limited to 'build')
| -rw-r--r-- | build/example.py | 21 | ||||
| -rw-r--r-- | build/ext_chat.py | 211 | ||||
| -rw-r--r-- | build/ext_fun.py | 9 | ||||
| -rw-r--r-- | build/tpt_console.py | 116 |
4 files changed, 357 insertions, 0 deletions
diff --git a/build/example.py b/build/example.py new file mode 100644 index 0000000..850d8ae --- /dev/null +++ b/build/example.py @@ -0,0 +1,21 @@ +import utils +# example script + +def noise(typ,amount=50): + for xx in range(4,612): + for yy in range(4,384): + if(random.randrange(0,100)<amount): + tpt.create(xx,yy,typ) + +def increment(amount=1): + for xx in range(4,612): + for yy in range(4,384): + i = tpt.get_pmap(xx,yy)>>8 + t = tpt.get_prop(i,"type")+amount + if t>=148: + t=t-148 + if t==128: + t=129 + if t==55: + t=56 + tpt.set_type(i=i,settoint=t)
\ No newline at end of file diff --git a/build/ext_chat.py b/build/ext_chat.py new file mode 100644 index 0000000..56a58e5 --- /dev/null +++ b/build/ext_chat.py @@ -0,0 +1,211 @@ +import tpt +import sys +import time +import socket +import tpt_console + +HOST="irc.freenode.net" +PORT=6667 +name=tpt.get_name() +print "name is %s"%repr(name) +if(name==""): + #fuck. abort? + raise SystemExit("please log in!") + +def raw(s,st): + s.send("%s\n\r"%st) + +def init(): + global frame,s,rec,readbuffer,namelist,typing,typed,IDENT,NICK + global REALNAME,CHANNEL + frame=0 + s=None + rec=([("",0,0,0,255)]*20)+[("connected.",255,0,0,128)] + readbuffer="" + namelist=[] + typing=False + typed="" + NICK=name+"[tpt]" + IDENT=name+"[tpt]" + REALNAME=name + CHANNEL="#powder" + readbuffer="" + +def exit(): + raw(s,"QUIT") + s.close() + +def console_handle(txt): + """ + :doxin!~lieuwe@unaffiliated/lieuwe JOIN :#foobar7 + :doxin!~lieuwe@unaffiliated/lieuwe PRIVMSG #foobar7 :there + :doxin!~lieuwe@unaffiliated/lieuwe PRIVMSG #foobar7 :ACTION is fat + """ + lst=txt.split(" ") + if(lst[0]=="/me"): + rec.append(("%s %s"%(NICK,txt[4:]),255,0,255,128)) + raw(s,"PRIVMSG %s :\x01ACTION %s\x01"%(CHANNEL,txt[4:])) + tpt.console_close() + else: + rec.append(("<%s>: %s"%(NICK,txt),255,255,0,128)) + raw(s,"PRIVMSG %s :%s"%(CHANNEL,txt)) + tpt.console_close() + +def key(keyy) : + try: + a=key.pmod + except: + key.pmod=(False,False,False) + global typing,typed + #print "got %s"%repr(keyy) + ctrl1,ctrl2,alt1,alt2,shift1,shift2=tpt.get_modifier() + mod=(ctrl1 or ctrl2,alt1 or alt2,shift1 or shift2) + skip=False + if(not key.pmod[0] and mod[0]): + skip=True + if(not key.pmod[1] and mod[1]): + skip=True + if(not key.pmod[2] and mod[2]): + skip=True + key.pmod=mod + if(skip): + return + + if(typing and ord(keyy)>=32 and ord(keyy)<=126): + if(mod[2]): + typed+=keyy.upper()#needs to be fixed for special chars + else: + typed+=keyy + if(keyy=="\x1b" and typing): + typing=False + typed="" + tpt.shortcuts_enable() + if(keyy=="t" and typing==False): + typing=True + tpt.shortcuts_disable() + if(keyy=="\r" and typing==True): + console_handle(typed) + typed="" + typing=False + tpt.shortcuts_enable() + #got '\t' + #got '\x08' + if(keyy=="\x08"): + typed=typed[:-1] + #if(keyy=="\t"): + # startswith= + + +def step(): + global frame,s,rec,readbuffer,namelist + frame+=1 + if(frame==1): + tpt.console_close() + #lets see if we can seize the console: + tpt_console._handle=console_handle + if(frame==2): + tpt.draw_fillrect(0,0,612,384,0,0,0,128) + tpt.draw_text(32,32,"opening connection\nhold on to your pants.",255,255,255) + if(frame==3): + s=socket.socket() + s.settimeout(5) + s.connect((HOST, PORT)) + raw(s,"NICK %s" % NICK) + raw(s,"USER %s %s bla :%s" % (IDENT, HOST, REALNAME)) + s.settimeout(0) + if(frame==120): + raw(s,"JOIN %s"%CHANNEL) + rec.append(("joined",255,0,0,255)) + if(frame>=3): + try: + readbuffer=readbuffer+s.recv(1024) + except IOError: + pass + else: + temp=readbuffer.split("\n") + readbuffer=temp.pop() + + for line in temp: + line=line.strip() + #print repr(line) + line=line.split() + if(line[1]=="PRIVMSG"): + #:doxin!~lieuwe@unaffiliated/lieuwe PRIVMSG doxin[tpt] :some shit + frm=line[0][1:].partition("!")[0] + msg=' '.join(line[3:])[1:] + tmp=["<",frm,"> ",msg] + if(msg[0]=="\x01" and msg[-1]=="\x01"): + msg=msg[8:-1]#ACTION + tmp=[frm," ",msg] + if(line[2]==NICK): + rec.append((''.join(tmp),255,255,255,255)) + else: + rec.append((''.join(tmp),255,255,255,128)) + elif(line[0]=="PING"): + raw(s,"PONG %s"%line[1]) + elif(line[1]=="353"): + #:leguin.freenode.net 353 doxin[tpt] = #powder :doxin[tpt] ZebraineZ _-_Rafael_-_ doxin bildramer BlueMaxima TheRazorsEDGE raj-k webb|AP where @devast8a Merbo FrozenKnight EppyMoon EvilJStoker Mortvert SpitfireWP @frankbro Ares + names=line[4:] + namelist=[] + for item in names: + item=item.strip() + r=255 + g=255 + b=255 + if(item[0]==":"): + item=item[1:] + elif(item[0]=="@"): + g=0 + b=0 + namelist.append((item,r,g,b,128)) + elif(line[1]=="JOIN"): + #':savask!~savask@95-190-25-195-xdsl-dynamic.kuzbass.net JOIN :#powder' + tmp=line[0][1:].partition("!")[0] + namelist.append((tmp,255,255,255,128)) + rec.append(("%s joined"%name,0,255,0,128)) + elif(line[1]=="PART"): + #':savask!~savask@95-190-25-195-xdsl-dynamic.kuzbass.net PART #powder :"Leaving."' + tmp=line[0][1:].partition("!")[0] + msg=' '.join(line[2:])[1:] + rem=None + for item in namelist: + if(item[0]==tmp or item[0]=="@"+tmp): + rem=item + rec.append(("%s parted: %s"%(name,msg),0,255,0,128)) + if(rem!=None): + namelist.remove(rem) + elif(line[1]=="NICK"): + #:doxin!~lieuwe@unaffiliated/lieuwe NICK :d0x1n + tmp=line[0][1:].partition("!")[0] + rem=None + for item in namelist: + if(item[0]==tmp or item[0]=="@"+tmp): + rem=item + rec.append(("%s is now known as %s"%(name,line[2]),0,255,0,128)) + if(rem!=None): + if(rem[0][0]=="@"): + namelist.append(("@"+line[2][1:],rem[1],rem[2],rem[3],rem[4])) + else: + namelist.append((line[2][1:],rem[1],rem[2],rem[3],rem[4])) + namelist.remove(rem) + + + + + yy=32 + if(len(rec)>20): + rec=rec[-20:] + for item in rec: + tpt.draw_text(8,yy,item[0],item[1],item[2],item[3],item[4]) + yy+=8 + if(typing): + if(frame%30<15): + tpt.draw_text(8,yy,typed+"|",255,255,255,255) + else: + tpt.draw_text(8,yy,typed,255,255,255,255) + #print namelist + yy=32 + for item in namelist: + tpt.draw_text(604-tpt.get_width(item[0]),yy,item[0],item[1],item[2],item[3],item[4]) + yy+=8 + diff --git a/build/ext_fun.py b/build/ext_fun.py new file mode 100644 index 0000000..35c93a1 --- /dev/null +++ b/build/ext_fun.py @@ -0,0 +1,9 @@ +import tpt +def init(): + pass +def key(keyy): + pass +def step(): + tpt.draw_text(100,100,"FUCK YEAH!",255,255,255,255) +def exit(): + pass diff --git a/build/tpt_console.py b/build/tpt_console.py new file mode 100644 index 0000000..b26ecef --- /dev/null +++ b/build/tpt_console.py @@ -0,0 +1,116 @@ +import tpt +from tpt import * +import sys +import code +import ctypes +import traceback +DEBUG=False + +#print "console module loaded." +#redirect stdout like this: +class logger: + def write(self,txt): + txt=txt.strip().split("\n")[-1] + repr(txt) + tpt.log(txt) +if(DEBUG==False): + sys.stdout=logger() + sys.stderr=logger() + + +element={"none":0,"dust":1,"watr":2,"oil":3,"fire":4,"stne":5,"lava":6,"gunp":7, + "nitr":8,"clne":9,"gas":10,"plex":11,"goo":12,"icei":13,"metl":14,"sprk":15, + "snow":16,"wood":17,"neut":18,"plut":19,"plnt":20,"acid":21,"void":22, + "wtrv":23,"cnct":24,"dstw":25,"salt":26,"sltw":27,"dmnd":28,"bmtl":29, + "brmt":30,"phot":31,"uran":32,"wax":33,"mwax":34,"pscn":35,"nscn":36, + "lntg":37,"insl":38,"bhol":39,"whol":40,"rbdm":41,"lrbd":42,"ntct":43, + "sand":44,"glas":45,"ptct":46,"bgla":47,"thdr":48,"plsm":49,"etrd":50, + "nice":51,"nble":52,"btry":53,"lcry":54,"stkm":55,"swch":56,"smke":57, + "desl":58,"coal":59,"lo2":60,"o2":61,"inwr":62,"yest":63,"dyst":64, + "thrm":65,"glow":66,"brck":67,"hflm":68,"firw":69,"fuse":70,"fsep":71, + "amtr":72,"bcol":73,"pcln":74,"hswc":75,"iron":76,"mort":77,"gol":78, + "hlif":79,"asim":80,"2x2":81,"dani":82,"amoe":83,"move":84,"pgol":85, + "dmoe":86,"34":87,"llif":88,"stan":89,"spng":90,"rime":91,"fog":92, + "bcln":93,"love":94,"deut":95,"warp":96,"pump":97,"fwrk":98,"pipe":99, + "frzz":100,"frzw":101,"grav":102,"bizr":103,"bizrg":104,"bizrs":105, + "inst":106,"isoz":107,"iszs":108,"prti":109,"prto":110,"pste":111, + "psts":112,"anar":113,"vine":114,"invis":115,"equalvel":116,"spawn2":117, + "spawn":118,"shld1":119,"shld2":120,"shld3":121,"shld4":122,"lolz":123, + "wifi":124,"filt":125,"aray":126,"bray":127,"stkm2":128,"bomb":129, + "c5":130,"sing":131,"qrtz":132,"pqrt":133,"seed":134,"maze":135, + "coag":136,"wall":137,"gnar":138,"repl":139,"myst":140,"boyl":141, + "lote":142,"frg2":143,"star":144,"frog":145,"bran":146,"wind":147, + "num":148} + + +def fork_unblock(): + pass#i need to implement this some day. +def error(ex): + traceback.print_exc() + err=traceback.format_exc() + sys.stdout.write(err) + +def clean(): + #add any functions that must be reachable here. + """copy=["__builtins__","__name__","__doc__","__package__",'tpt','clean', + 'element','fork','_fork','fork_status','fork_unblock','sys'] + handle.glob={} + for item in copy: + handle.glob[item]=globals()[item]""" + handle.glob=globals() + handle.buf="" + +def handle(txt): + try: + a=handle.glob + except: + clean() + try: + _handle(txt) + except Exception as ex: + error(ex) + +def _handle(txt): + #print "handling '%s'"%txt + try: + sys.stdout.write(repr(eval(txt,handle.glob))) + except: + try: + exec txt in handle.glob + except Exception as ex: + error(ex) + + +_extensions=[] +def loadext(fname): + ext=__import__(fname) + ext.init() + _extensions.append(ext) + +def keypress(key): + unload=[] + for item in _extensions: + try: + item.key(key) + except Exception as ex: + error(ex) + unload.append(item) + for item in unload: + item.exit() + _extensions.remove(item) + + +def step(): + unload=[] + for item in _extensions: + try: + item.step() + except Exception as ex: + error(ex) + unload.append(item) + for item in unload: + try: + item.exit() + except Exception as ex: + error(ex) + _extensions.remove(item) |
