Hard reset implemented
Change-Id: I741670b861bbaef765d15c458998a45e0688b1c7
diff --git a/go/src/hearts/assets/RejoinPressed.png b/go/src/hearts/assets/RejoinPressed.png
new file mode 100644
index 0000000..98dcfbd
--- /dev/null
+++ b/go/src/hearts/assets/RejoinPressed.png
Binary files differ
diff --git a/go/src/hearts/assets/RejoinUnpressed.png b/go/src/hearts/assets/RejoinUnpressed.png
new file mode 100644
index 0000000..54fc684
--- /dev/null
+++ b/go/src/hearts/assets/RejoinUnpressed.png
Binary files differ
diff --git a/go/src/hearts/img/texture/texture.go b/go/src/hearts/img/texture/texture.go
index 9e3fe92..a8281e4 100644
--- a/go/src/hearts/img/texture/texture.go
+++ b/go/src/hearts/img/texture/texture.go
@@ -278,7 +278,7 @@
"PassPressed.png", "PassUnpressed.png", "RightArrowBlue.png", "LeftArrowBlue.png", "AcrossArrowBlue.png", "RightArrowGray.png",
"LeftArrowGray.png", "AcrossArrowGray.png", "TakeTrickTableUnpressed.png", "TakeTrickTablePressed.png", "TakeTrickHandPressed.png",
"TakeTrickHandUnpressed.png", "android.png", "cat.png", "man.png", "woman.png", "TakeUnpressed.png", "TakePressed.png",
- "UnplayedBorder1.png", "UnplayedBorder2.png",
+ "UnplayedBorder1.png", "UnplayedBorder2.png", "RejoinPressed.png", "RejoinUnpressed.png",
}
for _, f := range boundedImgs {
a, err := asset.Open(f)
diff --git a/go/src/hearts/img/view/view.go b/go/src/hearts/img/view/view.go
index 5600864..3066645 100644
--- a/go/src/hearts/img/view/view.go
+++ b/go/src/hearts/img/view/view.go
@@ -9,7 +9,9 @@
package view
import (
+ "bufio"
"fmt"
+ "os"
"sort"
"strconv"
@@ -20,6 +22,7 @@
"hearts/img/texture"
"hearts/img/uistate"
"hearts/logic/card"
+ "hearts/util"
"golang.org/x/mobile/exp/f32"
"golang.org/x/mobile/exp/sprite"
@@ -91,7 +94,6 @@
}
// Waiting view: Displays the word "Waiting". To be displayed when players are waiting for a new round to be dealt
-// TODO(emshack): Integrate this with Arrange view and Score view so that a separate screen is not necessary
func LoadWaitingView(u *uistate.UIState) {
u.M.Lock()
defer u.M.Unlock()
@@ -121,6 +123,37 @@
newGamePos := coords.MakeVec((u.WindowSize.X-newGameDim.X)/2, u.TopPadding)
u.Buttons["newGame"] = texture.MakeImgWithAlt(newGameImg, newGameAlt, newGamePos, newGameDim, true, u)
buttonNum := 1
+ file, err := os.OpenFile(util.AddrFile, os.O_RDONLY|os.O_CREATE, 0666)
+ if err != nil {
+ fmt.Println("err:", err)
+ }
+ scanner := bufio.NewScanner(file)
+ var oldAddr string
+ scanner.Scan()
+ addr := scanner.Text()
+ // Search through all the database's syncgroups to see if addr represents a current syncgroup
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
+ allAddrs, _ := db.GetSyncgroupNames(u.Ctx)
+ fmt.Println(allAddrs)
+ for _, a := range allAddrs {
+ if a == addr {
+ oldAddr = a
+ }
+ }
+ file.Close()
+ if oldAddr != "" {
+ rejoinGameImg := u.Texs["RejoinUnpressed.png"]
+ rejoinGameAlt := u.Texs["RejoinPressed.png"]
+ rejoinGameDim := coords.MakeVec(4*u.CardDim.X, u.CardDim.Y)
+ rejoinGamePos := coords.MakeVec((u.WindowSize.X-rejoinGameDim.X)/2, u.TopPadding+rejoinGameDim.Y+u.Padding)
+ u.Buttons["rejoinGame"] = texture.MakeImgWithAlt(rejoinGameImg, rejoinGameAlt, rejoinGamePos, rejoinGameDim, true, u)
+ scanner.Scan()
+ creator := scanner.Text()
+ bInfo := oldAddr + "|" + creator
+ u.Buttons["rejoinGame"].SetInfo(bInfo)
+ buttonNum = 2
+ }
for _, d := range u.DiscGroups {
if d != nil {
dataMap := d.GameStartData
@@ -146,7 +179,9 @@
joinGameAlt := u.Texs["JoinGamePressed.png"]
joinGamePos := coords.MakeVec(u.WindowSize.X-u.BottomPadding-newGameDim.X, newGamePos.Y+float32(buttonNum)*(bgBannerDim.Y+u.Padding))
u.Buttons[fmt.Sprintf("joinGame-%d", buttonNum)] = texture.MakeImgWithAlt(joinGameImg, joinGameAlt, joinGamePos, newGameDim, true, u)
- u.Buttons[fmt.Sprintf("joinGame-%d", buttonNum)].SetInfo(d.LogAddr)
+ creator := creatorName == util.UserName
+ bInfo := d.LogAddr + "|" + strconv.FormatBool(creator)
+ u.Buttons[fmt.Sprintf("joinGame-%d", buttonNum)].SetInfo(bInfo)
buttonNum++
}
}
@@ -376,19 +411,21 @@
// Decides which view of the player's hand to load based on what steps of the round they have completed
func LoadPassOrTakeOrPlay(u *uistate.UIState) {
- p := u.CurTable.GetPlayers()[u.CurPlayerIndex]
- if u.CurTable.RoundOver() {
- LoadScoreView(u)
- } else if p.GetDoneTaking() || u.CurTable.GetDir() == direction.None {
- if u.CurView == uistate.Play {
- LoadPlayView(true, u)
+ if u.CurPlayerIndex >= 0 {
+ p := u.CurTable.GetPlayers()[u.CurPlayerIndex]
+ if u.CurTable.RoundOver() {
+ LoadScoreView(u)
+ } else if p.GetDoneTaking() || u.CurTable.GetDir() == direction.None {
+ if u.CurView == uistate.Play {
+ LoadPlayView(true, u)
+ } else {
+ LoadPlayView(false, u)
+ }
+ } else if p.GetDonePassing() {
+ LoadTakeView(u)
} else {
- LoadPlayView(false, u)
+ LoadPassView(u)
}
- } else if p.GetDonePassing() {
- LoadTakeView(u)
- } else {
- LoadPassView(u)
}
}
diff --git a/go/src/hearts/main.go b/go/src/hearts/main.go
index 38eb093..d2b31fb 100644
--- a/go/src/hearts/main.go
+++ b/go/src/hearts/main.go
@@ -23,6 +23,7 @@
"hearts/logic/table"
"hearts/sync"
"hearts/touchhandler"
+ "hearts/util"
"golang.org/x/mobile/app"
"golang.org/x/mobile/event/lifecycle"
@@ -86,7 +87,7 @@
ctx, shutdown := v23.Init()
u.Shutdown = shutdown
u.Ctx = ctx
- u.Service = syncbase.NewService(sync.MountPoint + "/croupier/" + sync.SBName)
+ u.Service = syncbase.NewService(util.MountPoint + "/croupier/" + util.SBName)
namespace := v23.GetNamespace(u.Ctx)
allAccess := access.AccessList{In: []security.BlessingPattern{"..."}}
permissions := access.Permissions{
@@ -96,8 +97,8 @@
"Resolve": allAccess,
"Debug": allAccess,
}
- namespace.SetPermissions(u.Ctx, sync.MountPoint, permissions, "")
- namespace.SetPermissions(u.Ctx, sync.MountPoint+"/croupier", permissions, "")
+ namespace.SetPermissions(u.Ctx, util.MountPoint, permissions, "")
+ namespace.SetPermissions(u.Ctx, util.MountPoint+"/croupier", permissions, "")
u.Service.SetPermissions(u.Ctx, permissions, "")
u.Images = glutil.NewImages(glctx)
fps = debug.NewFPS(u.Images)
diff --git a/go/src/hearts/sync/client.go b/go/src/hearts/sync/client.go
index c7f4194..195578a 100644
--- a/go/src/hearts/sync/client.go
+++ b/go/src/hearts/sync/client.go
@@ -11,6 +11,7 @@
"hearts/img/uistate"
"hearts/img/view"
+ "hearts/util"
"v.io/v23/context"
"v.io/v23/discovery"
@@ -30,7 +31,7 @@
}
ds := ldiscovery.NewWithPlugins([]ldiscovery.Plugin{mdns})
fmt.Printf("Start scanning...\n")
- ch, err := ds.Scan(ctx, fmt.Sprintf("v.InterfaceName = \"%s\"", CroupierInterface))
+ ch, err := ds.Scan(ctx, fmt.Sprintf("v.InterfaceName = \"%s\"", util.CroupierInterface))
if err != nil {
ctx.Fatalf("Scan failed: %v", err)
}
@@ -77,7 +78,7 @@
// Returns a watchstream of the data in the table
func WatchData(tableName, prefix string, u *uistate.UIState) (nosql.WatchStream, error) {
- db := u.Service.App(AppName).NoSQLDatabase(DbName, nil)
+ db := u.Service.App(util.AppName).NoSQLDatabase(util.DbName, nil)
resumeMarker, err := db.GetResumeMarker(u.Ctx)
if err != nil {
fmt.Println("RESUMEMARKER ERR: ", err)
@@ -87,21 +88,21 @@
// Returns a scanstream of the data in the table
func ScanData(tableName, prefix string, u *uistate.UIState) nosql.ScanStream {
- app := u.Service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
table := db.Table(tableName)
rowRange := nosql.Range(prefix, "")
return table.Scan(u.Ctx, rowRange)
}
// Joins gamelog syncgroup
-func JoinLogSyncgroup(logName string, u *uistate.UIState) bool {
+func JoinLogSyncgroup(logName string, creator bool, u *uistate.UIState) bool {
fmt.Println("Joining gamelog syncgroup")
- u.IsOwner = false
- app := u.Service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
+ u.IsOwner = creator
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
logSg := db.Syncgroup(logName)
- myInfoJoiner := wire.SyncgroupMemberInfo{8, false}
+ myInfoJoiner := wire.SyncgroupMemberInfo{8, creator}
_, err := logSg.Join(u.Ctx, myInfoJoiner)
if err != nil {
fmt.Println("SYNCGROUP JOIN ERROR: ", err)
@@ -109,7 +110,7 @@
} else {
fmt.Println("Syncgroup joined")
if u.LogSG != logName {
- ResetGame(logName, false, u)
+ ResetGame(logName, creator, u)
}
return true
}
@@ -118,8 +119,8 @@
// Joins player settings syncgroup
func JoinSettingsSyncgroup(settingsName string, u *uistate.UIState) {
fmt.Println("Joining user settings syncgroup")
- app := u.Service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
settingsSg := db.Syncgroup(settingsName)
myInfoJoiner := wire.SyncgroupMemberInfo{8, false}
_, err := settingsSg.Join(u.Ctx, myInfoJoiner)
@@ -131,8 +132,8 @@
}
func NumInSG(logName string, u *uistate.UIState) int {
- app := u.Service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
sg := db.Syncgroup(logName)
members, err := sg.GetMembers(u.Ctx)
if err != nil {
diff --git a/go/src/hearts/sync/logWriter.go b/go/src/hearts/sync/logWriter.go
index 110d0dd..b0a8384 100644
--- a/go/src/hearts/sync/logWriter.go
+++ b/go/src/hearts/sync/logWriter.go
@@ -14,6 +14,7 @@
"hearts/img/uistate"
"hearts/logic/card"
+ "hearts/util"
"v.io/v23/context"
"v.io/v23/syncbase"
@@ -95,13 +96,13 @@
}
func LogPlayerNum(u *uistate.UIState) bool {
- key := fmt.Sprintf("%d/players/%d/player_number", u.GameID, UserID)
+ key := fmt.Sprintf("%d/players/%d/player_number", u.GameID, util.UserID)
value := strconv.Itoa(u.CurPlayerIndex)
return logKeyValue(u.Service, u.Ctx, key, value)
}
func LogSettingsName(name string, u *uistate.UIState) bool {
- key := fmt.Sprintf("%d/players/%d/settings_sg", u.GameID, UserID)
+ key := fmt.Sprintf("%d/players/%d/settings_sg", u.GameID, util.UserID)
return logKeyValue(u.Service, u.Ctx, key, name)
}
diff --git a/go/src/hearts/sync/server.go b/go/src/hearts/sync/server.go
index 68b1147..c618155 100644
--- a/go/src/hearts/sync/server.go
+++ b/go/src/hearts/sync/server.go
@@ -10,10 +10,12 @@
"encoding/json"
"fmt"
"math/rand"
+ "os"
"strconv"
"strings"
"hearts/img/uistate"
+ "hearts/util"
"v.io/v23/context"
"v.io/v23/discovery"
@@ -37,7 +39,7 @@
discoveryService := ldiscovery.NewWithPlugins([]ldiscovery.Plugin{mdns})
gameService := discovery.Service{
InstanceName: "A sample game service",
- InterfaceName: CroupierInterface,
+ InterfaceName: util.CroupierInterface,
Attrs: map[string]string{"settings_sgname": settingsAddress, "game_start_data": gameStartData},
Addrs: []string{logAddress},
}
@@ -54,9 +56,9 @@
// Puts key and value into the syncbase gamelog table
func AddKeyValue(service syncbase.Service, ctx *context.T, key, value string) bool {
- app := service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
- table := db.Table(LogName)
+ app := service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
+ table := db.Table(util.LogName)
valueByte := []byte(value)
err := table.Put(ctx, key, valueByte)
if err != nil {
@@ -69,7 +71,7 @@
// Creates an app, db, game log table and game settings table in syncbase if they don't already exist
// Adds appropriate data to settings table
func CreateTables(u *uistate.UIState) {
- app := u.Service.App(AppName)
+ app := u.Service.App(util.AppName)
if isThere, err := app.Exists(u.Ctx); err != nil {
fmt.Println("APP EXISTS ERROR: ", err)
} else if !isThere {
@@ -77,7 +79,7 @@
fmt.Println("APP ERROR: ", err)
}
}
- db := app.NoSQLDatabase(DbName, nil)
+ db := app.NoSQLDatabase(util.DbName, nil)
if isThere, err := db.Exists(u.Ctx); err != nil {
fmt.Println("DB EXISTS ERROR: ", err)
} else if !isThere {
@@ -85,7 +87,7 @@
fmt.Println("DB ERROR: ", err)
}
}
- logTable := db.Table(LogName)
+ logTable := db.Table(util.LogName)
if isThere, err := logTable.Exists(u.Ctx); err != nil {
fmt.Println("TABLE EXISTS ERROR: ", err)
} else if !isThere {
@@ -93,7 +95,7 @@
fmt.Println("TABLE ERROR: ", err)
}
}
- settingsTable := db.Table(SettingsName)
+ settingsTable := db.Table(util.SettingsName)
if isThere, err := settingsTable.Exists(u.Ctx); err != nil {
fmt.Println("TABLE EXISTS ERROR: ", err)
} else if !isThere {
@@ -103,16 +105,16 @@
}
// Add user settings data to represent this player
settingsMap := make(map[string]interface{})
- settingsMap["userID"] = UserID
- settingsMap["avatar"] = UserAvatar
- settingsMap["name"] = UserName
- settingsMap["color"] = UserColor
- u.UserData[UserID] = settingsMap
+ settingsMap["userID"] = util.UserID
+ settingsMap["avatar"] = util.UserAvatar
+ settingsMap["name"] = util.UserName
+ settingsMap["color"] = util.UserColor
+ u.UserData[util.UserID] = settingsMap
value, err := json.Marshal(settingsMap)
if err != nil {
fmt.Println("WE HAVE A HUGE PROBLEM:", err)
}
- settingsTable.Put(u.Ctx, fmt.Sprintf("users/%d/settings", UserID), value)
+ settingsTable.Put(u.Ctx, fmt.Sprintf("users/%d/settings", util.UserID), value)
}
// Creates a new gamelog syncgroup
@@ -126,13 +128,13 @@
gameMap["type"] = "Hearts"
gameMap["playerNumber"] = 0
gameMap["gameID"] = gameID
- gameMap["ownerID"] = UserID
+ gameMap["ownerID"] = util.UserID
value, err := json.Marshal(gameMap)
if err != nil {
fmt.Println("WE HAVE A HUGE PROBLEM:", err)
}
// Create gamelog syncgroup
- logSGName := fmt.Sprintf("%s/croupier/%s/%%%%sync/gaming-%d", MountPoint, SBName, gameID)
+ logSGName := fmt.Sprintf("%s/croupier/%s/%%%%sync/gaming-%d", util.MountPoint, util.SBName, gameID)
allAccess := access.AccessList{In: []security.BlessingPattern{"..."}}
permissions := access.Permissions{
"Admin": allAccess,
@@ -141,9 +143,9 @@
"Resolve": allAccess,
"Debug": allAccess,
}
- logPref := wire.TableRow{LogName, fmt.Sprintf("%d", u.GameID)}
+ logPref := wire.TableRow{util.LogName, fmt.Sprintf("%d", u.GameID)}
logPrefs := []wire.TableRow{logPref}
- tables := []string{MountPoint + "/croupier"}
+ tables := []string{util.MountPoint + "/croupier"}
logSpec := wire.SyncgroupSpec{
Description: "croupier syncgroup",
Perms: permissions,
@@ -152,8 +154,8 @@
IsPrivate: false,
}
myInfoCreator := wire.SyncgroupMemberInfo{8, true}
- app := u.Service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
logSG := db.Syncgroup(logSGName)
err = logSG.Create(u.Ctx, logSpec, myInfoCreator)
if err != nil {
@@ -186,12 +188,12 @@
"Resolve": allAccess,
"Debug": allAccess,
}
- tables := []string{MountPoint + "/croupier"}
+ tables := []string{util.MountPoint + "/croupier"}
myInfoCreator := wire.SyncgroupMemberInfo{8, true}
- app := u.Service.App(AppName)
- db := app.NoSQLDatabase(DbName, nil)
- settingsSGName := fmt.Sprintf("%s/croupier/%s/%%%%sync/discovery-%d", MountPoint, SBName, UserID)
- settingsPref := wire.TableRow{SettingsName, fmt.Sprintf("users/%d", UserID)}
+ app := u.Service.App(util.AppName)
+ db := app.NoSQLDatabase(util.DbName, nil)
+ settingsSGName := fmt.Sprintf("%s/croupier/%s/%%%%sync/discovery-%d", util.MountPoint, util.SBName, util.UserID)
+ settingsPref := wire.TableRow{util.SettingsName, fmt.Sprintf("users/%d", util.UserID)}
settingsPrefs := []wire.TableRow{settingsPref}
settingsSpec := wire.SyncgroupSpec{
Description: "croupier syncgroup",
@@ -225,12 +227,11 @@
u.PlayerData = make(map[int]int)
u.CurPlayerIndex = -1
u.LogSG = logName
+ writeLogAddr(logName, creator)
u.CurTable.NewGame()
- if !creator {
- tmp := strings.Split(logName, "-")
- gameID, _ := strconv.Atoi(tmp[len(tmp)-1])
- u.GameID = gameID
- }
+ tmp := strings.Split(logName, "-")
+ gameID, _ := strconv.Atoi(tmp[len(tmp)-1])
+ u.GameID = gameID
u.GameChan = make(chan bool)
go UpdateGame(u.GameChan, u)
}
@@ -240,3 +241,13 @@
ch <- true
}
}
+
+func writeLogAddr(logName string, creator bool) {
+ file, err := os.OpenFile(util.AddrFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
+ if err != nil {
+ fmt.Println("err:", err)
+ }
+ fmt.Fprintln(file, logName)
+ fmt.Fprintln(file, creator)
+ file.Close()
+}
diff --git a/go/src/hearts/sync/watch.go b/go/src/hearts/sync/watch.go
index 877fce5..70fb012 100644
--- a/go/src/hearts/sync/watch.go
+++ b/go/src/hearts/sync/watch.go
@@ -12,22 +12,26 @@
import (
"encoding/json"
"fmt"
- "golang.org/x/mobile/exp/sprite"
- "hearts/img/direction"
- "hearts/img/reposition"
- "hearts/img/uistate"
- "hearts/img/view"
- "hearts/logic/card"
"os"
"sort"
"strconv"
"strings"
"time"
+
+ "golang.org/x/mobile/exp/sprite"
+
+ "hearts/img/direction"
+ "hearts/img/reposition"
+ "hearts/img/uistate"
+ "hearts/img/view"
+ "hearts/logic/card"
+ "hearts/util"
+
"v.io/v23/syncbase/nosql"
)
func UpdateSettings(u *uistate.UIState) {
- scanner := ScanData(SettingsName, "users", u)
+ scanner := ScanData(util.SettingsName, "users", u)
for {
if updateExists := scanner.Advance(); updateExists {
key := scanner.Key()
@@ -40,7 +44,7 @@
break
}
}
- stream, err := WatchData(SettingsName, "users", u)
+ stream, err := WatchData(util.SettingsName, "users", u)
if err != nil {
fmt.Println("WatchData error:", err)
} else {
@@ -87,7 +91,7 @@
}
fmt.Fprintf(file, fmt.Sprintf("\n***NEW GAME: %d\n", u.GameID))
defer file.Close()
- scanner := ScanData(LogName, fmt.Sprintf("%d", u.GameID), u)
+ scanner := ScanData(util.LogName, fmt.Sprintf("%d", u.GameID), u)
m := make(map[string][]byte)
keys := make([]string, 0)
for scanner.Advance() {
@@ -112,7 +116,7 @@
handleGameUpdate(file, key, value, u)
}
}
- stream, err2 := WatchData(LogName, fmt.Sprintf("%d", u.GameID), u)
+ stream, err2 := WatchData(util.LogName, fmt.Sprintf("%d", u.GameID), u)
fmt.Println("STARTING WATCH FOR GAME", u.GameID)
if err2 != nil {
fmt.Println("WatchData error:", err2)
@@ -196,7 +200,7 @@
u.PlayerData[playerNum] = userID
u.CurTable.GetPlayers()[playerNum].SetDoneScoring(true)
}
- if playerNum == u.CurPlayerIndex && userID != UserID {
+ if playerNum == u.CurPlayerIndex && userID != util.UserID {
u.CurPlayerIndex = -1
}
if u.CurView == uistate.Arrange {
diff --git a/go/src/hearts/touchhandler/touchhandler.go b/go/src/hearts/touchhandler/touchhandler.go
index a76f12d..6d1cbc4 100644
--- a/go/src/hearts/touchhandler/touchhandler.go
+++ b/go/src/hearts/touchhandler/touchhandler.go
@@ -163,8 +163,11 @@
} else {
for _, b := range u.Buttons {
if button == b {
- logAddr := b.GetInfo()
- success := sync.JoinLogSyncgroup(logAddr, u)
+ s := strings.Split(b.GetInfo(), "|")
+ logAddr := s[0]
+ creator, _ := strconv.ParseBool(s[1])
+ fmt.Println("TRYING TO JOIN:", logAddr)
+ success := sync.JoinLogSyncgroup(logAddr, creator, u)
if success {
sgName := sync.CreateSettingsSyncgroup(u)
if sgName != "" {
diff --git a/go/src/hearts/sync/util.go b/go/src/hearts/util/util.go
similarity index 77%
rename from go/src/hearts/sync/util.go
rename to go/src/hearts/util/util.go
index 7155506..aad0831 100644
--- a/go/src/hearts/sync/util.go
+++ b/go/src/hearts/util/util.go
@@ -4,13 +4,13 @@
// util.go stores constants relevant to the syncbase hierarchy
-package sync
+package util
const (
// switch back to my mountpoint with the following code:
MountPoint = "users/emshack@google.com"
//MountPoint = "/192.168.86.254:8101"
- UserID = 111
+ UserID = 1112
UserColor = 16777215
UserAvatar = "woman.png"
UserName = "Bob"
@@ -20,4 +20,7 @@
LogName = "games"
SettingsName = "table_settings"
CroupierInterface = "CroupierSettingsAndGame"
+ // Swap the following two lines when running app on a computer vs. mobile device:
+ // AddrFile = "src/dataParser/addr"
+ AddrFile = "/sdcard/addr.txt"
)