-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodel.py
More file actions
64 lines (54 loc) · 1.48 KB
/
model.py
File metadata and controls
64 lines (54 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import queue
from map import Map
class DataModel(object):
def __init__(self):
self.send = queue.Queue()
self.hall = Map()
self.users = {}
self.me = None
self.i = 0
self.log_height = 100
# directly accessed lists
self.log = []
self.user_list = []
self.map = ''
self.room = ''
self.pinned = ''
# boolean flags
self.moved = False
self.help = False
self.quit = False
def refresh(self):
user_room = []
user_other = []
if not self.help:
self.map = self.hall.draw(self.users)
# list users
if self.me:
r = self.me.room
self.room = self.hall.rooms[r] + ": " + self.hall.pinned[r]
for user in self.users.values():
if user == self.me:
pass
elif user.room == self.me.room:
user_room.append((user.name, user.index))
else:
user_other.append((user.name, user.index))
self.user_list = user_room + user_other
def get_height(self):
return len(self.hall.content.split('\n'))
def add_message(self, message):
if len(self.log) > self.log_height - 2:
self.log = self.log[1:]
self.log.append((message, self.i))
self.i += 1
def send_message(self, message):
self.add_message("[%s] " % self.me.name + message)
self.send.put("C%d&[%s] %s\n$" % (self.me.room, self.me.name, message))
def add_move(self, direction):
self.help = False
if self.me and self.hall.move(self.me, direction):
if self.me.changed:
self.add_message('<Moved to %s>' % self.hall.rooms[self.me.room])
self.me.changed = False
self.moved = True