playroom优化
This commit is contained in:
parent
8ee28c28e2
commit
51ffa2449b
@ -235,33 +235,6 @@ func CreateCardId(From, To, CardId int) string {
|
||||
return fmt.Sprintf("%d_%d_%d_%d_%s", From, To, CardId, Now(), RandString(3))
|
||||
}
|
||||
|
||||
func PlayroomTrigger(Time int64, Num int) (int64, int) {
|
||||
if Num == 0 {
|
||||
return 0, 0
|
||||
}
|
||||
Now := Now()
|
||||
if Time > Now {
|
||||
return Time, Num
|
||||
}
|
||||
var Duration int64
|
||||
for {
|
||||
if Num > 50 {
|
||||
Duration = 1200
|
||||
|
||||
} else {
|
||||
Duration = 3600
|
||||
}
|
||||
if Time+Duration > Now {
|
||||
return Time + Duration, Num
|
||||
}
|
||||
Time += Duration
|
||||
Num -= 10
|
||||
if Num <= 0 {
|
||||
return 0, 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func SplitInt(str, sep string) []int {
|
||||
var ret []int
|
||||
for _, v := range strings.Split(str, sep) {
|
||||
|
||||
@ -110,6 +110,14 @@ func GetInteract(Id, Type int) (int, []*item.Item, int) {
|
||||
return gamedata.GetIntValue(data, "Type"), gamedata.GetItemList(data, "Cost2"), gamedata.GetIntValue(data, "Effect")
|
||||
}
|
||||
|
||||
func GetInteractPhysiology(Id int) (int, int) {
|
||||
data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_MOOD, Id)
|
||||
if err != nil {
|
||||
return 0, 0
|
||||
}
|
||||
return gamedata.GetIntValue(data, "PType"), gamedata.GetIntValue(data, "PEffect")
|
||||
}
|
||||
|
||||
func GetInitDecorate() []int {
|
||||
r := make([]int, 0)
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_DECORATE)
|
||||
@ -151,3 +159,7 @@ func GetPhysiologyMax(Id int) int {
|
||||
}
|
||||
return gamedata.GetIntValue(data, "Max")
|
||||
}
|
||||
|
||||
func GetPhysiologyDuration(Id int, Num int) int {
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
"math"
|
||||
"server/GoUtil"
|
||||
baseCfg "server/conf/base"
|
||||
playroomCfg "server/conf/playroom"
|
||||
userCfg "server/conf/user"
|
||||
"server/game/mod/card"
|
||||
"server/game/mod/item"
|
||||
@ -137,17 +138,24 @@ func LimitedTimeCardTrigger(p *Player) {
|
||||
}, "LimitedTimeCard")
|
||||
}
|
||||
}
|
||||
|
||||
func LimitedTimePlayroomTrigger(p *Player, Id int) {
|
||||
func LimitedTimePlayroomTrigger(p *Player) {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
for k, v := range PlayroomMod.Physiology {
|
||||
if v.Time > 0 {
|
||||
LimitedTimePlayroomTrigger_(p, k)
|
||||
}
|
||||
}
|
||||
}
|
||||
func LimitedTimePlayroomTrigger_(p *Player, Id int) {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
Now := GoUtil.Now()
|
||||
MoodInfo := PlayroomMod.GetMoodInfo(Id)
|
||||
if MoodInfo == nil {
|
||||
Physiology := PlayroomMod.GetPhysiology(Id)
|
||||
if Physiology == nil {
|
||||
return
|
||||
}
|
||||
NewTime, Num := GoUtil.PlayroomTrigger(MoodInfo.Time, MoodInfo.Num)
|
||||
MoodInfo.Time = NewTime
|
||||
MoodInfo.Num = Num
|
||||
NewTime, Num := PlayroomTrigger(Physiology.Id, Physiology.Time, Physiology.Num)
|
||||
Physiology.Time = NewTime
|
||||
Physiology.Num = Num
|
||||
p.PlayMod.save()
|
||||
PlayroomBackData(p)
|
||||
NextSecond := NewTime - Now
|
||||
@ -155,12 +163,42 @@ func LimitedTimePlayroomTrigger(p *Player, Id int) {
|
||||
p.CallEvent(time.Duration(NextSecond)*time.Second, func() {
|
||||
p.lock.Lock()
|
||||
defer p.lock.Unlock()
|
||||
LimitedTimePlayroomTrigger(p, Id)
|
||||
LimitedTimePlayroomTrigger_(p, Id)
|
||||
p.SendClientRes()
|
||||
}, fmt.Sprintf("Playroom_%d", Id))
|
||||
}
|
||||
}
|
||||
|
||||
func PlayroomTrigger(Id int, Time int64, Num int) (int64, int) {
|
||||
if Num == 0 {
|
||||
return 0, 0
|
||||
}
|
||||
Now := GoUtil.Now()
|
||||
if Time > Now {
|
||||
return Time, Num
|
||||
}
|
||||
if Time == Now {
|
||||
NeedDuration := playroomCfg.GetPhysiologyDuration(Id, Num)
|
||||
return Time + int64(NeedDuration), Num
|
||||
}
|
||||
n := 0
|
||||
for {
|
||||
if n > 100 {
|
||||
return 0, 0
|
||||
}
|
||||
NeedDuration := playroomCfg.GetPhysiologyDuration(Id, Num)
|
||||
Time += int64(NeedDuration)
|
||||
if Time > Now {
|
||||
return Time, Num
|
||||
}
|
||||
Num--
|
||||
if Num == 0 {
|
||||
return 0, 0
|
||||
}
|
||||
n++
|
||||
}
|
||||
}
|
||||
|
||||
func LimitedTimePlayroomWorkTrigger(p *Player) {
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
EndTime := PlayroomMod.Endtime
|
||||
|
||||
@ -339,32 +339,33 @@ func (p *Player) Login() {
|
||||
LimitedTimeEventTrigger(p, 0)
|
||||
// 猪猪银行触发
|
||||
LimitedTimePiggyBankTrigger(p)
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
// playroom触发
|
||||
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_ENTER)
|
||||
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_FOOD)
|
||||
LimitedTimePlayroomTrigger(p, playroom.MOOD_TYPE_CLEAN)
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
PlayroomMod.UnLock(BaseMod.GetLevel())
|
||||
LimitedTimePlayroomTrigger(p)
|
||||
LimitedTimePlayroomWorkTrigger(p)
|
||||
LimitedTimeEnergyAdd(p)
|
||||
ActivityLogin(p)
|
||||
LoignBack(p)
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
|
||||
BaseMod.Login()
|
||||
p.PlayMod.getCardMod().Login(G_GameLogicPtr.SeverInfo.OpenTime)
|
||||
if p.PlayerBaseMod.Data.UserName == "388faebe29ffe56666a04ea22b902b0f" {
|
||||
VarMod := p.PlayMod.getVarMod()
|
||||
Mail1, _ := VarMod.GetVar(1)
|
||||
if Mail1 != nil {
|
||||
return
|
||||
}
|
||||
VarMod.SetVar(1, 1)
|
||||
Items := make([]*item.Item, 0)
|
||||
Items = append(Items, &item.Item{Id: item.ITEM_ENERGY_ID, Num: 200})
|
||||
MailMod := p.PlayMod.getMailMod()
|
||||
MailMod.Send("Test Players' Refund",
|
||||
`Welcome back to our game!
|
||||
Here comes your refund for your scene progress and payment in test version!
|
||||
Have fun in new version!`, Items)
|
||||
}
|
||||
// if p.PlayerBaseMod.Data.UserName == "388faebe29ffe56666a04ea22b902b0f" {
|
||||
// VarMod := p.PlayMod.getVarMod()
|
||||
// Mail1, _ := VarMod.GetVar(1)
|
||||
// if Mail1 != nil {
|
||||
// return
|
||||
// }
|
||||
// VarMod.SetVar(1, 1)
|
||||
// Items := make([]*item.Item, 0)
|
||||
// Items = append(Items, &item.Item{Id: item.ITEM_ENERGY_ID, Num: 200})
|
||||
// MailMod := p.PlayMod.getMailMod()
|
||||
// MailMod.Send("Test Players' Refund",
|
||||
// `Welcome back to our game!
|
||||
// Here comes your refund for your scene progress and payment in test version!
|
||||
// Have fun in new version!`, Items)
|
||||
// }
|
||||
}
|
||||
|
||||
func (p *Player) Outline() {
|
||||
|
||||
@ -606,6 +606,7 @@ func PlayroomBackData(p *Player) {
|
||||
r.WorkStatus = int32(PlayroomMod.WorkStatus)
|
||||
r.Playroom = GoUtil.MapIntToInt32(PlayroomMod.GetRoom())
|
||||
r.Mood = GoUtil.MapIntToInt32(PlayroomMod.GetMood())
|
||||
r.Physiology = GoUtil.MapIntToInt32(PlayroomMod.GetPhysiologyList())
|
||||
r.AllMood = int32(PlayroomMod.AllMood)
|
||||
r.Jackpot = int32(PlayroomMod.JackpotNum)
|
||||
p.PushClientRes(r)
|
||||
|
||||
@ -2932,7 +2932,7 @@ func ReqPlayroomInteract(args []interface{}) error {
|
||||
req := &msg.ReqPlayroomInteract{}
|
||||
proto.Unmarshal(buf, req)
|
||||
PlayroomMod := player.PlayMod.getPlayroomMod()
|
||||
Items, MoodType, err := PlayroomMod.Interact(int(req.Id), int(req.Type))
|
||||
Items, _, err := PlayroomMod.Interact(int(req.Id), int(req.Type))
|
||||
if err != nil {
|
||||
player.SendErrClienRes(&msg.ResPlayroomInteract{
|
||||
Code: msg.RES_CODE_FAIL,
|
||||
@ -2949,7 +2949,7 @@ func ReqPlayroomInteract(args []interface{}) error {
|
||||
return err
|
||||
}
|
||||
player.PlayMod.save()
|
||||
LimitedTimePlayroomTrigger(player, MoodType)
|
||||
LimitedTimePlayroomTrigger(player)
|
||||
player.PushClientRes(PlayroomMod.NotifyMood())
|
||||
player.PushClientRes(&msg.ResPlayroomInteract{
|
||||
Code: msg.RES_CODE_SUCCESS,
|
||||
|
||||
@ -142,10 +142,22 @@ func (p *PlayroomMod) GetMood() map[int]int {
|
||||
return Mood
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) GetPhysiologyList() map[int]int {
|
||||
Physiology := make(map[int]int)
|
||||
for k, v := range p.Physiology {
|
||||
Physiology[k] = v.Num
|
||||
}
|
||||
return Physiology
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) GetMoodInfo(Id int) *Mood {
|
||||
return p.MoodInfo[Id]
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) GetPhysiology(Id int) *Physiology {
|
||||
return p.Physiology[Id]
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) GetCollect() map[int]int {
|
||||
return p.Collect
|
||||
}
|
||||
@ -246,6 +258,8 @@ func (p *PlayroomMod) Interact(Id, Type int) ([]*item.Item, int, error) {
|
||||
if Effect > 0 {
|
||||
p.AllMood = min(100, p.AllMood+10)
|
||||
}
|
||||
PType, PEffect := playroomCfg.GetInteractPhysiology(Id)
|
||||
p.AddPhysiology(PType, PEffect)
|
||||
p.AddMood(MoodType, Effect)
|
||||
return ItemList, MoodType, nil
|
||||
}
|
||||
@ -264,6 +278,21 @@ func (p *PlayroomMod) AddMood(Id, Num int) {
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) AddPhysiology(Id, Num int) {
|
||||
Physiology := p.GetPhysiology(Id)
|
||||
if Physiology == nil {
|
||||
return
|
||||
}
|
||||
Max := playroomCfg.GetPhysiologyMax(Id)
|
||||
Physiology.Num = max(0, min(Physiology.Num+Num, Max))
|
||||
if Physiology.Num != 0 && Physiology.Time == 0 {
|
||||
Physiology.Time = GoUtil.Now()
|
||||
}
|
||||
if Physiology.Num == 0 {
|
||||
Physiology.Time = 0
|
||||
}
|
||||
}
|
||||
|
||||
func (p *PlayroomMod) AddVisitor(Id int, Time int64) {
|
||||
v, ok := p.Visitor[Id]
|
||||
if !ok {
|
||||
@ -396,6 +425,7 @@ func (p *PlayroomMod) NotifyMood() *msg.NotifyPlayroomMood {
|
||||
return &msg.NotifyPlayroomMood{
|
||||
AllMood: int32(p.AllMood),
|
||||
Mood: Mood,
|
||||
Physiology: GoUtil.MapIntToInt32(p.GetPhysiologyList()),
|
||||
}
|
||||
}
|
||||
|
||||
@ -493,4 +523,10 @@ func (p *PlayroomMod) UnLock(Lv int) {
|
||||
p.Physiology[k] = &Physiology{Id: k, Num: Max, Time: Now}
|
||||
}
|
||||
}
|
||||
if p.MoodInfo == nil {
|
||||
p.MoodInfo = make(map[int]*Mood)
|
||||
for k := 1; k <= 3; k++ {
|
||||
p.MoodInfo[k] = &Mood{Id: k, Num: 100}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user