diff --git a/tools/game/bong/integrator-reader.py b/tools/game/bong/integrator-reader.py new file mode 100644 index 0000000..8d42fb7 --- /dev/null +++ b/tools/game/bong/integrator-reader.py @@ -0,0 +1,88 @@ +import time +import Queue +import tornado.escape +import tornado.ioloop +import tornado.options +import tornado.web +import tornado.websocket +import os.path +import logging +import threading +import socket + +from tornado.options import define, options + +define("port", default=8888, help="run on the given port", type=int) + +pong=None +pos=0.5 + +def sendpos(): + if pong: + pong.write_message("{ \"right\": "+str(pos)+" }") + threading.Timer(.5,sendpos).start() + +sendpos() + +def receivedPacket(packet): + global pos + if isinstance(packet,r0ketrem0te.packets.Button): + if packet.button == 2: + pos+=.01 + if packet.button == 1: + pos-=.01 + if pos <0: + pos=0 + if pos >1: + pos=1 + +def workPacket(data, addr): + print "new packet:", list(data), addr + +def readerThread(): + sock = socket.socket( socket.AF_INET, # Internet + socket.SOCK_DGRAM ) # UDP + sock.bind(("0.0.0.0", 2342)) + + while 1: + data, addr = sock.recvfrom(1024) + workPacket(data, addr) + +reader = threading.Thread(target = readerThread) +reader.daemon = True + +reader.start() + +class Application(tornado.web.Application): + def __init__(self): + handlers = [ + (r"/data", DataSocketHandler), + ] + settings = dict( + cookie_secret="43oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=", + template_path=os.path.join(os.path.dirname(__file__), "templates"), + static_path=os.path.join(os.path.dirname(__file__), "static"), + xsrf_cookies=True, + autoescape=None, + ) + tornado.web.Application.__init__(self, handlers, **settings) + +class DataSocketHandler(tornado.websocket.WebSocketHandler): + waiters = set() + def open(self): + global pong + print "WebSocket: Open" + DataSocketHandler.waiters.add(self) + pong=self + + def on_close(self): + print "WebSocket: Close" + DataSocketHandler.waiters.remove(self) + + def on_message(self, message): + print "Got message: ",message + +tornado.options.parse_command_line() +app = Application() +app.listen(options.port,'127.0.0.1') +tornado.ioloop.IOLoop.instance().start()