Fix for mode-reset lag.

Moved mode resets to a separate method so it can be called
separately. This allows it to be performed before disk I/O at the
end of a game.
This commit is contained in:
Yizhe Shen 2014-02-21 19:26:34 -05:00
parent 879ea90ab1
commit aaba54baa2

View File

@ -160,6 +160,14 @@ def reset_settings():
setattr(var, attr, var.ORIGINAL_SETTINGS[attr]) setattr(var, attr, var.ORIGINAL_SETTINGS[attr])
dict.clear(var.ORIGINAL_SETTINGS) dict.clear(var.ORIGINAL_SETTINGS)
def reset_modes(cli):
cli.mode(chan, "-m")
cmodes = []
for plr in var.list_players():
cmodes.append(("-v", plr))
for deadguy in var.DEAD:
cmodes.append(("-q", deadguy+"!*@*"))
mass_mode(cli, cmodes)
def reset(cli): def reset(cli):
chan = botconfig.CHANNEL chan = botconfig.CHANNEL
@ -171,13 +179,6 @@ def reset(cli):
var.GAME_ID = 0 var.GAME_ID = 0
cli.mode(chan, "-m")
cmodes = []
for plr in var.list_players():
cmodes.append(("-v", plr))
for deadguy in var.DEAD:
cmodes.append(("-q", deadguy+"!*@*"))
mass_mode(cli, cmodes)
var.DEAD = [] var.DEAD = []
var.ROLES = {"person" : []} var.ROLES = {"person" : []}
@ -207,6 +208,7 @@ def forced_exit(cli, nick, *rest): # Admin Only
if var.PHASE in ("day", "night"): if var.PHASE in ("day", "night"):
stop_game(cli) stop_game(cli)
else: else:
reset_modes(cli)
reset(cli) reset(cli)
cli.quit("Forced quit from "+nick) cli.quit("Forced quit from "+nick)
@ -221,6 +223,7 @@ def restart_program(cli, nick, *rest):
if var.PHASE in ("day", "night"): if var.PHASE in ("day", "night"):
stop_game(cli) stop_game(cli)
else: else:
reset_modes(cli)
reset(cli) reset(cli)
cli.quit("Forced restart from "+nick) cli.quit("Forced restart from "+nick)
@ -807,6 +810,8 @@ def stop_game(cli, winner = ""):
var.plural(role))) var.plural(role)))
cli.msg(chan, " ".join(roles_msg)) cli.msg(chan, " ".join(roles_msg))
reset_modes(cli)
plrl = [] plrl = []
for role,ppl in var.ORIGINAL_ROLES.items(): for role,ppl in var.ORIGINAL_ROLES.items():
for x in ppl: for x in ppl:
@ -854,7 +859,7 @@ def stop_game(cli, winner = ""):
size = len(var.list_players()) + len(var.DEAD) size = len(var.list_players()) + len(var.DEAD)
if winner != "": # Only update if not an abnormal game stop if winner != "": # Only update if not an abnormal game stop
var.update_game_stats(size, winner) var.update_game_stats(size, winner)
reset(cli) reset(cli)
# This must be after reset(cli) # This must be after reset(cli)
@ -875,6 +880,7 @@ def chk_win(cli, end_game = True):
if lpl == 0: if lpl == 0:
#cli.msg(chan, "No more players remaining. Game ended.") #cli.msg(chan, "No more players remaining. Game ended.")
reset_modes(cli)
reset(cli) reset(cli)
return True return True
@ -2647,6 +2653,7 @@ def reset_game(cli, nick, chan, rest):
if var.PHASE != "join": if var.PHASE != "join":
stop_game(cli) stop_game(cli)
else: else:
reset_modes(cli)
reset(cli) reset(cli)