package main import ( // "WorldTester/conf" db "WorldTester/db" "WorldTester/pb" "common/logger" "log" "math/rand" "net" ) func init() { RegisterMessage(pb.MSGID_MsgID_Logon_Response, &pb.ResponseLogon{}, LoginResponseHandler) RegisterMessage(pb.MSGID_MsgID_CreateClub_Response, &pb.ResponseCreateClub{}, CreateClubResponseHandler) RegisterMessage(pb.MSGID_MsgID_JoinClub_Notice, &pb.NoticeJoinClub{}, JoinClubNoticeHandler) RegisterMessage(pb.MSGID_MsgID_ClubSnapshotList_Notice, &pb.NoticeClubSnapshotList{}, GetClubListNoticeHandler) RegisterMessage(pb.MSGID_MsgID_ClubCreaterInfo_Notice, &pb.NoticeClubCreaterInfo{}, GetClubCreaterInfoNoticeHandler) RegisterMessage(pb.MSGID_MsgID_ClubMemberSnapshotList_Notice, &pb.NoticeClubMemberSnapshotList{}, GetClubMemberSnapshotListHandler) RegisterMessage(pb.MSGID_MsgID_PurchaseClubLevel_Notice, &pb.NoticePurchaseClubLevel{}, PurchaseClubLevelHandler) RegisterMessage(pb.MSGID_MsgID_RechargeClubFund_Response, &pb.ResponseRechargeClubFund{}, RechargeClubFundHandler) RegisterMessage(pb.MSGID_MsgID_GrantClubFund_Response, &pb.ResponseGrantClubFund{}, GrantClubFundRespHandler) RegisterMessage(pb.MSGID_MsgID_ModifyClubInfo_Response, &pb.ResponseModifyClubInfo{}, ModifyClubInfoRespHandler) RegisterMessage(pb.MSGID_MsgID_SearchClubInfo_Notice, &pb.NoticeSearchClubInfo{}, GetSearchClubInfoHandler) RegisterMessage(pb.MSGID_MsgID_GetUserData_Notice, &pb.NoticeGetUserData{}, GetGetUserDataHandler) } func GetClubMemberSnapshotListHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("GetClubMemberSnapshotListHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeClubMemberSnapshotList) Clubids, _ := db.GetAdminClubs(int(header.PlayerID)) for _, clubid := range Clubids { for _, info := range resp.Snapshots { log.Println("info.ClubName", info.MemberName) SendModifyClubMember(GetPlayer(header.PlayerID), int32(clubid), info.MemberUid) SendGrantClubFund(GetPlayer(header.PlayerID), int32(clubid), info.MemberUid) } } } func ModifyClubMemberNoticeHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("ModifyClubMemberNoticeHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeModifyClubMember) log.Println("CreatePlayerName", resp.TargetPlayerName) } func ModifyClubInfoRespHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("ModifyClubInfoRespHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.ResponseModifyClubInfo) log.Println("ModifyClubInfoRespHandler", resp.Error) } func GrantClubFundRespHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("ModifyClubMemberNoticeHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.ResponseGrantClubFund) log.Println("GrantClubFundRespHandler", resp.Error) } func RechargeClubFundHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("RechargeClubFundHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.ResponseRechargeClubFund) log.Println("RechargeClubFundHandler", resp.Error) } func PurchaseClubLevelHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("PurchaseClubLevelHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticePurchaseClubLevel) log.Println("ExpireTime", resp.ExpireTime) } func GetClubCreaterInfoNoticeHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("GetClubCreaterInfoNoticeHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeClubCreaterInfo) log.Println("CreatePlayerName", resp.CreatePlayerName) } func GetSearchClubInfoHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("GetSearchClubInfoHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeSearchClubInfo) log.Println("CreatePlayerName", resp.Snapshots.ClubName) } func GetGetUserDataHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("GetGetUserDataHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeGetUserData) log.Println("UserName", resp.UserName) } func LoginResponseHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { resp := msg.(*pb.ResponseLogon) v := m_map_players.Get(header.PlayerID) if v == nil { logger.Info("recvd login message response:%+v header:%+v not found playerid", *resp, header) return } if resp.Error != 1 { logger.Info("uid %d login failed with error:%+v", header.PlayerID, resp.Error) return } player := v.(*PlayerInfo) player.state = STATE_PLAYER_LOGINED log.Println("player.isHost:", player.isHost) if player.isHost { SendCreateClub(player) } else { SendJoinClub(player) log.Println("SendJoinClub") } } func CreateClubResponseHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { resp := msg.(*pb.ResponseCreateClub) logger.Info("create club response message noti:%+v header:%+v", *resp, header) log.Println("create club response message noti:%+v header:%+v", *resp, header) v := m_map_players.Get(header.PlayerID) if v == nil { logger.Info("recvd create message response:%+v header:%+v not found playerid", *resp, header) return } // if resp.Error != 1 { // logger.Info("uid %d create room failed with error:%+v", header.PlayerID, resp.Error) // return // } player := v.(*PlayerInfo) log.Println("CreateClubResponseHandler-player.isHost:", player.isHost) if player.isHost { SendGetClubList(player) } } func JoinClubNoticeHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("JoinClubNoticeHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeJoinClub) player := GetPlayer(header.PlayerID) if player == nil { logger.Info("uid not found uid:%+v", header.PlayerID) return } SendJoinClubReply(player, 1, resp.ClubId, resp.ClubUid) } func GetClubListNoticeHandler(conn net.Conn, header pb.MessageHeader, msg interface{}) { log.Println("GetClubListNoticeHandler-header.PlayerID:", header.PlayerID) resp := msg.(*pb.NoticeClubSnapshotList) for _, Clubinfo := range resp.List { log.Println("Clubinfo.ClubName", Clubinfo.ClubName) if createrid, err := db.GetClubCreaterId(int(Clubinfo.ClubId)); err == nil { player := GetPlayer(uint32(createrid)) if player != nil { log.Println("$$$createrid:", createrid) SendSearchClubInfo(player, Clubinfo.ClubId) SendGetClubCreaterInfo(player, Clubinfo.ClubId) SendGetClubMemberSnapshotList(player, Clubinfo.ClubId) } } } } func getHostPlayer(room *RoomInfo) *PlayerInfo { for _, uid := range room.ids { p := m_map_players.Get(uid) player, _ := p.(*PlayerInfo) if player.isHost == true { return player } } return nil } func getRoomHostID(rid uint32) uint32 { v := m_map_rooms.Get(rid) if v == nil { return 0 } room, _ := v.(*RoomInfo) host := getHostPlayer(room) if host == nil { return 0 } return host.uid } func getMyAction(player *PlayerInfo, minbet uint32) (ignore bool, action pb.ActionType, bet uint32) { //r := rand.Intn(100) ignore = true //action = pb.ActionType_Enum_Action_Null bet = 0 /* if r < 10 { //10%概率不做动作,让服务器做超时 return } */ ignore = false if minbet == 0 { //fold or check r := rand.Intn(100) if r < 10 { action = pb.ActionType_Enum_Action_Fold } else if r < 30 { action = pb.ActionType_Enum_Action_Bet bet = 50 } else { action = pb.ActionType_Enum_Action_Check } } else { //call or raise or allin or fold r := rand.Intn(100) if r < 20 { action = pb.ActionType_Enum_Action_Raise bet = 2 * (minbet - player.roundBet) if bet > player.leftMoney { bet = minbet - player.roundBet action = pb.ActionType_Enum_Action_Call if bet > player.leftMoney { bet = 0 action = pb.ActionType_Enum_Action_Fold } } } else if r < 30 { action = pb.ActionType_Enum_Action_Fold } else if r < 95 { action = pb.ActionType_Enum_Action_Call bet = minbet - player.roundBet } else { action = pb.ActionType_Enum_Action_Allin bet = player.leftMoney } } player.leftMoney -= bet logger.Info("bet money uid:%v bet:%v left:%v roundbet:%v", player.uid, bet, player.leftMoney, player.roundBet) return }