game_sync/gamesrv/slotspkg/slots/plugin/gatesofolympus/tospecial.go

80 lines
2.8 KiB
Go

package gatesofolympus
import (
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic"
)
type PluginSpecial struct {
generic.PluginBase
}
type Special struct {
CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"` //消除的次数 一次为一个结果
FreeStatus int `json:"fss,omitempty"` //free状态
FreeSpinNum int64 `json:"fsn,omitempty"` //剩余freespin
FreeNumMax int64 `json:"fnm,omitempty"` //总次数
FreeNumTrigger int64 `json:"fnt,omitempty"` //新增freespin
ScatterWin int64 `json:"sw"`
Pay float64 `json:"Pay,omitempty"`
Multi int64 `json:"Multi,omitempty"`
MultiStr string `json:"multi_str,omitempty"`
MultiStrVal string `json:"multi_str_val,omitempty"`
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
}
func (p *PluginSpecial) Theme() string {
return key.GatesOfOlympus
}
func (p *PluginSpecial) Customs() []interface{} {
return []interface{}{
&Special{},
}
}
func (p *PluginSpecial) getCustomSpecial(m intf.Master) *Special {
customSpecial := new(Special)
if len(m.CursorCustoms(customSpecial)) == 0 {
m.AddCursorFeature(customSpecial).SetLifetime(0)
}
return m.CursorCustom(customSpecial).(*Special)
}
func (p *PluginSpecial) AfterSpin(m intf.Master) {
//cf := m.CursorFeatures(&CustomEliminate{})
ces := m.CursorCustoms(&CustomEliminate{})
sp := p.getCustomSpecial(m)
if len(ces) > 0 {
for _, i2 := range ces {
ce := i2.(*CustomEliminate)
wc := make([]float64, len(ce.WinCoins))
for j := 0; j < len(ce.WinCoins); j++ {
wc[j] = ce.WinCoins[j] / 10000
}
sp.CustomEliminates = append(sp.CustomEliminates, CustomEliminate{
LinkPositions: ce.LinkPositions,
AppendSymbols: ce.AppendSymbols,
FormattedSymbols: ce.FormattedSymbols,
LinePays: ce.LinePays,
WinCoins: wc,
MultiStr: ce.MultiStr,
})
}
}
customFortune := getCustomFortune(m)
sp.FreeStatus = customFortune.FreeStatus
sp.FreeSpinNum = customFortune.FreeSpinNum
sp.FreeNumMax = customFortune.FreeNumMax
sp.FreeNumTrigger = customFortune.FreeNumTrigger
sp.ScatterWin = customFortune.ScatterWin
customMulti := m.RootCustom(&CustomMulti{}).(*CustomMulti)
customPay := m.CursorCustom(&CustomPay{}).(*CustomPay)
sp.Multi = customMulti.Multi
sp.MultiStr = customMulti.MultiStr
sp.MultiStrVal = customMulti.MultiStrVal
sp.Pay = customPay.Pay
sp.SymbolsAbove = m.CursorFormation().GetSymbolsAbove()
sp.SymbolsBelow = m.CursorFormation().GetSymbolsBelow()
}