home · contact · privacy
Client: Restructure into modules below client/.
[plomrogue] / client / windows.py
1 import math
2 import curses
3
4 from client.config.world_data import world_data
5
6
7 def win_map(self):
8     win_size = self.size
9     offset = [0, 0]
10     for i in range(2):
11         if world_data["map_center"][i] * (i + 1) > win_size[i] / 2 and \
12                 win_size[i] < world_data["map_size"] * (i + 1):
13             if world_data["map_center"][i] * (i + 1) \
14                 < world_data["map_size"] * (i + 1) - win_size[i] / 2:
15                 offset[i] = world_data["map_center"][i] * (i + 1) \
16                     - int(win_size[i] / 2)
17                 if i == 1:
18                     offset[1] = offset[1] + world_data["map_center"][0] % 2
19             else:
20                 offset[i] = world_data["map_size"] * (i + 1) - win_size[i] + i
21     winmap_size = [world_data["map_size"], world_data["map_size"] * 2 + 1]
22     winmap = []
23     curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)
24     curses.init_pair(2, curses.COLOR_BLUE, curses.COLOR_BLACK)
25     for y in range(world_data["map_size"]):
26         for x in range(world_data["map_size"]):
27             char = world_data["fov_map"][y * world_data["map_size"] + x]
28             if world_data["look_mode"] and y == world_data["map_center"][0] \
29                     and x == world_data["map_center"][1]:
30                 if char == " ":
31                     char = \
32                         world_data["mem_map"][y * world_data["map_size"] + x]
33                 winmap += [(char, curses.A_REVERSE), (" ", curses.A_REVERSE)]
34                 continue
35             if char == " ":
36                 char = world_data["mem_map"][y * world_data["map_size"] + x]
37                 attribute = curses.color_pair(1) if char == " " \
38                     else curses.color_pair(2)
39                 winmap += [(char, attribute), (" ", attribute)]
40             else:
41                 winmap += char + " "
42         if y % 2 == 0:
43             winmap += "  "
44     return offset, winmap_size, winmap
45
46
47 def win_inventory(self):
48     win_size = self.size
49     winmap = []
50     winmap_size = [0, win_size[1]]
51     for line in world_data["inventory"]:
52         winmap_size[1] = winmap_size[1] if len(line) <= winmap_size[1] \
53             else len(line)
54     count = 0
55     for line in world_data["inventory"]:
56         padding_size = winmap_size[1] - len(line)
57         line += (" " * padding_size)
58         if count == world_data["inventory_selection"]:
59             line_new = []
60             for x in range(len(line)):
61                 line_new += [(line[x], curses.A_REVERSE)]
62             line = line_new
63         winmap += line
64         winmap_size[0] = winmap_size[0] + 1
65         count += 1
66     offset = [0, 0]
67     if world_data["inventory_selection"] > win_size[0]/2:
68         if world_data["inventory_selection"] < len(world_data["inventory"]) \
69             - win_size[0]/2:
70             offset[0] = world_data["inventory_selection"] - int(win_size[0]/2)
71         else:
72             offset[0] = len(world_data["inventory"]) - win_size[0]
73     return offset, winmap_size, winmap
74
75
76 def win_look(self):
77     winmap = ""
78     winmap_size = [0, 0]
79     for line in world_data["look"]:
80         winmap_size[1] = winmap_size[1] if len(line) <= winmap_size[1] \
81             else len(line)
82     for line in world_data["look"]:
83         padding_size = winmap_size[1] - len(line)
84         winmap += line + (" " * padding_size)
85         winmap_size[0] = winmap_size[0] + 1
86     offset = [world_data["look_scroll"], 0]
87     return offset, winmap_size, winmap
88
89
90 def win_info(self):
91     winmap = "T: " + str(world_data["turn"]) \
92         + " H: " + str(world_data["lifepoints"]) \
93         + " S: " + str(world_data["satiation"])
94     winmap_size = [1, len(winmap)]
95     offset = [0, 0]
96     return offset, winmap_size, winmap
97
98
99 def win_log(self):
100     win_size = self.size
101     offset = [0, 0]
102     winmap = ""
103     number_of_lines = 0
104     for line in world_data["log"]:
105         number_of_lines += math.ceil(len(line) / win_size[1])
106         padding_size = win_size[1] - (len(line) % win_size[1])
107         winmap += line + (padding_size * " ")
108     if number_of_lines < win_size[0]:
109         winmap = (" " * win_size[1] * (win_size[0] - number_of_lines)) + winmap
110         number_of_lines = win_size[0]
111     elif number_of_lines > win_size[0]:
112         offset[0] = number_of_lines - win_size[0]
113     winmap_size = [number_of_lines, win_size[1]]
114     return offset, winmap_size, winmap