修改playroom bug
This commit is contained in:
parent
f4268d781a
commit
a020d44b5c
@ -377,6 +377,7 @@ func (ad *GameLogic) GetSimplePlayerByUid(Id int) *PlayerSimpleData {
|
||||
Idstr := strconv.Itoa(Id)
|
||||
Value, _ := db.RedisGetKey(Idstr)
|
||||
player := &PlayerSimpleData{}
|
||||
player.Playroom = make(map[int]int)
|
||||
player.Uid = Id
|
||||
if Value == "" {
|
||||
p := new(Player)
|
||||
|
||||
@ -150,5 +150,24 @@ func LimitedTimePlayroomTrigger(p *Player, Id int) {
|
||||
p.SendClientRes()
|
||||
}, "Playroom")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func LimitedTimePlayroomWorkTrigger(p *Player) {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
EndTime := PlayroomMod.Endtime
|
||||
Now := GoUtil.Now()
|
||||
if EndTime > 0 && EndTime <= Now {
|
||||
PlayroomMod.ResetWork()
|
||||
p.PlayMod.save()
|
||||
PlayroomBackData(p)
|
||||
p.SendClientRes()
|
||||
return
|
||||
}
|
||||
if EndTime > 0 {
|
||||
NextSecond := EndTime - GoUtil.Now()
|
||||
p.CallEvent(time.Duration(NextSecond)*time.Second, func() {
|
||||
LimitedTimePlayroomWorkTrigger(p)
|
||||
p.SendClientRes()
|
||||
}, "PlayroomWork")
|
||||
}
|
||||
}
|
||||
|
||||
@ -344,6 +344,7 @@ func (p *Player) Login() {
|
||||
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_ENTER)
|
||||
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_FOOD)
|
||||
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_CLEAN)
|
||||
LimitedTimePlayroomWorkTrigger(p)
|
||||
ActivityLogin(p)
|
||||
p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
||||
}
|
||||
@ -714,6 +715,10 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
|
||||
simple.Login = int64(Base.Data.LoginTime)
|
||||
simple.Loginout = int64(Base.Data.LogoutTime)
|
||||
simple.FaceBook = Base.Data.FaceBookId
|
||||
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
|
||||
simple.Playroom = p.PlayMod.getPlayroomMod().Room
|
||||
simple.Chess = p.PlayMod.getChessMod().GetChessList()
|
||||
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -732,6 +737,7 @@ func (p *Player) UpdateUserInfo() {
|
||||
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
|
||||
simple.Playroom = p.PlayMod.getPlayroomMod().Room
|
||||
simple.Chess = p.PlayMod.getChessMod().GetChessList()
|
||||
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
|
||||
value, _ := json.Marshal(simple)
|
||||
IdStr := strconv.Itoa(int(p.M_DwUin))
|
||||
db.RedisSetKey(IdStr, string(value), 0)
|
||||
|
||||
@ -221,6 +221,7 @@ func handle(p *Player, m *msg.Msg) error {
|
||||
p.HandleLoseItem(Items, "")
|
||||
} else {
|
||||
PlayroomMod.Lose(Items)
|
||||
p.PushClientRes(PlayroomMod.NotifyLose())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@ -476,6 +477,7 @@ func PlayroomOrderTrigger(p *Player) error {
|
||||
}
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
PlayroomMod.CreateOrderReward(Star, p.PlayMod.getItemMod())
|
||||
PlayroomBackData(p)
|
||||
p.PlayMod.save()
|
||||
return nil
|
||||
}
|
||||
@ -493,15 +495,7 @@ func PlayroomBackData(p *Player) {
|
||||
if ps == nil {
|
||||
continue
|
||||
}
|
||||
if FriendMod.CheckFriend(k) {
|
||||
FriendList = append(FriendList, &proto.FriendRoom{
|
||||
Uid: int32(k),
|
||||
Name: ps.Name,
|
||||
Face: int32(ps.Face),
|
||||
Avatar: int32(ps.Avatar),
|
||||
Times: int32(v.Times),
|
||||
})
|
||||
} else {
|
||||
if !FriendMod.CheckFriend(k) {
|
||||
Opponent = append(Opponent, &proto.RoomOpponent{
|
||||
Uid: int32(k),
|
||||
Name: ps.Name,
|
||||
@ -511,6 +505,21 @@ func PlayroomBackData(p *Player) {
|
||||
})
|
||||
}
|
||||
}
|
||||
Friend := FriendMod.GetFriendList()
|
||||
for _, v := range Friend {
|
||||
ps := G_GameLogicPtr.GetSimplePlayerByUid(v)
|
||||
if ps == nil {
|
||||
continue
|
||||
}
|
||||
Times, _ := PlayroomMod.GetVisitorInfo(v)
|
||||
FriendList = append(FriendList, &proto.FriendRoom{
|
||||
Uid: int32(v),
|
||||
Name: ps.Name,
|
||||
Face: int32(ps.Face),
|
||||
Avatar: int32(ps.Avatar),
|
||||
Times: int32(Times),
|
||||
})
|
||||
}
|
||||
r.Opponent = Opponent
|
||||
r.Friend = FriendList
|
||||
Collect := make([]int32, 0)
|
||||
@ -534,12 +543,18 @@ func PlayroomVisit(p *Player, Uid int) {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
r := &proto.ResPlayroomInfo{}
|
||||
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
|
||||
Now := GoUtil.Now()
|
||||
Work := false
|
||||
if PlayerData.WorkStart > 0 && PlayerData.WorkStart+86400 > Now {
|
||||
Work = true
|
||||
}
|
||||
r.Uid = int32(Uid)
|
||||
r.Name = PlayerData.Name
|
||||
r.Face = int32(PlayerData.Face)
|
||||
r.Avatar = int32(PlayerData.Avatar)
|
||||
r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom)
|
||||
r.GameId = int32(PlayroomMod.GameId)
|
||||
r.Defense = Work
|
||||
Items := make(map[int32]*proto.ItemInfo, 0)
|
||||
for k, v := range PlayroomMod.GameReward {
|
||||
Items[int32(k)] = &proto.ItemInfo{
|
||||
@ -628,6 +643,9 @@ func EmitRetireTrigger1(p *Player) {
|
||||
EmitId := make(map[string]struct{}, 0)
|
||||
for _, v := range EmitList {
|
||||
Emit_Id := mergeDataCfg.GetEmitId(v)
|
||||
if Emit_Id == "" {
|
||||
continue
|
||||
}
|
||||
EmitId[Emit_Id] = struct{}{}
|
||||
}
|
||||
EmitId1 := make([]string, 0)
|
||||
|
||||
@ -2738,6 +2738,12 @@ func ReqPlayroomInfo(args []interface{}) error {
|
||||
if req.Uid == 0 {
|
||||
Targer = PlayroomMod.GetTarget()
|
||||
}
|
||||
if req.Uid == -1 {
|
||||
Targer = GetVisitorPlayer(player)
|
||||
}
|
||||
if Targer == 0 {
|
||||
return fmt.Errorf("ReqPlayroomInfo no target")
|
||||
}
|
||||
PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer)
|
||||
PlayroomMod.SetTarget(Targer)
|
||||
if PlayerData.Loginout < GoUtil.Now()-300 {
|
||||
@ -2905,7 +2911,8 @@ func ReqPlayroomSelectReward(args []interface{}) error {
|
||||
func ReqPlayroomLose(args []interface{}) error {
|
||||
_, player, _ := ParseArgs(args)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
PlayroomMod.ResetGame()
|
||||
PlayroomMod.ResetLose()
|
||||
player.PushClientRes(PlayroomMod.NotifyLose())
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -2923,6 +2930,11 @@ func ReqPlayroomWork(args []interface{}) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
// 开始工作 设置定时器
|
||||
if Items != nil {
|
||||
LimitedTimePlayroomWorkTrigger(player)
|
||||
player.UpdateUserInfo()
|
||||
}
|
||||
err = player.HandleItem(Items, "playroomWork")
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomWork{
|
||||
@ -3016,7 +3028,12 @@ func ReqPlayroomFlip(args []interface{}) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
err = player.HandleItem(Items, "playroomFlip")
|
||||
Items1 := Items
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_PET_THIEF) {
|
||||
Items1 = item.Merge(Items1, Items1)
|
||||
}
|
||||
err = player.HandleItem(Items1, "playroomFlip")
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomFlip{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
|
||||
@ -14,6 +14,7 @@ type PlayerSimpleData struct {
|
||||
FaceBookPic string
|
||||
Playroom map[int]int
|
||||
Chess []int
|
||||
WorkStart int64
|
||||
}
|
||||
|
||||
type VarGoldCard struct {
|
||||
|
||||
@ -57,9 +57,6 @@ func (cb *ChessBorad) InitData() {
|
||||
cb.ChessBag.List[i] = ChessBagGrid{}
|
||||
}
|
||||
}
|
||||
if cb.RetireChessMap == nil {
|
||||
cb.RetireChessMap = make(map[string][]int)
|
||||
}
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) ver() {
|
||||
@ -76,6 +73,15 @@ func (cb *ChessBorad) ver() {
|
||||
if cb.ChessMap == nil {
|
||||
cb.ChessMap = make(map[string]int32)
|
||||
}
|
||||
if cb.RetireChessMap == nil {
|
||||
cb.RetireChessMap = make(map[string][]int)
|
||||
}
|
||||
if cb.Retire == nil {
|
||||
cb.Retire = make(map[string]int)
|
||||
}
|
||||
if cb.Honor == nil {
|
||||
cb.Honor = make(map[int]int)
|
||||
}
|
||||
}
|
||||
|
||||
// 棋子合成
|
||||
@ -228,6 +234,9 @@ func (cb *ChessBorad) GetEmitList() []int {
|
||||
result := make([]int, 0, len(cb.EmitList))
|
||||
for k, v := range cb.EmitList {
|
||||
EmitID := mergeDataCfg.GetEmitId(k)
|
||||
if EmitID == "" {
|
||||
continue
|
||||
}
|
||||
if cb.Retire[EmitID] == 2 {
|
||||
continue
|
||||
}
|
||||
|
||||
@ -98,6 +98,13 @@ func (f *FriendMod) CheckApply(id int) bool {
|
||||
func (f *FriendMod) GetFriendNum() int {
|
||||
return len(f.FriendList)
|
||||
}
|
||||
func (f *FriendMod) GetFriendList() []int {
|
||||
var list []int
|
||||
for k, _ := range f.FriendList {
|
||||
list = append(list, k)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
func (f *FriendMod) AddFriendApply(Uid int) {
|
||||
f.ApplyList[Uid] = GoUtil.Now()
|
||||
|
||||
@ -256,6 +256,10 @@ func (p *PlayroomMod) ResetGame() {
|
||||
p.GameReward = make(map[int]*item.Item)
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) ResetLose() {
|
||||
p.LoseItem = make([]*item.Item, 0)
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) SetGameReward(Chess1, Chess2, Star int) {
|
||||
p.GameReward[1] = &item.Item{Id: Chess1, Num: 1}
|
||||
p.GameReward[2] = &item.Item{Id: Chess2, Num: 1}
|
||||
@ -290,6 +294,19 @@ func (p *PlayroomMod) Rest() {
|
||||
p.WorkStatus = 2
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) ResetWork() {
|
||||
p.WorkStatus = 0
|
||||
p.Starttime = 0
|
||||
p.Endtime = 0
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) GetVisitorInfo(Id int) (int, int64) {
|
||||
v, ok := p.Visitor[Id]
|
||||
if !ok {
|
||||
return 0, 0
|
||||
}
|
||||
return v.Times, v.Time
|
||||
}
|
||||
func (p *PlayroomMod) Draw() (int, []*item.Item, error) {
|
||||
if p.AllMood < 100 {
|
||||
return 0, nil, fmt.Errorf("Draw AllMood < 100")
|
||||
@ -307,6 +324,12 @@ func (p *PlayroomMod) NotifyWork() *msg.NotifyPlayroomWork {
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) NotifyLose() *msg.NotifyPlayroomLose {
|
||||
return &msg.NotifyPlayroomLose{
|
||||
LoseItem: item.ItemToMsg(p.LoseItem),
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) NotifyMood() *msg.NotifyPlayroomMood {
|
||||
Mood := make(map[int32]int32, 0)
|
||||
for k, v := range p.MoodInfo {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user