sawine@6
|
1 |
from PySFML import sf
|
sawine@6
|
2 |
import optparse
|
sawine@6
|
3 |
import com
|
sawine@6
|
4 |
import pickle
|
sawine@6
|
5 |
import hashlib
|
sawine@6
|
6 |
import SocketServer
|
sawine@6
|
7 |
|
sawine@6
|
8 |
class Handler(SocketServer.BaseRequestHandler):
|
sawine@6
|
9 |
"""
|
sawine@6
|
10 |
"""
|
sawine@6
|
11 |
def handle(self):
|
sawine@6
|
12 |
data = self.request[0]
|
sawine@6
|
13 |
socket = self.request[1]
|
sawine@6
|
14 |
#print "%s wrote:" % self.client_address[0]
|
sawine@6
|
15 |
#print data
|
sawine@6
|
16 |
key_found = False
|
sawine@6
|
17 |
cell = value = None
|
sawine@6
|
18 |
for key, value in com.commands.iteritems():
|
sawine@6
|
19 |
if key in data:
|
sawine@6
|
20 |
key_found = True
|
sawine@6
|
21 |
args = data.partition(key)[2].split()
|
sawine@6
|
22 |
if args:
|
sawine@6
|
23 |
cell, value = value[0](socket, self.client_address, self.worker, args)
|
sawine@6
|
24 |
|
sawine@6
|
25 |
self.update(cell, value)
|
sawine@6
|
26 |
|
sawine@6
|
27 |
class Client(SocketServer.UDPServer):
|
sawine@6
|
28 |
def __init__(self, host, port, handler, options, server):
|
sawine@6
|
29 |
SocketServer.UDPServer.__init__(self, (host, port), handler)
|
sawine@6
|
30 |
self.window = sf.RenderWindow(sf.VideoMode(800, 800), "xaoc")
|
sawine@6
|
31 |
self.host = host
|
sawine@6
|
32 |
self.port = port
|
sawine@6
|
33 |
self.handler = handler
|
sawine@6
|
34 |
self.handler.update = self.update
|
sawine@6
|
35 |
self.options = options
|
sawine@6
|
36 |
self.server = server
|
sawine@6
|
37 |
self.cells = {}
|
sawine@6
|
38 |
def update(self, cell, value):
|
sawine@6
|
39 |
event = sf.Event()
|
sawine@6
|
40 |
while self.window.GetEvent(event):
|
sawine@6
|
41 |
if event.Type == sf.Event.Closed:
|
sawine@6
|
42 |
pass
|
sawine@6
|
43 |
self.window.Clear()
|
sawine@6
|
44 |
text = sf.String("x", sf.Font.GetDefaultFont(), 50)
|
sawine@6
|
45 |
for cell in self.cells.iteritems():
|
sawine@6
|
46 |
self.window.Draw(text)
|
sawine@6
|
47 |
self.window.Display()
|
sawine@6
|
48 |
def run(self):
|
sawine@6
|
49 |
self.serve_forever()
|
sawine@6
|
50 |
|
sawine@6
|
51 |
|
sawine@6
|
52 |
|
sawine@6
|
53 |
if __name__ == "__main__":
|
sawine@6
|
54 |
parser = optparse.OptionParser(usage="usage: %prog [options] port server_ip server_port",
|
sawine@6
|
55 |
option_list=option_list)
|
sawine@6
|
56 |
options, args = parser.parse_args()
|
sawine@6
|
57 |
|
sawine@6
|
58 |
if len(args) > 0:
|
sawine@6
|
59 |
host = "localhost"
|
sawine@6
|
60 |
port = int(args[0])
|
sawine@6
|
61 |
server = (int(args[1]), int(args[2]))
|
sawine@6
|
62 |
client = Client(host, port, Handler, options, server)
|
sawine@6
|
63 |
client.run()
|
sawine@6
|
64 |
|