new game fix

This commit is contained in:
Sander Land committed 2020-12-06 14:20:23 +01:00
1 parent 86fc714a94
commit a3815cb47a
21 files changed
+63 -30

No files matched your search

+26 -7
View File
@@ -35,7 +35,6 @@ from katrain.core.lang import i18n, rank_label
from katrain.core.utils import PATHS, find_package_resource
from katrain.gui.kivyutils import BackgroundMixin, I18NSpinner
from katrain.gui.style import DEFAULT_FONT, EVAL_COLORS
from katrain.gui.widgets import RankGraph
from katrain.gui.widgets.progress_loader import ProgressLoader
@@ -249,14 +248,35 @@ class NewGamePopup(QuickConfigGui):
self.player_setup.update_player_info(bw, info)
self.rules_spinner.value_refs = [name for abbr, name in katrain.engine.RULESETS_ABBR]
Clock.schedule_once(self.update_from_current_game, 0.1)
def update_playerinfo(self):
def normalized_rules(self):
rules = self.katrain.game.root.get_property("RU", "japanese").strip().lower()
for abbr, name in self.katrain.engine.RULESETS_ABBR:
if abbr==rules or abbr==rules:
return name
def update_playerinfo(self,*args):
for bw, player_setup in self.player_setup.players.items():
name = self.player_name[bw].text
if name:
self.katrain.game.root.set_property("P" + bw, name)
self.katrain.update_player(bw, **player_setup.player_type_dump)
def update_from_current_game(self):
for bw in "BW":
name = self.katrain.game.root.get_property("P" + bw, None)
if name:
self.player_name[bw].text = name
komi = self.katrain.game.root.komi
rules = self.normalized_rules()
if komi is not None:
self.km.text = str(komi)
if rules is not None:
self.rules_spinner.select_key(rules.strip())
def update_config(self, save_to_file=True):
super().update_config(save_to_file=save_to_file)
self.katrain.log(f"New game settings: {self.katrain.config('game')}", OUTPUT_DEBUG)
@@ -270,14 +290,13 @@ class NewGamePopup(QuickConfigGui):
props = self.collect_properties(self)
root = self.katrain.game.root
changed = False
for k, v in [("RU", props["game/rules"]), ("KM", props["game/komi"])]:
current = root.get_property(k)
if current != v:
for k, currentval, newval in [("RU",self.normalized_rules(), props["game/rules"]), ("KM", root.komi, props["game/komi"])]:
if currentval !=newval:
changed = True
self.katrain.log(
f"Property {k} changed from {current} to {v}, triggering re-analysis of entire game.", OUTPUT_INFO
f"Property {k} changed from {currentval} to {newval}, triggering re-analysis of entire game.", OUTPUT_INFO
)
self.katrain.game.root.set_property(k, v)
self.katrain.game.root.set_property(k, newval)
self.update_playerinfo()
if changed:
self.katrain.engine.on_new_game()
+1 -1
View File
@@ -227,7 +227,7 @@ class MoveTree(ScrollView, BackgroundMixin):
super().__init__(**kwargs)
self.insert_node = None
self.redraw_tree_trigger = Clock.create_trigger(
lambda _dt: self.move_tree_canvas.draw_move_tree(self.current_node, self.insert_node)
lambda _dt: self.move_tree_canvas.draw_move_tree(self.current_node, self.insert_node), 0.1
)
self.bind(current_node=self.redraw_tree_trigger, size=self.redraw_tree_trigger)