// Searches for new syncgroups being advertised, sends found syncgroups to sgChan func ScanForSG(ctx *context.T, quit chan bool, u *uistate.UIState) { mdns, err := mdns.New("") if err != nil { ctx.Fatalf("Plugin failed: %v", err) } ds := ldiscovery.NewWithPlugins([]ldiscovery.Plugin{mdns}) fmt.Printf("Start scanning...\n") ch, err := ds.Scan(ctx, fmt.Sprintf("v.InterfaceName = \"%s\"", util.CroupierInterface)) if err != nil { ctx.Fatalf("Scan failed: %v", err) } instances := make(map[string]string) loop: for { select { case update := <-ch: GetSG(instances, update, u) view.LoadDiscoveryView(u) case <-signals.ShutdownOnSignals(ctx): break loop case <-quit: break loop } } }
func onPaint(glctx gl.Context, sz size.Event, u *uistate.UIState) { if u.CurView == uistate.None { u.ScanChan = make(chan bool) go sync.ScanForSG(u.Ctx, u.ScanChan, u) view.LoadDiscoveryView(u) } glctx.ClearColor(1, 1, 1, 1) glctx.Clear(gl.COLOR_BUFFER_BIT) now := clock.Time(time.Since(u.StartTime) * 60 / time.Second) u.Eng.Render(u.Scene, now, sz) if u.Debug { fps.Draw(sz) } }
func handleSettingsUpdate(key string, value []byte, u *uistate.UIState) { var valueMap map[string]interface{} err := json.Unmarshal(value, &valueMap) if err != nil { fmt.Println("Unmarshal error:", err) } userID, _ := strconv.Atoi(strings.Split(key, "/")[1]) u.UserData[userID] = valueMap for _, v := range u.PlayerData { if v == userID { view.ReloadView(u) } } if u.CurView == uistate.Discovery { view.LoadDiscoveryView(u) } }
func endClickArrange(t touch.Event, u *uistate.UIState) { pressed := unpressButtons(u) for _, b := range pressed { if b == u.Buttons["exit"] { if u.SGChan != nil { u.SGChan <- true u.SGChan = nil } u.IsOwner = false u.DiscGroups = make(map[string]*uistate.DiscStruct) u.ScanChan = make(chan bool) go sync.ScanForSG(u.Ctx, u.ScanChan, u) view.LoadDiscoveryView(u) } else if b == u.Buttons["start"] { if u.CurTable.AllReadyForNewRound() { successStart := sync.LogGameStart(u) for !successStart { successStart = sync.LogGameStart(u) } newHands := u.CurTable.Deal() successDeal := sync.LogDeal(u, u.CurPlayerIndex, newHands) for !successDeal { successDeal = sync.LogDeal(u, u.CurPlayerIndex, newHands) } } } else { for key, button := range u.Buttons { if b == button && (u.CurPlayerIndex < 0 || u.Debug) { if key == "joinTable" { u.CurPlayerIndex = 4 sync.LogPlayerNum(u) } else { playerNum := strings.Split(key, "-")[1] u.CurPlayerIndex, _ = strconv.Atoi(playerNum) sync.LogPlayerNum(u) } } } } } }