playroom优化
This commit is contained in:
parent
78b36ce4d4
commit
87983240aa
@ -491,3 +491,17 @@ func GetTaskJackpotReward(Id int) []*item.Item {
|
||||
}
|
||||
return gamedata.GetItemList(data, "Items")
|
||||
}
|
||||
|
||||
func GetPhysiologyList(MoodType int) []int {
|
||||
r := make([]int, 0)
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_PHYSIOLOGY_TYPE)
|
||||
if err != nil {
|
||||
return []int{}
|
||||
}
|
||||
for k, v := range data {
|
||||
if gamedata.GetIntValue(v, "MType") == MoodType {
|
||||
r = append(r, GoUtil.Int(k))
|
||||
}
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
@ -13,6 +13,7 @@ import (
|
||||
MsgMod "server/game/mod/msg" // Ensure this package exists and is correctly referenced
|
||||
"server/game/mod/playroom"
|
||||
"server/msg"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"time"
|
||||
)
|
||||
|
||||
@ -150,27 +151,29 @@ func LimitedTimePlayroomTrigger(p *Player) {
|
||||
}
|
||||
func LimitedTimePlayroomTrigger_(p *Player, Id int) {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
Now := GoUtil.Now()
|
||||
Physiology := PlayroomMod.GetPhysiology(Id)
|
||||
if Physiology == nil {
|
||||
return
|
||||
}
|
||||
NewTime, Num := PlayroomTrigger(Physiology.Id, Physiology.Time, Physiology.Num)
|
||||
NewTime, NextSecond, Num := PlayroomTrigger(Physiology.Id, Physiology.Time, Physiology.Num)
|
||||
Physiology.Time = NewTime
|
||||
DiffValue := Physiology.Num - Num
|
||||
MType, MEffect := playroomCfg.GetMoodEffect(Physiology.Id)
|
||||
CleanMood := PlayroomMod.GetMoodInfo(playroom.MOOD_TYPE_CLEAN)
|
||||
PlayroomMod.AddMood(MType, -MEffect*DiffValue)
|
||||
// 上厕所数值为0 且清洁度大于50时,清洁度降至50
|
||||
if Id == playroom.PHYSIOLOGY_TYPE_TOLIET && Num == 0 && CleanMood.Num > 50 {
|
||||
CleanMood.Num = 50
|
||||
} else {
|
||||
PlayroomMod.AddMood(MType, -MEffect*DiffValue)
|
||||
}
|
||||
log.Debug("PlayroomTrigger Id:%d, Time:%d, Num:%d, NewTime:%d, NextSecond:%d, MType:%d, MEffect:%d, Num :%d", Id, Physiology.Time, Physiology.Num, NewTime, NextSecond, MType, MEffect, Num)
|
||||
Physiology.Num = Num
|
||||
if PlayroomMod.GetMoodInfo(MType).Num == 0 { // 心情值为0时,重置生理状态
|
||||
PlayroomMod.ResetPhysiology(MType)
|
||||
NewTime = 0
|
||||
}
|
||||
p.PlayMod.save()
|
||||
ResNotifyMood := PlayroomMod.NotifyMood()
|
||||
p.PushClientRes(ResNotifyMood)
|
||||
NextSecond := NewTime - Now
|
||||
if NextSecond > 0 {
|
||||
p.CallEvent(time.Duration(NextSecond)*time.Second, func() {
|
||||
p.lock.Lock()
|
||||
@ -181,31 +184,31 @@ func LimitedTimePlayroomTrigger_(p *Player, Id int) {
|
||||
}
|
||||
}
|
||||
|
||||
func PlayroomTrigger(Id int, Time int64, Num int) (int64, int) {
|
||||
func PlayroomTrigger(Id int, Time int64, Num int) (int64, int64, int) {
|
||||
if Num == 0 {
|
||||
return 0, 0
|
||||
return 0, 0, 0
|
||||
}
|
||||
Now := GoUtil.Now()
|
||||
if Time > Now {
|
||||
return Time, Num
|
||||
return Time, Time - Now, Num
|
||||
}
|
||||
if Time == Now {
|
||||
NeedDuration := playroomCfg.GetPhysiologyDuration(Id, Num)
|
||||
return Time + int64(NeedDuration), Num
|
||||
return Now, int64(NeedDuration), Num
|
||||
}
|
||||
n := 0
|
||||
for {
|
||||
if n > 100 {
|
||||
return 0, 0
|
||||
return 0, 0, 0
|
||||
}
|
||||
Num--
|
||||
NeedDuration := playroomCfg.GetPhysiologyDuration(Id, Num)
|
||||
Time += int64(NeedDuration)
|
||||
if Time > Now {
|
||||
return Time, Num
|
||||
if Time >= Now {
|
||||
return Now, int64(NeedDuration), Num
|
||||
}
|
||||
if Num == 0 {
|
||||
return 0, 0
|
||||
return 0, 0, 0
|
||||
}
|
||||
n++
|
||||
}
|
||||
|
||||
@ -3364,7 +3364,7 @@ func ReqPlayroomChip(player *Player, buf []byte) error {
|
||||
})
|
||||
return err
|
||||
}
|
||||
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_PlayroomChip.String())
|
||||
err = player.HandleLoseItem(Items, msg.ITEM_POP_LABEL_PlayroomChip.String())
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomChip{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
|
||||
@ -68,10 +68,8 @@ const (
|
||||
STATUS_VISIT = 1 // 拜访
|
||||
|
||||
MOOD_TYPE_ENTER = 1 // 娱乐
|
||||
MOOD_TYPE_FOOD = 2 // 食物
|
||||
MOOD_TYPE_CLEAN = 3 // 清洁
|
||||
MOOD_TYPE_TAKE = 4 // 照料
|
||||
MOOD_TYPE_PLAY = 5 // 玩耍
|
||||
MOOD_TYPE_CLEAN = 2 // 清洁
|
||||
MOOD_TYPE_FOOD = 3 // 食物
|
||||
|
||||
GAME_RESULT_LOSE = 0 // 输
|
||||
GAME_RESULT_LOW = 1 // 低
|
||||
@ -396,6 +394,14 @@ func (p *PlayroomMod) AddMood(Id, Num int) {
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) GetMoodNum(MoodType int) int {
|
||||
Mood, ok := p.MoodInfo[MoodType]
|
||||
if !ok {
|
||||
return 0
|
||||
}
|
||||
return Mood.Num
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) AddPhysiology(Id, Num int) {
|
||||
Phy := p.GetPhysiology(Id)
|
||||
if Phy == nil {
|
||||
@ -561,7 +567,16 @@ func (p *PlayroomMod) NotifyLose() *msg.NotifyPlayroomLose {
|
||||
Chip: ChipMessage,
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) ResetPhysiology(MoodType int) {
|
||||
PhysiologyList := playroomCfg.GetPhysiologyList(MoodType)
|
||||
for _, v := range PhysiologyList {
|
||||
Phy := p.GetPhysiology(v)
|
||||
if Phy != nil {
|
||||
Phy.Num = 0
|
||||
Phy.Time = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
func (p *PlayroomMod) NotifyStatus() *msg.NofiPlayroomStatus {
|
||||
return &msg.NofiPlayroomStatus{
|
||||
WorkOutline: int32(p.WorkOutline),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user