/
main.py
84 lines (72 loc) · 2.21 KB
/
main.py
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
"""
The main loop; if you want to play, this is where you do it.
"""
USE_PROFILER = False
if USE_PROFILER:
import cProfile
import cPickle
import tcod_display as display
import level
import dude
import pc
import config
import coordinates
import symbol
import fileio
import mapgen
import action
import exc
import kb
import log
def main(win = None):
mainMonsterFactory = fileio.getMonsterFactory(
fileio.getFile("monsters.dat"))
floor_defs = fileio.getFloorDefinitions(
mainMonsterFactory,
fileio.getFile("levels.dat"))
try:
save_data = fileio.restore_save("John Stenibeck.sav")
except IOError:
# No save; load from a random dungeon instead.
player = pc.Player("John Stenibeck", (40, 40))
curlev = mapgen.nextLevel(floor_defs, 1, player)
else:
(player, floor) = save_data
curlev = mapgen.nextLevel(floor_defs, floor, player)
display.init()
display.display_main_screen(curlev.getFOVArray(),
curlev.getPlayer().coords,
curlev.messages.getArray(),
curlev.getPlayer().getSidebar().getArray())
while 1:
try:
curlev.next()
except exc.LevelChange:
new_floor = curlev.floor + 1
curlev.player.clearMemory()
fileio.save_game(curlev.player, new_floor)
curlev = mapgen.nextLevel(floor_defs, new_floor, player)
curlev.player.clearMemory()
curlev.messages.append("Welcome to the next floor!")
curlev.player.levelUp()
except exc.SavingLevelChange:
saved_player = curlev.player
new_floor = curlev.floor + 1
saved_player.levelUp()
saved_player.clearMemory()
saved_player.currentLevel = None
fileio.save_game(saved_player, new_floor)
return
except exc.PlayerDeath:
curlev.messages.say("You die.")
kb.pause(curlev.messages)
return
def entry():
main()
def prof():
cProfile.run('entry()', 'profile.pr')
if __name__ == "__main__":
if USE_PROFILER:
prof()
else:
entry()