Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions database/mahjong.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
"strconv"
"strings"

"github.com/feel-easy/mahjong/card"
"github.com/feel-easy/mahjong/consts"
"github.com/feel-easy/mahjong/event"
"github.com/feel-easy/mahjong/game"
"github.com/feel-easy/mahjong/tile"
"github.com/mikodream/mahjong/card"
"github.com/mikodream/mahjong/consts"
"github.com/mikodream/mahjong/event"
"github.com/mikodream/mahjong/game"
"github.com/mikodream/mahjong/tile"
"github.com/ratel-online/core/log"
rconsts "github.com/ratel-online/server/consts"
)
Expand All @@ -33,7 +33,7 @@ func (game *Mahjong) Clean() {

type OP struct {
operation int
tiles []int
tiles []card.ID
}

func circled(n int) string {
Expand Down Expand Up @@ -69,7 +69,7 @@ func (mp *MahjongPlayer) OnPlayTile(payload event.PlayTilePayload) {
Broadcast(p.RoomID, fmt.Sprintf("%s PlayTile %s !\n", payload.PlayerName, tile.Tile(payload.Tile)), p.ID)
}

func (mp *MahjongPlayer) Take(tiles []int, gameState game.State) (int, []int, error) {
func (mp *MahjongPlayer) Take(tiles []card.ID, gameState game.State) (int, []card.ID, error) {
p := GetPlayer(mp.ID)
Broadcast(p.RoomID, fmt.Sprintf("It's %s take mahjong! \n", p.Name), p.ID)
buf := bytes.Buffer{}
Expand All @@ -85,7 +85,7 @@ func (mp *MahjongPlayer) Take(tiles []int, gameState game.State) (int, []int, er
case consts.GANG:
askBuf.WriteString("You can 杠!!!\n")
label := strconv.Itoa(labelCounter)
ts := []int{gameState.LastPlayedTile, gameState.LastPlayedTile, gameState.LastPlayedTile}
ts := []card.ID{gameState.LastPlayedTile, gameState.LastPlayedTile, gameState.LastPlayedTile}
tileOptions[label] = &OP{
operation: consts.GANG,
tiles: append(ts, gameState.LastPlayedTile),
Expand All @@ -95,7 +95,7 @@ func (mp *MahjongPlayer) Take(tiles []int, gameState game.State) (int, []int, er
case consts.PENG:
askBuf.WriteString("You can 碰!!!\n")
label := strconv.Itoa(labelCounter)
ts := []int{gameState.LastPlayedTile, gameState.LastPlayedTile}
ts := []card.ID{gameState.LastPlayedTile, gameState.LastPlayedTile}
tileOptions[label] = &OP{
operation: consts.PENG,
tiles: append(ts, gameState.LastPlayedTile),
Expand All @@ -120,7 +120,7 @@ func (mp *MahjongPlayer) Take(tiles []int, gameState game.State) (int, []int, er
askBuf.WriteString(fmt.Sprintf("%s. %s \n", circled(labelCounter), "no"))
tileOptions[label] = &OP{
operation: 0,
tiles: []int{},
tiles: []card.ID{},
}
loopCount := 0
for {
Expand Down Expand Up @@ -152,7 +152,7 @@ func (mp *MahjongPlayer) Take(tiles []int, gameState game.State) (int, []int, er
}
}

func (mp *MahjongPlayer) Play(tiles []int, gameState game.State) (int, error) {
func (mp *MahjongPlayer) Play(tiles []card.ID, gameState game.State) (card.ID, error) {
p := GetPlayer(mp.ID)
Broadcast(p.RoomID, fmt.Sprintf("It's %s turn! \n", p.Name), p.ID)
buf := bytes.Buffer{}
Expand All @@ -161,8 +161,8 @@ func (mp *MahjongPlayer) Play(tiles []int, gameState game.State) (int, error) {
p.WriteString(buf.String())
askBuf := bytes.Buffer{}
askBuf.WriteString("Select a tile to play:\n")
tileOptions := make(map[string]int)
sort.Ints(tiles)
tileOptions := make(map[string]card.ID)
sort.Slice(tiles, func(i, j int) bool { return tiles[i] < tiles[j] })
for idx, i := range tiles {
label := strconv.Itoa(idx + 1)
tileOptions[label] = i
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ go 1.22

require (
github.com/awesome-cap/hashmap v0.0.0-20211211100532-e3300ac4ae14
github.com/feel-easy/mahjong v0.0.0-20220721030133-7a0f4032c008
github.com/feel-easy/uno v0.0.0-20220721061415-e6a3189cfd70
github.com/gorilla/websocket v1.4.2
github.com/mikodream/mahjong v0.0.0-20260226093636-4e0f6b9a759a
github.com/ratel-online/core v0.0.0-20250225062905-81b6faff6d25
github.com/spf13/cast v1.6.0
)

require (
Expand All @@ -18,6 +19,5 @@ require (
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/spf13/cast v1.6.0 // indirect
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
)
30 changes: 12 additions & 18 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/feel-easy/mahjong v0.0.0-20220721030133-7a0f4032c008 h1:bhsYIxvD3J1bZbS7A7f2YPxadvy909nRRHZ96VBTvGE=
github.com/feel-easy/mahjong v0.0.0-20220721030133-7a0f4032c008/go.mod h1:qDtjtiCnj2u+T0GCOd3ky4gi/0Nx2iDglGC/U9k8SYg=
github.com/feel-easy/uno v0.0.0-20220721061415-e6a3189cfd70 h1:c5e8UeFNbIPsWKMS/arf/VYfGgrKRFUQbdPOfRn0nlE=
github.com/feel-easy/uno v0.0.0-20220721061415-e6a3189cfd70/go.mod h1:SJtQw6YT+CnOWLq21s/NiQeB9UjMkf6ftomfhqrI1Ng=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
Expand All @@ -27,12 +29,18 @@ github.com/hashicorp/memberlist v0.2.4/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/mikodream/mahjong v0.0.0-20260226093636-4e0f6b9a759a h1:LBjgzGWZaqRWt/vV0iYVyblpgPZ1DUBFPoecTG78sjw=
github.com/mikodream/mahjong v0.0.0-20260226093636-4e0f6b9a759a/go.mod h1:tPMD6XVR+rndBolA9teNb9i7NK4cOlFRdN+E6jT4yTY=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
Expand All @@ -41,28 +49,16 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/ratel-online/core v0.0.0-20220717092113-9fdec75dd055 h1:DUGSs+HCGwcOpCi24lCUfMXM3TbzRRT7ewLC/4hlIL0=
github.com/ratel-online/core v0.0.0-20220717092113-9fdec75dd055/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/ratel-online/core v0.0.0-20240410105638-a7e4146f84bc h1:aDktTjLc2Y9dRh1dD2NXlt3ObqAQI64rbhfmVDwIuVU=
github.com/ratel-online/core v0.0.0-20240410105638-a7e4146f84bc/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/ratel-online/core v0.0.0-20240410123929-a9a4ad51dc6b h1:RNJtWkOx8XGsDhT6APZk4wYpxzs3r/B0h1n/GyP7ids=
github.com/ratel-online/core v0.0.0-20240410123929-a9a4ad51dc6b/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/ratel-online/core v0.0.0-20240411045052-840504c4e7fc h1:usJbCKX8e1eLyeWc/Alm9IqPHVEwgPWz0sh6MX5dY08=
github.com/ratel-online/core v0.0.0-20240411045052-840504c4e7fc/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/ratel-online/core v0.0.0-20240411101817-d5cb908bcf49 h1:yESHztiCxllI22QToTpUcQS/MPzeQmxVIpzZdv+fHZM=
github.com/ratel-online/core v0.0.0-20240411101817-d5cb908bcf49/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/ratel-online/core v0.0.0-20240412044054-42ffde55324d h1:F8Qcc9aUnNv5716ITYXlYKxuoWYDMTXAbBVwjDUmrsI=
github.com/ratel-online/core v0.0.0-20240412044054-42ffde55324d/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/ratel-online/core v0.0.0-20250225062905-81b6faff6d25 h1:9vdciSkTnXNoZkTqOe9rSP40PGRvNk/OzYxPCmWGh1c=
github.com/ratel-online/core v0.0.0-20250225062905-81b6faff6d25/go.mod h1:8SYaPGDk9dVGnUIEkanZvV1ErTqd8OdedKNCwyXgRjI=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0=
github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
Expand All @@ -83,7 +79,5 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
Loading
Loading