Fix makefile for OS X
This commit is contained in:
commit
0ded22493e
17
Makefile
17
Makefile
@ -11,67 +11,84 @@ FLAGS_DBUG := -Wall -std=c99 -D_POSIX_C_SOURCE=200112L -pg -DX86 -DX86_SSE3 -mss
|
|||||||
COMPILER := gcc
|
COMPILER := gcc
|
||||||
LINUX_TARG := powder-64-sse2 powder-sse powder-sse2
|
LINUX_TARG := powder-64-sse2 powder-sse powder-sse2
|
||||||
WIN32_TARG := powder-sse.exe powder-sse2.exe
|
WIN32_TARG := powder-sse.exe powder-sse2.exe
|
||||||
|
PYCOMMAND := python2 getheader.py
|
||||||
|
|
||||||
powder: $(SOURCES)
|
powder: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -DINTERNAL -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN64
|
$(COMPILER) -DINTERNAL -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN64
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-debug-64: $(SOURCES)
|
powder-debug-64: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m64 -o$@ $(FLAGS_DBUG) -DLIN64 $(SOURCES) -Iincludes/
|
$(COMPILER) -m64 -o$@ $(FLAGS_DBUG) -DLIN64 $(SOURCES) -Iincludes/
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-debug: $(SOURCES)
|
powder-debug: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m32 -o$@ $(FLAGS_DBUG) -DLIN32 $(SOURCES) -Iincludes/
|
$(COMPILER) -m32 -o$@ $(FLAGS_DBUG) -DLIN32 $(SOURCES) -Iincludes/
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-sse3: $(SOURCES)
|
powder-sse3: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m32 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN32
|
$(COMPILER) -m32 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN32
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-sse2: $(SOURCES)
|
powder-sse2: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m32 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE2) $(SOURCES) -DLIN32
|
$(COMPILER) -m32 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE2) $(SOURCES) -DLIN32
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-sse: $(SOURCES)
|
powder-sse: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m32 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE) $(SOURCES) -DLIN32
|
$(COMPILER) -m32 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE) $(SOURCES) -DLIN32
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-64-sse3-opengl: $(SOURCES)
|
powder-64-sse3-opengl: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m64 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN64 -lGL -lGLU -DOpenGL
|
$(COMPILER) -m64 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN64 -lGL -lGLU -DOpenGL
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-64-sse3: $(SOURCES)
|
powder-64-sse3: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m64 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN64
|
$(COMPILER) -m64 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE3) $(SOURCES) -DLIN64
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-64-sse2: $(SOURCES)
|
powder-64-sse2: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
$(COMPILER) -m64 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE2) $(SOURCES) -DLIN64
|
$(COMPILER) -m64 -o$@ $(CFLAGS) $(OFLAGS) $(LFLAGS) $(MFLAGS_SSE2) $(SOURCES) -DLIN64
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
|
|
||||||
powder-icc: $(SOURCES)
|
powder-icc: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
/opt/intel/Compiler/11.1/073/bin/intel64/icc -m64 -o$@ -Iincludes/ -O2 -march=core2 -msse3 -mfpmath=sse -lSDL -lbz2 -lm -xW $(SOURCES) -std=c99 -D_POSIX_C_SOURCE=200112L
|
/opt/intel/Compiler/11.1/073/bin/intel64/icc -m64 -o$@ -Iincludes/ -O2 -march=core2 -msse3 -mfpmath=sse -lSDL -lbz2 -lm -xW $(SOURCES) -std=c99 -D_POSIX_C_SOURCE=200112L
|
||||||
|
|
||||||
powder-res.o: powder-res.rc powder.ico
|
powder-res.o: powder-res.rc powder.ico
|
||||||
|
$(PYCOMMAND)
|
||||||
i586-mingw32msvc-windres powder-res.rc powder-res.o
|
i586-mingw32msvc-windres powder-res.rc powder-res.o
|
||||||
|
|
||||||
powder-sse3.exe: $(SOURCES) powder-res.o
|
powder-sse3.exe: $(SOURCES) powder-res.o
|
||||||
|
$(PYCOMMAND)
|
||||||
i586-mingw32msvc-gcc -o$@ $(CFLAGS) $(OFLAGS) $(MFLAGS_SSE3) $(SOURCES) powder-res.o -lmingw32 -llibregex -lws2_32 -lSDLmain $(LFLAGS) -mwindows -DWIN32
|
i586-mingw32msvc-gcc -o$@ $(CFLAGS) $(OFLAGS) $(MFLAGS_SSE3) $(SOURCES) powder-res.o -lmingw32 -llibregex -lws2_32 -lSDLmain $(LFLAGS) -mwindows -DWIN32
|
||||||
strip $@
|
strip $@
|
||||||
chmod 0644 $@
|
chmod 0644 $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-sse2.exe: $(SOURCES) powder-res.o
|
powder-sse2.exe: $(SOURCES) powder-res.o
|
||||||
|
$(PYCOMMAND)
|
||||||
i586-mingw32msvc-gcc -o$@ $(CFLAGS) $(OFLAGS) $(MFLAGS_SSE2) $(SOURCES) powder-res.o -lmingw32 -llibregex -lws2_32 -lSDLmain $(LFLAGS) -mwindows -DWIN32
|
i586-mingw32msvc-gcc -o$@ $(CFLAGS) $(OFLAGS) $(MFLAGS_SSE2) $(SOURCES) powder-res.o -lmingw32 -llibregex -lws2_32 -lSDLmain $(LFLAGS) -mwindows -DWIN32
|
||||||
strip $@
|
strip $@
|
||||||
chmod 0644 $@
|
chmod 0644 $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-sse.exe: $(SOURCES) powder-res.o
|
powder-sse.exe: $(SOURCES) powder-res.o
|
||||||
|
$(PYCOMMAND)
|
||||||
i586-mingw32msvc-gcc -o$@ $(CFLAGS) $(OFLAGS) $(MFLAGS_SSE) $(SOURCES) powder-res.o -lmingw32 -llibregex -lws2_32 -lSDLmain $(LFLAGS) -mwindows -DWIN32
|
i586-mingw32msvc-gcc -o$@ $(CFLAGS) $(OFLAGS) $(MFLAGS_SSE) $(SOURCES) powder-res.o -lmingw32 -llibregex -lws2_32 -lSDLmain $(LFLAGS) -mwindows -DWIN32
|
||||||
strip $@
|
strip $@
|
||||||
chmod 0644 $@
|
chmod 0644 $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-x: $(SOURCES)
|
powder-x: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
gcc -o $@ $(CFLAGS) $(OFLAGS) $(LFLAGS_X) $(MFLAGS) $(SOURCES) -DMACOSX -DPIX32BGRA -arch x86_64 -framework Cocoa -framework SDL -framework Python
|
gcc -o $@ $(CFLAGS) $(OFLAGS) $(LFLAGS_X) $(MFLAGS) $(SOURCES) -DMACOSX -DPIX32BGRA -arch x86_64 -framework Cocoa -framework SDL -framework Python
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
powder-x-ogl: $(SOURCES)
|
powder-x-ogl: $(SOURCES)
|
||||||
|
$(PYCOMMAND)
|
||||||
gcc -o $@ $(CFLAGS) $(OFLAGS) $(LFLAGS_X) $(MFLAGS) $(SOURCES) -DOpenGL -DMACOSX -DPIX32BGRA -arch x86_64 -framework Cocoa -framework SDL -framework OpenGL -framework Python
|
gcc -o $@ $(CFLAGS) $(OFLAGS) $(LFLAGS_X) $(MFLAGS) $(SOURCES) -DOpenGL -DMACOSX -DPIX32BGRA -arch x86_64 -framework Cocoa -framework SDL -framework OpenGL -framework Python
|
||||||
strip $@
|
strip $@
|
||||||
mv $@ build
|
mv $@ build
|
||||||
|
211
build/ext_chat.py
Normal file
211
build/ext_chat.py
Normal file
@ -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="#foobar7"
|
||||||
|
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
|
||||||
|
|
9
build/ext_fun.py
Normal file
9
build/ext_fun.py
Normal file
@ -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
|
@ -17,7 +17,7 @@ print args,"-I%s"%path
|
|||||||
lst=[]
|
lst=[]
|
||||||
compileall.compile_dir("./src/python", force=1)
|
compileall.compile_dir("./src/python", force=1)
|
||||||
|
|
||||||
print "\n\n\ngenerating pyconsole.h"
|
print "generating pyconsole.h"
|
||||||
|
|
||||||
fname="./src/python/tpt_console.pyc"
|
fname="./src/python/tpt_console.pyc"
|
||||||
try:
|
try:
|
||||||
|
@ -67,6 +67,8 @@ extern unsigned char ZSIZE;
|
|||||||
#define SQUARE_BRUSH 1
|
#define SQUARE_BRUSH 1
|
||||||
#define BRUSH_NUM 2
|
#define BRUSH_NUM 2
|
||||||
|
|
||||||
|
#define PYCONSOLE
|
||||||
|
|
||||||
#ifdef PIX16
|
#ifdef PIX16
|
||||||
typedef unsigned short pixel;
|
typedef unsigned short pixel;
|
||||||
#else
|
#else
|
||||||
|
File diff suppressed because one or more lines are too long
241
src/main.c
241
src/main.c
@ -23,8 +23,12 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <defines.h>
|
||||||
|
|
||||||
|
#ifdef PYCONSOLE
|
||||||
#include "Python.h"
|
#include "Python.h"
|
||||||
#include "pyconsole.h"
|
#include "pyconsole.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -44,7 +48,6 @@
|
|||||||
|
|
||||||
#include <misc.h>
|
#include <misc.h>
|
||||||
#include <font.h>
|
#include <font.h>
|
||||||
#include <defines.h>
|
|
||||||
#include <powder.h>
|
#include <powder.h>
|
||||||
#include <graphics.h>
|
#include <graphics.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
@ -55,6 +58,8 @@
|
|||||||
#include <air.h>
|
#include <air.h>
|
||||||
#include <icon.h>
|
#include <icon.h>
|
||||||
|
|
||||||
|
pixel *vid_buf;
|
||||||
|
|
||||||
#define NUM_SOUNDS 2
|
#define NUM_SOUNDS 2
|
||||||
struct sample {
|
struct sample {
|
||||||
Uint8 *data;
|
Uint8 *data;
|
||||||
@ -161,6 +166,7 @@ float mheat = 0.0f;
|
|||||||
|
|
||||||
int do_open = 0;
|
int do_open = 0;
|
||||||
int sys_pause = 0;
|
int sys_pause = 0;
|
||||||
|
int sys_shortcuts = 1;
|
||||||
int legacy_enable = 0; //Used to disable new features such as heat, will be set by commandline or save.
|
int legacy_enable = 0; //Used to disable new features such as heat, will be set by commandline or save.
|
||||||
int death = 0, framerender = 0;
|
int death = 0, framerender = 0;
|
||||||
int amd = 1;
|
int amd = 1;
|
||||||
@ -1177,6 +1183,7 @@ char my_uri[] = "http://" SERVER "/Update.api?Action=Download&Architecture="
|
|||||||
|
|
||||||
char console_error[255] = "";
|
char console_error[255] = "";
|
||||||
|
|
||||||
|
#ifdef PYCONSOLE
|
||||||
/*
|
/*
|
||||||
* PYTHON FUNCTIONS
|
* PYTHON FUNCTIONS
|
||||||
* instructions on making a function callable from python:
|
* instructions on making a function callable from python:
|
||||||
@ -1190,6 +1197,7 @@ char console_error[255] = "";
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//functions callable from python:
|
//functions callable from python:
|
||||||
|
|
||||||
static PyObject*
|
static PyObject*
|
||||||
emb_create(PyObject *self, PyObject *args, PyObject *keywds)
|
emb_create(PyObject *self, PyObject *args, PyObject *keywds)
|
||||||
{
|
{
|
||||||
@ -1752,6 +1760,126 @@ emb_get_prop(PyObject *self, PyObject *args)
|
|||||||
return Py_BuildValue("i",-1);
|
return Py_BuildValue("i",-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emb_draw_pixel(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int x,y,r,g,b,a;
|
||||||
|
a=255;
|
||||||
|
if(!PyArg_ParseTuple(args, "IIIII|I:draw_pixel",&x,&y,&r,&g,&b,&a))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if(vid_buf!=NULL)
|
||||||
|
{
|
||||||
|
drawpixel(vid_buf,x,y,r,g,b,a);
|
||||||
|
return Py_BuildValue("i",1);
|
||||||
|
}
|
||||||
|
return Py_BuildValue("i",-1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//drawtext(pixel *vid, int x, int y, const char *s, int r, int g, int b, int a)
|
||||||
|
emb_draw_text(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int x,y,r,g,b,a;
|
||||||
|
char *txt;
|
||||||
|
a=255;
|
||||||
|
if(!PyArg_ParseTuple(args, "IIsIII|I:draw_text",&x,&y,&txt,&r,&g,&b,&a))
|
||||||
|
return NULL;
|
||||||
|
if(vid_buf!=NULL)
|
||||||
|
{
|
||||||
|
drawtext(vid_buf,x,y,txt,r,g,b,a);
|
||||||
|
return Py_BuildValue("i",1);
|
||||||
|
}
|
||||||
|
return Py_BuildValue("i",-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//drawrect(pixel *vid, int x, int y, int w, int h, int r, int g, int b, int a)
|
||||||
|
emb_draw_rect(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int x,y,w,h,r,g,b,a;
|
||||||
|
a=255;
|
||||||
|
if(!PyArg_ParseTuple(args, "IIIIIII|I:draw_rect",&x,&y,&w,&h,&r,&g,&b,&a))
|
||||||
|
return NULL;
|
||||||
|
if(vid_buf!=NULL)
|
||||||
|
{
|
||||||
|
drawrect(vid_buf,x,y,w,h,r,g,b,a);
|
||||||
|
//fillrect
|
||||||
|
return Py_BuildValue("i",1);
|
||||||
|
}
|
||||||
|
return Py_BuildValue("i",-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
emb_draw_fillrect(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int x,y,w,h,r,g,b,a;
|
||||||
|
a=255;
|
||||||
|
if(!PyArg_ParseTuple(args, "IIIIIII|I:draw_fillrect",&x,&y,&w,&h,&r,&g,&b,&a))
|
||||||
|
return NULL;
|
||||||
|
if(vid_buf!=NULL)
|
||||||
|
{
|
||||||
|
fillrect(vid_buf,x,y,w,h,r,g,b,a);
|
||||||
|
//fillrect
|
||||||
|
return Py_BuildValue("i",1);
|
||||||
|
}
|
||||||
|
return Py_BuildValue("i",-1);
|
||||||
|
}
|
||||||
|
//int textwidth(char *s)
|
||||||
|
emb_get_width(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
char *txt;
|
||||||
|
if(!PyArg_ParseTuple(args, "s:get_width",&txt))
|
||||||
|
return NULL;
|
||||||
|
return Py_BuildValue("i",textwidth(txt));
|
||||||
|
}
|
||||||
|
|
||||||
|
//SDL_GetMouseState(&x, &y)
|
||||||
|
emb_get_mouse(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
int x,y,mask,b1,b2,b3;
|
||||||
|
if(!PyArg_ParseTuple(args, ":get_mouse"))
|
||||||
|
return NULL;
|
||||||
|
mask=SDL_GetMouseState(&x, &y);
|
||||||
|
b1=mask&SDL_BUTTON(1);
|
||||||
|
b2=mask&SDL_BUTTON(2);
|
||||||
|
b3=mask&SDL_BUTTON(3);
|
||||||
|
return Py_BuildValue("(ii(iii))",x,y,b1,b2,b3);
|
||||||
|
}
|
||||||
|
|
||||||
|
//svf_name
|
||||||
|
emb_get_name(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
if(!PyArg_ParseTuple(args, ":get_name"))
|
||||||
|
return NULL;
|
||||||
|
if(svf_login)
|
||||||
|
return Py_BuildValue("s",svf_user);
|
||||||
|
else
|
||||||
|
return Py_BuildValue("s","");
|
||||||
|
}
|
||||||
|
|
||||||
|
emb_shortcuts_disable(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
if(!PyArg_ParseTuple(args, ":shortcuts_disable"))
|
||||||
|
return NULL;
|
||||||
|
//
|
||||||
|
sys_shortcuts=0;
|
||||||
|
return Py_BuildValue("i",1);
|
||||||
|
}
|
||||||
|
|
||||||
|
emb_shortcuts_enable(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
if(!PyArg_ParseTuple(args, ":shortcuts_enable"))
|
||||||
|
return NULL;
|
||||||
|
//
|
||||||
|
sys_shortcuts=1;
|
||||||
|
return Py_BuildValue("i",1);
|
||||||
|
}
|
||||||
|
|
||||||
|
emb_get_modifier(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
if(!PyArg_ParseTuple(args, ":get_modifier"))
|
||||||
|
return NULL;
|
||||||
|
return Py_BuildValue("(iiiiii)",sdl_mod&KMOD_LCTRL,sdl_mod&KMOD_RCTRL,sdl_mod&KMOD_LALT,sdl_mod&KMOD_RALT,sdl_mod&KMOD_LSHIFT,sdl_mod&KMOD_RSHIFT);
|
||||||
|
}
|
||||||
|
|
||||||
static PyMethodDef EmbMethods[] = { //WARNING! don't forget to register your function here!
|
static PyMethodDef EmbMethods[] = { //WARNING! don't forget to register your function here!
|
||||||
{"create", emb_create, METH_VARARGS|METH_KEYWORDS, "create a particle."},
|
{"create", emb_create, METH_VARARGS|METH_KEYWORDS, "create a particle."},
|
||||||
{"log", emb_log, METH_VARARGS, "logs an error string to the console."},
|
{"log", emb_log, METH_VARARGS, "logs an error string to the console."},
|
||||||
@ -1769,16 +1897,27 @@ static PyMethodDef EmbMethods[] = { //WARNING! don't forget to register your fun
|
|||||||
{"set_vy", emb_set_vy, METH_VARARGS|METH_KEYWORDS, "sets vy of a specified particle."},
|
{"set_vy", emb_set_vy, METH_VARARGS|METH_KEYWORDS, "sets vy of a specified particle."},
|
||||||
{"pause", emb_pause, METH_VARARGS, "pause the game."},
|
{"pause", emb_pause, METH_VARARGS, "pause the game."},
|
||||||
{"unpause", emb_unpause, METH_VARARGS, "unpause the game."},
|
{"unpause", emb_unpause, METH_VARARGS, "unpause the game."},
|
||||||
{"toggle_pause", emb_toggle_pause, METH_VARARGS, "toggle game pause."},
|
{"pause_toggle", emb_toggle_pause, METH_VARARGS, "toggle game pause."},
|
||||||
{"open_console", emb_open_console, METH_VARARGS, "open the game console."},
|
{"console_open", emb_open_console, METH_VARARGS, "open the game console."},
|
||||||
{"close_console", emb_close_console, METH_VARARGS, "close the game console."},
|
{"console_close", emb_close_console, METH_VARARGS, "close the game console."},
|
||||||
{"toggle_console", emb_toggle_console, METH_VARARGS, "toggle the game console."},
|
{"console_toggle", emb_toggle_console, METH_VARARGS, "toggle the game console."},
|
||||||
{"console_more", emb_console_more, METH_VARARGS, "turns the more indicator on."},
|
{"console_more", emb_console_more, METH_VARARGS, "turns the more indicator on."},
|
||||||
{"console_less", emb_console_less, METH_VARARGS, "turns the more indicator off."},
|
{"console_less", emb_console_less, METH_VARARGS, "turns the more indicator off."},
|
||||||
{"get_pmap", emb_get_pmap, METH_VARARGS, "get the pmap value."},
|
{"get_pmap", emb_get_pmap, METH_VARARGS, "get the pmap value."},
|
||||||
{"get_prop", emb_get_prop, METH_VARARGS, "get some properties."},
|
{"get_prop", emb_get_prop, METH_VARARGS, "get some properties."},
|
||||||
|
{"draw_pixel", emb_draw_pixel, METH_VARARGS, "draw a pixel."},
|
||||||
|
{"draw_text", emb_draw_text, METH_VARARGS, "draw some text."},
|
||||||
|
{"draw_rect", emb_draw_rect, METH_VARARGS, "draw a rect."},
|
||||||
|
{"draw_fillrect", emb_draw_fillrect, METH_VARARGS, "draw a rect."},
|
||||||
|
{"get_width", emb_get_width, METH_VARARGS, "get string width."},
|
||||||
|
{"get_mouse", emb_get_mouse, METH_VARARGS, "get mouse status."},
|
||||||
|
{"get_name", emb_get_name, METH_VARARGS, "get name of logged in user"},
|
||||||
|
{"shortcuts_disable", emb_shortcuts_disable, METH_VARARGS, "disable keyboard shortcuts"},
|
||||||
|
{"shortcuts_enable", emb_shortcuts_enable, METH_VARARGS, "enable keyboard shortcuts"},
|
||||||
|
{"get_modifier", emb_get_modifier, METH_VARARGS, "get pressed modifier keys"},
|
||||||
{NULL, NULL, 0, NULL}
|
{NULL, NULL, 0, NULL}
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@ -1794,9 +1933,9 @@ int main(int argc, char *argv[])
|
|||||||
int FPS = 0;
|
int FPS = 0;
|
||||||
int pastFPS = 0;
|
int pastFPS = 0;
|
||||||
int past = 0;
|
int past = 0;
|
||||||
pixel *vid_buf=calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE);
|
|
||||||
void *http_ver_check;
|
void *http_ver_check;
|
||||||
void *http_session_check = NULL;
|
void *http_session_check = NULL;
|
||||||
|
vid_buf=calloc((XRES+BARSIZE)*(YRES+MENUSIZE), PIXELSIZE);
|
||||||
char *ver_data=NULL, *check_data=NULL, *tmp;
|
char *ver_data=NULL, *check_data=NULL, *tmp;
|
||||||
//char console_error[255] = "";
|
//char console_error[255] = "";
|
||||||
int i, j, bq, fire_fc=0, do_check=0, do_s_check=0, old_version=0, http_ret=0,http_s_ret=0, major, minor, old_ver_len;
|
int i, j, bq, fire_fc=0, do_check=0, do_s_check=0, old_version=0, http_ret=0,http_s_ret=0, major, minor, old_ver_len;
|
||||||
@ -1813,7 +1952,9 @@ int main(int argc, char *argv[])
|
|||||||
SDL_AudioSpec fmt;
|
SDL_AudioSpec fmt;
|
||||||
int username_flash = 0, username_flash_t = 1;
|
int username_flash = 0, username_flash_t = 1;
|
||||||
GSPEED = 1;
|
GSPEED = 1;
|
||||||
PyObject *pname,*pmodule,*pfunc,*pvalue,*pargs;
|
#ifdef PYCONSOLE
|
||||||
|
PyObject *pname,*pmodule,*pfunc,*pvalue,*pargs,*pstep,*pkey;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Set 16-bit stereo audio at 22Khz */
|
/* Set 16-bit stereo audio at 22Khz */
|
||||||
fmt.freq = 22050;
|
fmt.freq = 22050;
|
||||||
@ -1823,6 +1964,7 @@ int main(int argc, char *argv[])
|
|||||||
fmt.callback = mixaudio;
|
fmt.callback = mixaudio;
|
||||||
fmt.userdata = NULL;
|
fmt.userdata = NULL;
|
||||||
|
|
||||||
|
#ifdef PYCONSOLE
|
||||||
//initialise python console
|
//initialise python console
|
||||||
Py_Initialize();
|
Py_Initialize();
|
||||||
Py_InitModule("tpt", EmbMethods);
|
Py_InitModule("tpt", EmbMethods);
|
||||||
@ -1840,28 +1982,45 @@ int main(int argc, char *argv[])
|
|||||||
pfunc=PyObject_GetAttrString(pmodule,"handle");//get the handler function
|
pfunc=PyObject_GetAttrString(pmodule,"handle");//get the handler function
|
||||||
if(pfunc && PyCallable_Check(pfunc))//check if it's really a function
|
if(pfunc && PyCallable_Check(pfunc))//check if it's really a function
|
||||||
{
|
{
|
||||||
//it is
|
|
||||||
printf("python console ready to go.\n");
|
printf("python console ready to go.\n");
|
||||||
/*pargs=Py_BuildValue("(s)","test");
|
|
||||||
pvalue = PyObject_CallObject(pfunc, pargs);
|
|
||||||
Py_DECREF(pargs);
|
|
||||||
pargs=NULL;
|
|
||||||
//Py_DECREF(pvalue);
|
|
||||||
//puts("a");
|
|
||||||
pvalue=NULL;*/
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//oops! mangled console.py?
|
PyErr_Print();
|
||||||
printf("unable to find handle function, mangled console.py?\n");
|
printf("unable to find handle function, mangled console.py?\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pstep=PyObject_GetAttrString(pmodule,"step");//get the handler function
|
||||||
|
if(pstep && PyCallable_Check(pstep))//check if it's really a function
|
||||||
|
{
|
||||||
|
printf("step function found.\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("unable to find console module, missing file?\n");
|
printf("unable to find step function. ignoring.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
pkey=PyObject_GetAttrString(pmodule,"keypress");//get the handler function
|
||||||
|
if(pstep && PyCallable_Check(pkey))//check if it's really a function
|
||||||
|
{
|
||||||
|
printf("key function found.\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("unable to find key function. ignoring.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//sys.stderr
|
||||||
|
PyErr_Print();
|
||||||
|
printf("unable to find console module, missing file or mangled console.py?\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
printf("python console disabled at compile time.");
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef MT
|
#ifdef MT
|
||||||
numCores = core_count();
|
numCores = core_count();
|
||||||
@ -2127,6 +2286,8 @@ int main(int argc, char *argv[])
|
|||||||
do_s_check = (do_s_check+1) & 15;
|
do_s_check = (do_s_check+1) & 15;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(sys_shortcuts==1)
|
||||||
|
{
|
||||||
if (sdl_key=='q' || sdl_key==SDLK_ESCAPE)
|
if (sdl_key=='q' || sdl_key==SDLK_ESCAPE)
|
||||||
{
|
{
|
||||||
if (confirm_ui(vid_buf, "You are about to quit", "Are you sure you want to quit?", "Quit"))
|
if (confirm_ui(vid_buf, "You are about to quit", "Are you sure you want to quit?", "Quit"))
|
||||||
@ -2483,6 +2644,21 @@ int main(int argc, char *argv[])
|
|||||||
emap[cby][cbx] = cb_emap[cby][cbx];
|
emap[cby][cbx] = cb_emap[cby][cbx];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
#ifdef PYCONSOLE
|
||||||
|
if(pkey!=NULL && sdl_key!=NULL)
|
||||||
|
{
|
||||||
|
pargs=Py_BuildValue("(c)",sdl_key);
|
||||||
|
pvalue = PyObject_CallObject(pkey, pargs);
|
||||||
|
Py_DECREF(pargs);
|
||||||
|
pargs=NULL;
|
||||||
|
if(pvalue==NULL)
|
||||||
|
strcpy(console_error,"failed to execute key code.");
|
||||||
|
//Py_DECREF(pvalue);
|
||||||
|
//puts("a");
|
||||||
|
pvalue=NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
#ifdef INTERNAL
|
#ifdef INTERNAL
|
||||||
int counterthing;
|
int counterthing;
|
||||||
if (sdl_key=='v'&&!(sdl_mod & (KMOD_LCTRL|KMOD_RCTRL)))
|
if (sdl_key=='v'&&!(sdl_mod & (KMOD_LCTRL|KMOD_RCTRL)))
|
||||||
@ -2766,7 +2942,7 @@ int main(int argc, char *argv[])
|
|||||||
if (!sdl_zoom_trig && zoom_en==1)
|
if (!sdl_zoom_trig && zoom_en==1)
|
||||||
zoom_en = 0;
|
zoom_en = 0;
|
||||||
|
|
||||||
if (sdl_key=='z' && zoom_en==2)
|
if (sdl_key=='z' && zoom_en==2 && sys_shortcuts==1)
|
||||||
zoom_en = 1;
|
zoom_en = 1;
|
||||||
|
|
||||||
if (load_mode)
|
if (load_mode)
|
||||||
@ -3381,6 +3557,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if(console_mode)
|
if(console_mode)
|
||||||
{
|
{
|
||||||
|
#ifdef PYCONSOLE
|
||||||
char *console;
|
char *console;
|
||||||
//char error[255] = "error!";
|
//char error[255] = "error!";
|
||||||
sys_pause = 1;
|
sys_pause = 1;
|
||||||
@ -3395,8 +3572,26 @@ int main(int argc, char *argv[])
|
|||||||
free(console);
|
free(console);
|
||||||
if(!console_mode)
|
if(!console_mode)
|
||||||
hud_enable = 1;
|
hud_enable = 1;
|
||||||
|
#else
|
||||||
|
console_mode=0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//execute python step hook
|
||||||
|
#ifdef PYCONSOLE
|
||||||
|
if(pstep!=NULL)
|
||||||
|
{
|
||||||
|
pargs=Py_BuildValue("()");
|
||||||
|
pvalue = PyObject_CallObject(pstep, pargs);
|
||||||
|
Py_DECREF(pargs);
|
||||||
|
pargs=NULL;
|
||||||
|
if(pvalue==NULL)
|
||||||
|
strcpy(console_error,"failed to execute step code.");
|
||||||
|
//Py_DECREF(pvalue);
|
||||||
|
//puts("a");
|
||||||
|
pvalue=NULL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
sdl_blit(0, 0, XRES+BARSIZE, YRES+MENUSIZE, vid_buf, XRES+BARSIZE);
|
sdl_blit(0, 0, XRES+BARSIZE, YRES+MENUSIZE, vid_buf, XRES+BARSIZE);
|
||||||
|
|
||||||
//Setting an element for the stick man
|
//Setting an element for the stick man
|
||||||
@ -3414,19 +3609,13 @@ int main(int argc, char *argv[])
|
|||||||
else
|
else
|
||||||
player2[2] = PT_DUST;
|
player2[2] = PT_DUST;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
SDL_CloseAudio();
|
SDL_CloseAudio();
|
||||||
http_done();
|
http_done();
|
||||||
//make sure no threads are blocking us
|
|
||||||
//fork_unblock
|
|
||||||
pargs=Py_BuildValue("(s)","fork_unblock()");//this deamonises all threads.
|
|
||||||
pvalue = PyObject_CallObject(pfunc, pargs);
|
|
||||||
Py_DECREF(pargs);
|
|
||||||
pargs=NULL;
|
|
||||||
Py_Finalize();//cleanup any python stuff.
|
Py_Finalize();//cleanup any python stuff.
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#ifdef PYCONSOLE
|
||||||
int process_command(pixel *vid_buf,char *console,char *console_error,PyObject *pfunc) {
|
int process_command(pixel *vid_buf,char *console,char *console_error,PyObject *pfunc) {
|
||||||
int y,x,nx,ny,i,j,k,m;
|
int y,x,nx,ny,i,j,k,m;
|
||||||
int do_next = 1;
|
int do_next = 1;
|
||||||
@ -3462,4 +3651,4 @@ int process_command(pixel *vid_buf,char *console,char *console_error,PyObject *p
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import tpt
|
import tpt
|
||||||
from tpt import *
|
from tpt import *
|
||||||
from utils import *
|
|
||||||
import sys
|
import sys
|
||||||
import code
|
import code
|
||||||
import ctypes
|
import ctypes
|
||||||
import traceback
|
import traceback
|
||||||
|
DEBUG=False
|
||||||
|
|
||||||
#print "console module loaded."
|
#print "console module loaded."
|
||||||
#redirect stdout like this:
|
#redirect stdout like this:
|
||||||
class logger:
|
class logger:
|
||||||
@ -12,8 +13,10 @@ class logger:
|
|||||||
txt=txt.strip().split("\n")[-1]
|
txt=txt.strip().split("\n")[-1]
|
||||||
repr(txt)
|
repr(txt)
|
||||||
tpt.log(txt)
|
tpt.log(txt)
|
||||||
sys.stdout=logger()
|
if(DEBUG==False):
|
||||||
sys.stderr=logger()
|
sys.stdout=logger()
|
||||||
|
sys.stderr=logger()
|
||||||
|
|
||||||
|
|
||||||
element={"none":0,"dust":1,"watr":2,"oil":3,"fire":4,"stne":5,"lava":6,"gunp":7,
|
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,
|
"nitr":8,"clne":9,"gas":10,"plex":11,"goo":12,"icei":13,"metl":14,"sprk":15,
|
||||||
@ -43,6 +46,7 @@ element={"none":0,"dust":1,"watr":2,"oil":3,"fire":4,"stne":5,"lava":6,"gunp":7,
|
|||||||
def fork_unblock():
|
def fork_unblock():
|
||||||
pass#i need to implement this some day.
|
pass#i need to implement this some day.
|
||||||
def error(ex):
|
def error(ex):
|
||||||
|
traceback.print_exc()
|
||||||
err=traceback.format_exc()
|
err=traceback.format_exc()
|
||||||
sys.stdout.write(err)
|
sys.stdout.write(err)
|
||||||
|
|
||||||
@ -75,3 +79,38 @@ def _handle(txt):
|
|||||||
exec txt in handle.glob
|
exec txt in handle.glob
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
error(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)
|
||||||
|
Loading…
Reference in New Issue
Block a user