func OnOpenDice(m game.JsonString, c net.Conn) { fmt.Println("OnOpenDice") uid := m.GetUid() rep := game.OpenRep{} rep.Op = "open_dice" rep.Uid = uid r, ok := m.GetRound(Casino) if ok == false || r.Status != common.GS_ROLL { rep.Ret = common.RET_FL game.SendMsg(c, rep) fmt.Println("OnOpenDice fail", ok, r.Status) return } rep.Ret = common.RET_OK r.Open() ubl := GetPlayerBalance(r.Players) rep.PointsList = make([]game.PointRep, 0) for _, player := range r.Players { pr := game.PointRep{player.Uid, player.Points, ubl[player.Uid]} rep.PointsList = append(rep.PointsList, pr) } r.Broadcast(rep) fmt.Println("OnOpenDice rep:", rep) }
func OnLogin(m game.JsonString, c net.Conn) { fmt.Println("OnLogin") uid, cid, t, name := m.GetUid(), m.GetCid(), m.GetTime(), m.GetName() diff := time.Now().Unix() - t if diff >= common.ENDURE_SEC || diff < 0 { rep := game.LoginRep{common.RET_TME, uid, 0, 0, 0, "login"} game.SendMsg(c, rep) return } award, lost := TimeCheck(uid) fmt.Println("time check", award, lost) bal, _ := db.ModifyBalance(uid, int32(award-lost)) //bal := mod_ret.Balance db.SetLoginTime(uid) db.SetName(uid, name) r, ok := m.GetRound(Casino) if ok == false { // 创建 r = &game.Round{0, make(map[uint32]game.User, common.MAX_USER), make(map[uint32]game.Player, common.MAX_PLAYER), 0} Casino[cid] = r } user := game.User{c, uid} ret := r.Login(user, cid) rep := game.LoginRep{ret, uid, award, lost, bal, "login"} if ret == common.RET_OK { r.Broadcast(rep) } else { game.SendMsg(c, rep) } fmt.Println("Login rep:", rep) }
func OnRollingDice(m game.JsonString, c net.Conn) { fmt.Println("OnRollingice") r, ok := m.GetRound(Casino) if ok == false || r.Status != common.GS_OPEN { uid := m.GetUid() rep := game.RollRep{common.RET_FL, uid, "", "rolling_dice"} game.SendMsg(c, rep) fmt.Println("OnRollingDice fail", ok, r.Status) return } r.Roll() for _, player := range r.Players { rep := game.RollRep{common.RET_OK, player.Uid, player.Points, "rolling_dice"} game.SendMsg(player.Conn, rep) fmt.Println("OnRollingDice rep:", rep) } for _, user := range r.Users { rep := game.RollRep{common.RET_OK, user.Uid, "", "rolling_dice"} game.SendMsg(user.Conn, rep) } }
func OnUserList(m game.JsonString, c net.Conn) { fmt.Println("OnUserList") uid, cid := m.GetUid(), m.GetCid() rep := game.UserListRep{} rep.Ret = common.RET_OK rep.Uid = uid rep.Cid = cid r, ok := m.GetRound(Casino) if ok == false { rep.Ret = common.RET_FL game.SendMsg(c, rep) fmt.Println("OnUserList did not found round") return } rep.Status = r.Status rep.Op = "user_list" rep.UserList = make([]game.UserRep, 0) //+ ubl := GetPlayerBalance(r.Players) for _, player := range r.Players { ur := game.UserRep{player.Uid, player.Pos, ubl[player.Uid]} rep.UserList = append(rep.UserList, ur) } for _, user := range r.Users { ur := game.UserRep{user.Uid, 0, 0} rep.UserList = append(rep.UserList, ur) } game.SendMsg(c, rep) fmt.Println("OnUserList rep:", rep) }
func OnLogout(m game.JsonString, c net.Conn) { fmt.Println("OnLogout") uid, cid := m.GetUid(), m.GetCid() r, ok := m.GetRound(Casino) if ok { uid := m.GetUid() r.Logout(uid) } _, ok = ticker.Active[cid] if ok { delete(ticker.Active[cid], uid) } db.SetLogoutTime(uid) rep := game.LogoutRep{0, uid, "logout"} r.Broadcast(rep) fmt.Println("OnLogout rep:", rep) }
func OnGiveCoin(m game.JsonString, c net.Conn) { fmt.Println("OnGiveCoin") coin, uid, tuid := m.GetCoin(), m.GetUid(), m.GetTargetUid() r, ok := m.GetRound(Casino) if ok == false { rep := game.GiveCoinRep{common.RET_FL, uid, tuid, coin, "give_coin"} game.SendMsg(c, rep) return } ret := common.RET_OK _, err1 := db.ModifyBalance(uid, -coin) _, err2 := db.ModifyBalance(tuid, coin) db.SetDayCounter(uid, -coin) db.SetDayCounter(tuid, coin) if err1 != nil || err2 != nil { ret = common.RET_FL } rep := game.GiveCoinRep{ret, uid, tuid, coin, "give_coin"} r.Broadcast(rep) }
func OnJoin(m game.JsonString, c net.Conn) { fmt.Println("OnJoin") uid := m.GetUid() rep := game.JoinRep{common.RET_FL, uid, 0, 0, "join"} r, ok := m.GetRound(Casino) if ok == false { game.SendMsg(c, rep) fmt.Println("OnJoin did not found round") return } pos := m.GetPos() rep.Pos, rep.Ret = pos, r.Join(game.Player{game.User{c, uid}, pos, ""}) if rep.Ret == common.RET_OK { bal, _ := db.GetBalance([]uint32{uid}) rep.Coin = bal[uid] r.Broadcast(rep) } else { game.SendMsg(c, rep) } fmt.Println("OnJoin rep:", rep) }