Syncing settings data correctly.
Removing outdated images from assets and texture.go
Change-Id: I308fb5b4a285eb0a8d1d18a7a5abf30a10fcad9b
diff --git a/go/src/hearts/assets/Deal.png b/go/src/hearts/assets/Deal.png
deleted file mode 100644
index c22ea22..0000000
--- a/go/src/hearts/assets/Deal.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/acrossArrow.png b/go/src/hearts/assets/acrossArrow.png
deleted file mode 100644
index 4aaa946..0000000
--- a/go/src/hearts/assets/acrossArrow.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/bluePressed.png b/go/src/hearts/assets/bluePressed.png
deleted file mode 100644
index 1ddd80b..0000000
--- a/go/src/hearts/assets/bluePressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/croupierName.png b/go/src/hearts/assets/croupierName.png
deleted file mode 100644
index 8a5a1b6..0000000
--- a/go/src/hearts/assets/croupierName.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/leftArrow.png b/go/src/hearts/assets/leftArrow.png
deleted file mode 100644
index 3361ac6..0000000
--- a/go/src/hearts/assets/leftArrow.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/passPressed.png b/go/src/hearts/assets/passPressed.png
deleted file mode 100644
index cd8c0aa..0000000
--- a/go/src/hearts/assets/passPressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/passUnpressed.png b/go/src/hearts/assets/passUnpressed.png
deleted file mode 100644
index 1c5db41..0000000
--- a/go/src/hearts/assets/passUnpressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/playPressed.png b/go/src/hearts/assets/playPressed.png
deleted file mode 100644
index 975a00a..0000000
--- a/go/src/hearts/assets/playPressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/playUnpressed.png b/go/src/hearts/assets/playUnpressed.png
deleted file mode 100644
index 777848a..0000000
--- a/go/src/hearts/assets/playUnpressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/rightArrow.png b/go/src/hearts/assets/rightArrow.png
deleted file mode 100644
index 048b571..0000000
--- a/go/src/hearts/assets/rightArrow.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/takePressed.png b/go/src/hearts/assets/takePressed.png
deleted file mode 100644
index fdae348..0000000
--- a/go/src/hearts/assets/takePressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/takeUnpressed.png b/go/src/hearts/assets/takeUnpressed.png
deleted file mode 100644
index f8b6a7a..0000000
--- a/go/src/hearts/assets/takeUnpressed.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/assets/white.png b/go/src/hearts/assets/white.png
deleted file mode 100644
index e878403..0000000
--- a/go/src/hearts/assets/white.png
+++ /dev/null
Binary files differ
diff --git a/go/src/hearts/img/texture/texture.go b/go/src/hearts/img/texture/texture.go
index 08e752b..a112d6c 100644
--- a/go/src/hearts/img/texture/texture.go
+++ b/go/src/hearts/img/texture/texture.go
@@ -181,7 +181,10 @@
totalWidth = maxWidth
}
startX := center.X - totalWidth/2
- startY := center.Y + (float32(textures[0].R.Max.Y)/scaler-float32(textures[0].R.Max.Y)/newScaler)/2
+ startY := center.Y
+ if len(textures) > 0 {
+ startY = center.Y + (float32(textures[0].R.Max.Y)/scaler-float32(textures[0].R.Max.Y)/newScaler)/2
+ }
start := coords.MakeVec(startX, startY)
return MakeStringImgLeftAlign(input, color, altColor, displayColor, start, newScaler, maxWidth, u)
}
@@ -228,47 +231,46 @@
"Hearts-2.png", "Hearts-3.png", "Hearts-4.png", "Hearts-5.png", "Hearts-6.png", "Hearts-7.png", "Hearts-8.png",
"Hearts-9.png", "Hearts-10.png", "Hearts-Jack.png", "Hearts-Queen.png", "Hearts-King.png", "Hearts-Ace.png", "BakuSquare.png",
}
- unboundedImgs := []string{"Club.png", "Diamond.png", "Spade.png", "Heart.png", "gray.jpeg", "blue.png", "white.png", "passPressed.png",
- "passUnpressed.png", "leftArrow.png", "rightArrow.png", "acrossArrow.png", "croupierName.png", "trickDrop.png", "trickDropBlue.png",
- "player0.jpeg", "player1.jpeg", "player2.jpeg", "player3.jpeg", "laptopIcon.png", "watchIcon.png", "phoneIcon.png", "tabletIcon.png",
- "playPressed.png", "playUnpressed.png", "bluePressed.png", "takePressed.png", "takeUnpressed.png", "A-Upper.png", "B-Upper.png",
- "C-Upper.png", "D-Upper.png", "E-Upper.png", "F-Upper.png", "G-Upper.png", "H-Upper.png", "I-Upper.png", "J-Upper.png",
- "K-Upper.png", "L-Upper.png", "M-Upper.png", "N-Upper.png", "O-Upper.png", "P-Upper.png", "Q-Upper.png", "R-Upper.png",
- "S-Upper.png", "T-Upper.png", "U-Upper.png", "V-Upper.png", "W-Upper.png", "X-Upper.png", "Y-Upper.png", "Z-Upper.png",
- "A-Lower.png", "B-Lower.png", "C-Lower.png", "D-Lower.png", "E-Lower.png", "F-Lower.png", "G-Lower.png", "H-Lower.png",
- "I-Lower.png", "J-Lower.png", "K-Lower.png", "L-Lower.png", "M-Lower.png", "N-Lower.png", "O-Lower.png", "P-Lower.png",
- "Q-Lower.png", "R-Lower.png", "S-Lower.png", "T-Lower.png", "U-Lower.png", "V-Lower.png", "W-Lower.png", "X-Lower.png",
- "Y-Lower.png", "Z-Lower.png", "Space.png", "Colon.png", "Bang.png", "1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png",
- "8.png", "9.png", "0.png", "1-Red.png", "2-Red.png", "3-Red.png", "4-Red.png", "5-Red.png", "6-Red.png", "7-Red.png", "8-Red.png",
- "9-Red.png", "0-Red.png", "A-Upper-DBlue.png", "B-Upper-DBlue.png", "C-Upper-DBlue.png", "D-Upper-DBlue.png", "E-Upper-DBlue.png",
- "F-Upper-DBlue.png", "G-Upper-DBlue.png", "H-Upper-DBlue.png", "I-Upper-DBlue.png", "J-Upper-DBlue.png", "K-Upper-DBlue.png",
- "L-Upper-DBlue.png", "M-Upper-DBlue.png", "N-Upper-DBlue.png", "O-Upper-DBlue.png", "P-Upper-DBlue.png", "Q-Upper-DBlue.png",
- "R-Upper-DBlue.png", "S-Upper-DBlue.png", "T-Upper-DBlue.png", "U-Upper-DBlue.png", "V-Upper-DBlue.png", "W-Upper-DBlue.png",
- "X-Upper-DBlue.png", "Y-Upper-DBlue.png", "Z-Upper-DBlue.png", "A-Lower-DBlue.png", "B-Lower-DBlue.png", "C-Lower-DBlue.png",
- "D-Lower-DBlue.png", "E-Lower-DBlue.png", "F-Lower-DBlue.png", "G-Lower-DBlue.png", "H-Lower-DBlue.png", "I-Lower-DBlue.png",
- "J-Lower-DBlue.png", "K-Lower-DBlue.png", "L-Lower-DBlue.png", "M-Lower-DBlue.png", "N-Lower-DBlue.png", "O-Lower-DBlue.png",
- "P-Lower-DBlue.png", "Q-Lower-DBlue.png", "R-Lower-DBlue.png", "S-Lower-DBlue.png", "T-Lower-DBlue.png", "U-Lower-DBlue.png",
- "V-Lower-DBlue.png", "W-Lower-DBlue.png", "X-Lower-DBlue.png", "Y-Lower-DBlue.png", "Z-Lower-DBlue.png", "Apostrophe-DBlue.png",
- "Space-DBlue.png", "A-Upper-LBlue.png", "B-Upper-LBlue.png", "C-Upper-LBlue.png", "D-Upper-LBlue.png", "E-Upper-LBlue.png",
- "F-Upper-LBlue.png", "G-Upper-LBlue.png", "H-Upper-LBlue.png", "I-Upper-LBlue.png", "J-Upper-LBlue.png", "K-Upper-LBlue.png",
- "L-Upper-LBlue.png", "M-Upper-LBlue.png", "N-Upper-LBlue.png", "O-Upper-LBlue.png", "P-Upper-LBlue.png", "Q-Upper-LBlue.png",
- "R-Upper-LBlue.png", "S-Upper-LBlue.png", "T-Upper-LBlue.png", "U-Upper-LBlue.png", "V-Upper-LBlue.png", "W-Upper-LBlue.png",
- "X-Upper-LBlue.png", "Y-Upper-LBlue.png", "Z-Upper-LBlue.png", "A-Lower-LBlue.png", "B-Lower-LBlue.png", "C-Lower-LBlue.png",
- "D-Lower-LBlue.png", "E-Lower-LBlue.png", "F-Lower-LBlue.png", "G-Lower-LBlue.png", "H-Lower-LBlue.png", "I-Lower-LBlue.png",
- "J-Lower-LBlue.png", "K-Lower-LBlue.png", "L-Lower-LBlue.png", "M-Lower-LBlue.png", "N-Lower-LBlue.png", "O-Lower-LBlue.png",
- "P-Lower-LBlue.png", "Q-Lower-LBlue.png", "R-Lower-LBlue.png", "S-Lower-LBlue.png", "T-Lower-LBlue.png", "U-Lower-LBlue.png",
- "V-Lower-LBlue.png", "W-Lower-LBlue.png", "X-Lower-LBlue.png", "Y-Lower-LBlue.png", "Z-Lower-LBlue.png", "A-Upper-Gray.png",
- "B-Upper-Gray.png", "C-Upper-Gray.png", "D-Upper-Gray.png", "E-Upper-Gray.png", "F-Upper-Gray.png", "G-Upper-Gray.png",
- "H-Upper-Gray.png", "I-Upper-Gray.png", "J-Upper-Gray.png", "K-Upper-Gray.png", "L-Upper-Gray.png", "M-Upper-Gray.png",
- "N-Upper-Gray.png", "O-Upper-Gray.png", "P-Upper-Gray.png", "Q-Upper-Gray.png", "R-Upper-Gray.png", "S-Upper-Gray.png",
- "T-Upper-Gray.png", "U-Upper-Gray.png", "V-Upper-Gray.png", "W-Upper-Gray.png", "X-Upper-Gray.png", "Y-Upper-Gray.png",
- "Z-Upper-Gray.png", "A-Lower-Gray.png", "B-Lower-Gray.png", "C-Lower-Gray.png", "D-Lower-Gray.png", "E-Lower-Gray.png",
- "F-Lower-Gray.png", "G-Lower-Gray.png", "H-Lower-Gray.png", "I-Lower-Gray.png", "J-Lower-Gray.png", "K-Lower-Gray.png",
- "L-Lower-Gray.png", "M-Lower-Gray.png", "N-Lower-Gray.png", "O-Lower-Gray.png", "P-Lower-Gray.png", "Q-Lower-Gray.png",
- "R-Lower-Gray.png", "S-Lower-Gray.png", "T-Lower-Gray.png", "U-Lower-Gray.png", "V-Lower-Gray.png", "W-Lower-Gray.png",
- "X-Lower-Gray.png", "Y-Lower-Gray.png", "Z-Lower-Gray.png", "Space-Gray.png", "RoundedRectangle-DBlue.png",
- "RoundedRectangle-LBlue.png", "RoundedRectangle-Gray.png", "Rectangle-LBlue.png", "Rectangle-DBlue.png", "HorizontalPullTab.png",
- "VerticalPullTab.png", "NewGame.png", "NewRound.png", "JoinGame.png", "Deal.png", "Period.png", "SitSpot.png", "WatchSpot.png",
+ unboundedImgs := []string{"Club.png", "Diamond.png", "Spade.png", "Heart.png", "gray.jpeg", "blue.png", "trickDrop.png",
+ "trickDropBlue.png", "player0.jpeg", "player1.jpeg", "player2.jpeg", "player3.jpeg", "laptopIcon.png", "watchIcon.png",
+ "phoneIcon.png", "tabletIcon.png", "A-Upper.png", "B-Upper.png", "C-Upper.png", "D-Upper.png", "E-Upper.png", "F-Upper.png",
+ "G-Upper.png", "H-Upper.png", "I-Upper.png", "J-Upper.png", "K-Upper.png", "L-Upper.png", "M-Upper.png", "N-Upper.png",
+ "O-Upper.png", "P-Upper.png", "Q-Upper.png", "R-Upper.png", "S-Upper.png", "T-Upper.png", "U-Upper.png", "V-Upper.png",
+ "W-Upper.png", "X-Upper.png", "Y-Upper.png", "Z-Upper.png", "A-Lower.png", "B-Lower.png", "C-Lower.png", "D-Lower.png",
+ "E-Lower.png", "F-Lower.png", "G-Lower.png", "H-Lower.png", "I-Lower.png", "J-Lower.png", "K-Lower.png", "L-Lower.png",
+ "M-Lower.png", "N-Lower.png", "O-Lower.png", "P-Lower.png", "Q-Lower.png", "R-Lower.png", "S-Lower.png", "T-Lower.png",
+ "U-Lower.png", "V-Lower.png", "W-Lower.png", "X-Lower.png", "Y-Lower.png", "Z-Lower.png", "Space.png", "Colon.png", "Bang.png",
+ "1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png", "8.png", "9.png", "0.png", "1-Red.png", "2-Red.png", "3-Red.png",
+ "4-Red.png", "5-Red.png", "6-Red.png", "7-Red.png", "8-Red.png", "9-Red.png", "0-Red.png", "A-Upper-DBlue.png", "B-Upper-DBlue.png",
+ "C-Upper-DBlue.png", "D-Upper-DBlue.png", "E-Upper-DBlue.png", "F-Upper-DBlue.png", "G-Upper-DBlue.png", "H-Upper-DBlue.png",
+ "I-Upper-DBlue.png", "J-Upper-DBlue.png", "K-Upper-DBlue.png", "L-Upper-DBlue.png", "M-Upper-DBlue.png", "N-Upper-DBlue.png",
+ "O-Upper-DBlue.png", "P-Upper-DBlue.png", "Q-Upper-DBlue.png", "R-Upper-DBlue.png", "S-Upper-DBlue.png", "T-Upper-DBlue.png",
+ "U-Upper-DBlue.png", "V-Upper-DBlue.png", "W-Upper-DBlue.png", "X-Upper-DBlue.png", "Y-Upper-DBlue.png", "Z-Upper-DBlue.png",
+ "A-Lower-DBlue.png", "B-Lower-DBlue.png", "C-Lower-DBlue.png", "D-Lower-DBlue.png", "E-Lower-DBlue.png", "F-Lower-DBlue.png",
+ "G-Lower-DBlue.png", "H-Lower-DBlue.png", "I-Lower-DBlue.png", "J-Lower-DBlue.png", "K-Lower-DBlue.png", "L-Lower-DBlue.png",
+ "M-Lower-DBlue.png", "N-Lower-DBlue.png", "O-Lower-DBlue.png", "P-Lower-DBlue.png", "Q-Lower-DBlue.png", "R-Lower-DBlue.png",
+ "S-Lower-DBlue.png", "T-Lower-DBlue.png", "U-Lower-DBlue.png", "V-Lower-DBlue.png", "W-Lower-DBlue.png", "X-Lower-DBlue.png",
+ "Y-Lower-DBlue.png", "Z-Lower-DBlue.png", "Apostrophe-DBlue.png", "Space-DBlue.png", "A-Upper-LBlue.png", "B-Upper-LBlue.png",
+ "C-Upper-LBlue.png", "D-Upper-LBlue.png", "E-Upper-LBlue.png", "F-Upper-LBlue.png", "G-Upper-LBlue.png", "H-Upper-LBlue.png",
+ "I-Upper-LBlue.png", "J-Upper-LBlue.png", "K-Upper-LBlue.png", "L-Upper-LBlue.png", "M-Upper-LBlue.png", "N-Upper-LBlue.png",
+ "O-Upper-LBlue.png", "P-Upper-LBlue.png", "Q-Upper-LBlue.png", "R-Upper-LBlue.png", "S-Upper-LBlue.png", "T-Upper-LBlue.png",
+ "U-Upper-LBlue.png", "V-Upper-LBlue.png", "W-Upper-LBlue.png", "X-Upper-LBlue.png", "Y-Upper-LBlue.png", "Z-Upper-LBlue.png",
+ "A-Lower-LBlue.png", "B-Lower-LBlue.png", "C-Lower-LBlue.png", "D-Lower-LBlue.png", "E-Lower-LBlue.png", "F-Lower-LBlue.png",
+ "G-Lower-LBlue.png", "H-Lower-LBlue.png", "I-Lower-LBlue.png", "J-Lower-LBlue.png", "K-Lower-LBlue.png", "L-Lower-LBlue.png",
+ "M-Lower-LBlue.png", "N-Lower-LBlue.png", "O-Lower-LBlue.png", "P-Lower-LBlue.png", "Q-Lower-LBlue.png", "R-Lower-LBlue.png",
+ "S-Lower-LBlue.png", "T-Lower-LBlue.png", "U-Lower-LBlue.png", "V-Lower-LBlue.png", "W-Lower-LBlue.png", "X-Lower-LBlue.png",
+ "Y-Lower-LBlue.png", "Z-Lower-LBlue.png", "A-Upper-Gray.png", "B-Upper-Gray.png", "C-Upper-Gray.png", "D-Upper-Gray.png",
+ "E-Upper-Gray.png", "F-Upper-Gray.png", "G-Upper-Gray.png", "H-Upper-Gray.png", "I-Upper-Gray.png", "J-Upper-Gray.png",
+ "K-Upper-Gray.png", "L-Upper-Gray.png", "M-Upper-Gray.png", "N-Upper-Gray.png", "O-Upper-Gray.png", "P-Upper-Gray.png",
+ "Q-Upper-Gray.png", "R-Upper-Gray.png", "S-Upper-Gray.png", "T-Upper-Gray.png", "U-Upper-Gray.png", "V-Upper-Gray.png",
+ "W-Upper-Gray.png", "X-Upper-Gray.png", "Y-Upper-Gray.png", "Z-Upper-Gray.png", "A-Lower-Gray.png", "B-Lower-Gray.png",
+ "C-Lower-Gray.png", "D-Lower-Gray.png", "E-Lower-Gray.png", "F-Lower-Gray.png", "G-Lower-Gray.png", "H-Lower-Gray.png",
+ "I-Lower-Gray.png", "J-Lower-Gray.png", "K-Lower-Gray.png", "L-Lower-Gray.png", "M-Lower-Gray.png", "N-Lower-Gray.png",
+ "O-Lower-Gray.png", "P-Lower-Gray.png", "Q-Lower-Gray.png", "R-Lower-Gray.png", "S-Lower-Gray.png", "T-Lower-Gray.png",
+ "U-Lower-Gray.png", "V-Lower-Gray.png", "W-Lower-Gray.png", "X-Lower-Gray.png", "Y-Lower-Gray.png", "Z-Lower-Gray.png",
+ "Space-Gray.png", "RoundedRectangle-DBlue.png", "RoundedRectangle-LBlue.png", "RoundedRectangle-Gray.png", "Rectangle-LBlue.png",
+ "Rectangle-DBlue.png", "HorizontalPullTab.png", "VerticalPullTab.png", "NewGame.png", "NewRound.png", "JoinGame.png", "Period.png",
+ "SitSpot.png", "WatchSpot.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 2242d1f..e41f594 100644
--- a/go/src/hearts/img/view/view.go
+++ b/go/src/hearts/img/view/view.go
@@ -55,7 +55,7 @@
u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, arrangeDim, u))
} else {
u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, nilDim, u))
- avatar := uistate.GetAvatar(0, u)
+ avatar := uistate.GetAvatar(1, u)
u.BackgroundImgs = append(u.BackgroundImgs, texture.MakeImgWithoutAlt(avatar, sitPos, arrangeDim, u))
}
// player 2 seat
@@ -64,7 +64,7 @@
u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, arrangeDim, u))
} else {
u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, nilDim, u))
- avatar := uistate.GetAvatar(0, u)
+ avatar := uistate.GetAvatar(2, u)
u.BackgroundImgs = append(u.BackgroundImgs, texture.MakeImgWithoutAlt(avatar, sitPos, arrangeDim, u))
}
// player 3 seat
@@ -73,7 +73,7 @@
u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, arrangeDim, u))
} else {
u.Buttons = append(u.Buttons, texture.MakeImgWithoutAlt(sitImg, sitPos, nilDim, u))
- avatar := uistate.GetAvatar(0, u)
+ avatar := uistate.GetAvatar(3, u)
u.BackgroundImgs = append(u.BackgroundImgs, texture.MakeImgWithoutAlt(avatar, sitPos, arrangeDim, u))
}
// table
diff --git a/go/src/hearts/syncbase/client/main.go b/go/src/hearts/syncbase/client/main.go
index 46ddf10..8924dbd 100644
--- a/go/src/hearts/syncbase/client/main.go
+++ b/go/src/hearts/syncbase/client/main.go
@@ -85,19 +85,16 @@
return db.Watch(u.Ctx, tableName, prefix, resumeMarker)
}
-// Joins a set of gamelog and game settings syncgroups
-// TODO(emshack): After joining a syncgroup, advertise user settings data
-func JoinSyncgroups(ch chan bool, logName, settingsName string, u *uistate.UIState) {
- fmt.Println("Joining syncgroup")
+// Joins gamelog syncgroup
+func JoinLogSyncgroup(ch chan bool, logName string, u *uistate.UIState) {
+ fmt.Println("Joining gamelog syncgroup")
u.IsOwner = false
app := u.Service.App(util.AppName)
db := app.NoSQLDatabase(util.DbName, nil)
logSg := db.Syncgroup(logName)
- settingsSg := db.Syncgroup(settingsName)
myInfoJoiner := wire.SyncgroupMemberInfo{8, false}
_, err := logSg.Join(u.Ctx, myInfoJoiner)
- _, err2 := settingsSg.Join(u.Ctx, myInfoJoiner)
- if err != nil || err2 != nil {
+ if err != nil {
fmt.Println("SYNCGROUP JOIN ERROR: ", err)
ch <- false
} else {
@@ -110,6 +107,23 @@
}
}
+// Joins player settings syncgroup
+func JoinSettingsSyncgroup(ch chan bool, settingsName string, u *uistate.UIState) {
+ fmt.Println("Joining user settings syncgroup")
+ 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)
+ if err != nil {
+ fmt.Println("SYNCGROUP JOIN ERROR: ", err)
+ ch <- false
+ } else {
+ fmt.Println("Syncgroup joined")
+ ch <- true
+ }
+}
+
func NumInSG(logName string, u *uistate.UIState) int {
app := u.Service.App(util.AppName)
db := app.NoSQLDatabase(util.DbName, nil)
diff --git a/go/src/hearts/syncbase/gamelog/logWriter.go b/go/src/hearts/syncbase/gamelog/logWriter.go
index 2cbeeb7..e1fae35 100644
--- a/go/src/hearts/syncbase/gamelog/logWriter.go
+++ b/go/src/hearts/syncbase/gamelog/logWriter.go
@@ -94,6 +94,11 @@
return logKeyValue(u.Service, u.Ctx, key, value)
}
+func LogSettingsName(name string, u *uistate.UIState) bool {
+ key := strconv.Itoa(u.GameID) + "/players/" + strconv.Itoa(util.UserID) + "/settings_sg"
+ return logKeyValue(u.Service, u.Ctx, key, name)
+}
+
// Note: The syntax replicates the way Croupier in Dart/Flutter writes keys.
func getKey(playerId int, u *uistate.UIState) string {
t := int(time.Now().UnixNano() / 1000000)
diff --git a/go/src/hearts/syncbase/server/main.go b/go/src/hearts/syncbase/server/main.go
index 4c3a0f0..6291fd1 100644
--- a/go/src/hearts/syncbase/server/main.go
+++ b/go/src/hearts/syncbase/server/main.go
@@ -114,9 +114,9 @@
settingsTable.Put(u.Ctx, fmt.Sprintf("users/%d/settings", util.UserID), value)
}
-// Creates a new set of gamelog and game settings syncgroups
-func CreateSyncgroups(ch chan string, u *uistate.UIState) {
- fmt.Println("Creating Syncgroup")
+// Creates a new gamelog syncgroup
+func CreateLogSyncgroup(ch chan string, u *uistate.UIState) {
+ fmt.Println("Creating Log Syncgroup")
u.IsOwner = true
// Generate random gameID information to advertise this game
gameID := rand.Intn(1000000)
@@ -163,9 +163,25 @@
u.GameID = gameID
ch <- logSGName
}
- // Create game settings syncgroup
+}
+
+// Creates a new user settings syncgroup
+func CreateSettingsSyncgroup(ch chan string, u *uistate.UIState) {
+ fmt.Println("Creating Settings Syncgroup")
+ allAccess := access.AccessList{In: []security.BlessingPattern{"..."}}
+ permissions := access.Permissions{
+ "Admin": allAccess,
+ "Write": allAccess,
+ "Read": allAccess,
+ "Resolve": allAccess,
+ "Debug": allAccess,
+ }
+ tables := []string{util.MountPoint + "/croupier"}
+ myInfoCreator := wire.SyncgroupMemberInfo{8, true}
+ 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, ""}
+ settingsPref := wire.TableRow{util.SettingsName, fmt.Sprintf("users/%d", util.UserID)}
settingsPrefs := []wire.TableRow{settingsPref}
settingsSpec := wire.SyncgroupSpec{
Description: "croupier syncgroup",
@@ -175,7 +191,7 @@
IsPrivate: false,
}
settingsSG := db.Syncgroup(settingsSGName)
- err = settingsSG.Create(u.Ctx, settingsSpec, myInfoCreator)
+ err := settingsSG.Create(u.Ctx, settingsSpec, myInfoCreator)
if err != nil {
fmt.Println("SYNCGROUP CREATE ERROR: ", err)
ch <- ""
diff --git a/go/src/hearts/syncbase/util/util.go b/go/src/hearts/syncbase/util/util.go
index a24b8c8..202016f 100644
--- a/go/src/hearts/syncbase/util/util.go
+++ b/go/src/hearts/syncbase/util/util.go
@@ -8,12 +8,12 @@
const (
// switch back to my mountpoint with the following code:
- MountPoint = "users/emshack@google.com"
- //MountPoint = "/192.168.86.254:8101"
- UserID = 1223
+ //MountPoint = "users/emshack@google.com"
+ MountPoint = "/192.168.86.254:8101"
+ UserID = 123234234
UserColor = 16777215
- UserAvatar = "player1.jpeg"
- UserName = "EmilyS"
+ UserAvatar = "player0.jpeg"
+ UserName = "Emily"
SBName = "syncbase"
AppName = "app"
DbName = "db"
diff --git a/go/src/hearts/syncbase/watch/watch.go b/go/src/hearts/syncbase/watch/watch.go
index 2452590..e5bc8eb 100644
--- a/go/src/hearts/syncbase/watch/watch.go
+++ b/go/src/hearts/syncbase/watch/watch.go
@@ -45,7 +45,6 @@
fmt.Println("Unmarshal error:", err)
}
key := c.Row
- fmt.Println(key, string(value))
userID, _ := strconv.Atoi(strings.Split(key, "/")[1])
u.UserData[userID] = valueMap
} else {
@@ -70,6 +69,7 @@
fmt.Println("Value error:", err)
}
valueStr := string(value)
+ fmt.Println(valueStr)
keyType := strings.Split(key, "/")[1]
switch keyType {
case "log":
@@ -87,7 +87,13 @@
onReady(valueStr, u)
}
case "players":
- onPlayers(key, valueStr, u)
+ switch strings.Split(key, "/")[3] {
+ case "player_number":
+ onPlayerNum(key, valueStr, u)
+ case "settings_sg":
+ onSettings(key, valueStr, u)
+ }
+
}
} else {
fmt.Println("Unexpected ChangeType: ", c.ChangeType)
@@ -96,22 +102,21 @@
}
}
-func onPlayers(key, value string, u *uistate.UIState) {
+func onPlayerNum(key, value string, u *uistate.UIState) {
userID, _ := strconv.Atoi(strings.Split(key, "/")[2])
playerNum, _ := strconv.Atoi(value)
u.PlayerData[playerNum] = userID
- // user := u.UserData[userID]
- // if user != nil {
- // img := u.Texs[user["avatar"].(string)]
- // name := user["name"].(string)
- // u.CurTable.GetPlayers()[playerNum].SetIconImage(img)
- // u.CurTable.GetPlayers()[playerNum].SetName(name)
- // }
- if u.CurView == uistate.Arrange {
+ if u.CurView == uistate.Arrange && !u.CurTable.AllReadyForNewRound() {
view.LoadArrangeView(u)
}
}
+func onSettings(key, value string, u *uistate.UIState) {
+ joinDone := make(chan bool)
+ go client.JoinSettingsSyncgroup(joinDone, value, u)
+ <-joinDone
+}
+
func onDeal(value string, u *uistate.UIState) {
playerInt, curCards := parsePlayerAndCards(value, u)
u.CurTable.GetPlayers()[playerInt].SetHand(curCards)
diff --git a/go/src/hearts/touchhandler/touchhandler.go b/go/src/hearts/touchhandler/touchhandler.go
index d7e545a..ac92827 100644
--- a/go/src/hearts/touchhandler/touchhandler.go
+++ b/go/src/hearts/touchhandler/touchhandler.go
@@ -106,12 +106,15 @@
buttonList := findClickedButton(t, u)
if len(buttonList) > 0 {
if buttonList[0] == u.Buttons[0] {
- ch := make(chan string)
- go server.CreateSyncgroups(ch, u)
- gameStartData := <-ch
- logName := <-ch
- settingsName := <-ch
+ logCh := make(chan string)
+ settingsCh := make(chan string)
+ go server.CreateLogSyncgroup(logCh, u)
+ go server.CreateSettingsSyncgroup(settingsCh, u)
+ gameStartData := <-logCh
+ logName := <-logCh
+ settingsName := <-settingsCh
if logName != "" && settingsName != "" {
+ gamelog.LogSettingsName(settingsName, u)
u.ScanChan <- true
u.ScanChan = nil
u.SGChan = make(chan bool)
@@ -121,11 +124,20 @@
} else {
for _, b := range u.Buttons {
if buttonList[0] == b {
- joinDone := make(chan bool)
+ joinLogDone := make(chan bool)
+ joinSettingsDone := make(chan bool)
settingsAddr := b.GetInfo()[0]
logAddr := b.GetInfo()[1]
- go client.JoinSyncgroups(joinDone, logAddr, settingsAddr, u)
- if success := <-joinDone; success {
+ go client.JoinLogSyncgroup(joinLogDone, logAddr, u)
+ go client.JoinSettingsSyncgroup(joinSettingsDone, settingsAddr, u)
+ <-joinSettingsDone
+ if success := <-joinLogDone; success {
+ settingsCh := make(chan string)
+ go server.CreateSettingsSyncgroup(settingsCh, u)
+ sgName := <-settingsCh
+ if sgName != "" {
+ gamelog.LogSettingsName(sgName, u)
+ }
u.ScanChan <- true
u.ScanChan = nil
view.LoadArrangeView(u)
@@ -150,7 +162,9 @@
gamelog.LogReady(u)
}
gamelog.LogPlayerNum(u)
- view.LoadWaitingView(u)
+ if !u.CurTable.AllReadyForNewRound() {
+ view.LoadWaitingView(u)
+ }
}
}