feat: add characters
This commit is contained in:
+7
-6
@@ -391,13 +391,14 @@ func (h *Hub) removeFromTable(t *pendingTable, c *Client) {
|
||||
func (h *Hub) broadcastLobby(t *pendingTable) {
|
||||
players := make([]lobbyPlayer, len(t.clients))
|
||||
for i, cl := range t.clients {
|
||||
_, _, avatar, frame := h.settler.PlayerProfile(cl.UserID)
|
||||
_, _, avatar, frame, avatarImg := h.settler.PlayerProfile(cl.UserID)
|
||||
players[i] = lobbyPlayer{
|
||||
Name: cl.Name,
|
||||
Avatar: avatar,
|
||||
Frame: frame,
|
||||
Host: cl.UserID == t.host,
|
||||
Seat: t.seatOf(i),
|
||||
Name: cl.Name,
|
||||
Avatar: avatar,
|
||||
Frame: frame,
|
||||
AvatarImg: avatarImg,
|
||||
Host: cl.UserID == t.host,
|
||||
Seat: t.seatOf(i),
|
||||
}
|
||||
}
|
||||
for i, cl := range t.clients {
|
||||
|
||||
@@ -27,10 +27,11 @@ type chatMsg struct {
|
||||
|
||||
// lobbyPlayer یک بازیکن در اتاق انتظارِ میز خصوصی.
|
||||
type lobbyPlayer struct {
|
||||
Name string `json:"name"`
|
||||
Avatar string `json:"avatar"` // seed آواتارِ کاربر
|
||||
Frame string `json:"frame"` // قابِ آواتارِ انتخابی
|
||||
Host bool `json:"host"`
|
||||
Name string `json:"name"`
|
||||
Avatar string `json:"avatar"` // seed آواتارِ کاربر
|
||||
Frame string `json:"frame"` // قابِ آواتارِ انتخابی
|
||||
AvatarImg string `json:"avatar_img"` // شخصیتِ آواتارِ انتخابی (خالی ⇒ تصادفی)
|
||||
Host bool `json:"host"`
|
||||
Seat int `json:"seat"` // جایگاهِ مطلق (۰..۳)
|
||||
}
|
||||
|
||||
@@ -66,8 +67,9 @@ type PlayerInfo struct {
|
||||
Connected bool `json:"connected"`
|
||||
Coins int64 `json:"coins"`
|
||||
RankTier string `json:"rank_tier"` // bronze..king (برای نشانِ رتبه)
|
||||
Avatar string `json:"avatar"` // seed آواتارِ کاربر
|
||||
Frame string `json:"frame"` // قابِ آواتارِ انتخابی (کازمتیک)
|
||||
Avatar string `json:"avatar"` // seed آواتارِ کاربر
|
||||
Frame string `json:"frame"` // قابِ آواتارِ انتخابی (کازمتیک)
|
||||
AvatarImg string `json:"avatar_img"` // شخصیتِ آواتارِ انتخابی (خالی ⇒ تصادفی)
|
||||
}
|
||||
|
||||
// matchedMsg به کلاینت پس از تشکیل میز.
|
||||
|
||||
+3
-1
@@ -41,6 +41,7 @@ type seatInfo struct {
|
||||
rankTier string // نشانِ رتبه برای نمایش سرِ میز
|
||||
avatar string // seed آواتارِ انتخابیِ کاربر (برای نمایش سرِ میز)
|
||||
frame string // قابِ آواتارِ انتخابیِ کاربر (کازمتیک)
|
||||
avatarImg string // شناسهی شخصیتِ آواتارِ انتخابی (خالی ⇒ آواتارِ تصادفی)
|
||||
}
|
||||
|
||||
// auto مشخص میکند جایگاه باید خودکار بازی شود (بات یا قطعشده).
|
||||
@@ -148,7 +149,7 @@ func (r *Room) start() {
|
||||
if s.isBot || s.userID == 0 {
|
||||
continue
|
||||
}
|
||||
s.coins, s.rankTier, s.avatar, s.frame = r.settler.PlayerProfile(s.userID)
|
||||
s.coins, s.rankTier, s.avatar, s.frame, s.avatarImg = r.settler.PlayerProfile(s.userID)
|
||||
}
|
||||
for seat, s := range r.seats {
|
||||
if s.client != nil {
|
||||
@@ -549,6 +550,7 @@ func (r *Room) playersInfo() []PlayerInfo {
|
||||
Seat: i, Name: s.name, Bot: s.isBot,
|
||||
Connected: s.isBot || s.connected,
|
||||
Coins: s.coins, RankTier: s.rankTier, Avatar: s.avatar, Frame: s.frame,
|
||||
AvatarImg: s.avatarImg,
|
||||
}
|
||||
}
|
||||
return out
|
||||
|
||||
@@ -12,8 +12,9 @@ type Settler interface {
|
||||
RecordHand(userID int64, won, kot, asHakem bool) // پایان یک هَند
|
||||
RecordCut(userID int64) // بُرِش با حکم
|
||||
RecordGameResult(userID int64, won bool) // پایان بازی (برد/باخت)
|
||||
// PlayerProfile سکه، نشانِ رتبه، آواتار و قابِ انتخابیِ بازیکن را برای نمایش سرِ میز برمیگرداند.
|
||||
PlayerProfile(userID int64) (coins int64, rankTier string, avatar string, frame string)
|
||||
// PlayerProfile سکه، نشانِ رتبه، آواتار، قاب و شخصیتِ آواتارِ انتخابیِ بازیکن را
|
||||
// برای نمایش سرِ میز برمیگرداند (avatarImg خالی ⇒ آواتارِ تصادفیِ پیشفرض).
|
||||
PlayerProfile(userID int64) (coins int64, rankTier, avatar, frame, avatarImg string)
|
||||
// ChargeTicket یک بلیت برای بُرِ مجدد در فازِ انتخابِ حکم مصرف میکند.
|
||||
ChargeTicket(userID int64) error
|
||||
// ChargeCoins/AwardCoins برای شرطِ سکهایِ میزِ خصوصی (pot). Charge در صورتِ
|
||||
@@ -38,7 +39,9 @@ func (noopSettler) RecordGame(string, string, int, bool) {}
|
||||
func (noopSettler) RecordHand(int64, bool, bool, bool) {}
|
||||
func (noopSettler) RecordCut(int64) {}
|
||||
func (noopSettler) RecordGameResult(int64, bool) {}
|
||||
func (noopSettler) PlayerProfile(int64) (int64, string, string, string) { return 0, "", "", "" }
|
||||
func (noopSettler) PlayerProfile(int64) (int64, string, string, string, string) {
|
||||
return 0, "", "", "", ""
|
||||
}
|
||||
func (noopSettler) ChargeTicket(int64) error { return nil }
|
||||
func (noopSettler) ChargeCoins(int64, int64, string) error { return nil }
|
||||
func (noopSettler) AwardCoins(int64, int64, string) {}
|
||||
|
||||
@@ -481,7 +481,9 @@ func (s *recordingSettler) RecordGameResult(int64, bool) {
|
||||
s.mu.Unlock()
|
||||
}
|
||||
|
||||
func (s *recordingSettler) PlayerProfile(int64) (int64, string, string, string) { return 0, "", "", "" }
|
||||
func (s *recordingSettler) PlayerProfile(int64) (int64, string, string, string, string) {
|
||||
return 0, "", "", "", ""
|
||||
}
|
||||
func (s *recordingSettler) ChargeTicket(int64) error { return nil }
|
||||
func (s *recordingSettler) ChargeCoins(int64, int64, string) error { return nil }
|
||||
func (s *recordingSettler) AwardCoins(int64, int64, string) {}
|
||||
|
||||
Reference in New Issue
Block a user