55 lines
1008 B
Go
55 lines
1008 B
Go
package common
|
|
|
|
import (
|
|
"mongo.games.com/goserver/core/logger"
|
|
)
|
|
|
|
const (
|
|
A_USER_BLACK = 1 //增加黑名单
|
|
)
|
|
|
|
type Action struct {
|
|
ActionID int //执行id
|
|
ActionParamInt64 []int //整形参数
|
|
ActionParamFloat []float64 //浮点参数
|
|
ActionParamString []string //字符串参数
|
|
}
|
|
|
|
var ActionMgrSington = &ActionMgr{
|
|
pool: make(map[int]ActionBase),
|
|
}
|
|
|
|
func init() {
|
|
|
|
}
|
|
|
|
type ActionMgr struct {
|
|
pool map[int]ActionBase
|
|
}
|
|
|
|
func (this *ActionMgr) ActionGroup(need interface{}, action []*Action) bool {
|
|
for i := 0; i < len(action); i++ {
|
|
this.action(need, action[i])
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
func (this *ActionMgr) action(need interface{}, action *Action) bool {
|
|
a, ok := this.pool[action.ActionID]
|
|
if !ok {
|
|
logger.Logger.Warnf("no this action %v", action.ActionID)
|
|
return false
|
|
}
|
|
|
|
return a.Action(need, action)
|
|
}
|
|
|
|
func (this *ActionMgr) Register(cid int, c ActionBase) {
|
|
this.pool[cid] = c
|
|
}
|
|
|
|
type ActionBase interface {
|
|
Action(need interface{}, action *Action) bool
|
|
}
|