private void initResolver(bool autoStart = false) { if (core != null) { core.StateChanged -= onCoreStateChanged; core.Dispose(); core = null; } joinName = "Join"; hostToken = string.Empty; joinToken = string.Empty; myBoard = chessboard; switch (GameMode) { case GameMode.PvE: var type = getSelectedLevel(0); core = GameResolver.BuildEVP(myBoard, type); joinName = getAIName(type); break; case GameMode.PvP: core = GameResolver.BuildPVP(myBoard); break; case GameMode.PvPOnline: if (isHost) { core = GameResolver.BuildOnlineHost(myBoard, ip, port, inport); } else { core = GameResolver.BuildOnline(myBoard, ip, port, inport); } break; } if (core != null) { hostToken = core.HostToken; joinToken = core.JoinToken; updateNames(); core.StateChanged += onCoreStateChanged; if (GameMode == GameMode.PvPOnline) { readyBtn.Visibility = Visibility.Visible; } else { readyBtn.Visibility = Visibility.Collapsed; core.Ready(); } if (autoStart) { core.SetFirst(FirstIndex == 0 ? hostToken : joinToken); core.Start(); } else { showFirstOption(); } } }