Activity
activity 活动状态管理
目录
列出了该 package 下所有的函数,可通过目录进行快捷跳转 ❤️
展开 / 折叠目录
包级函数定义
| 函数 | 描述 |
|---|---|
| SetTicker | 设置自定义定时器,该方法必须在使用活动系统前调用,且只能调用一次 |
| LoadGlobalData | 加载所有活动全局数据 |
| LoadEntityData | 加载所有活动实体数据 |
| LoadOrRefreshActivity | 加载或刷新活动 |
| DefineNoneDataActivity | 声明无数据的活动类型 |
| DefineGlobalDataActivity | 声明拥有全局数据的活动类型 |
| DefineEntityDataActivity | 声明拥有实体数据的活动类型 |
| DefineGlobalAndEntityDataActivity | 声明拥有全局数据和实体数据的活动类型 |
| RegUpcomingEvent | 注册即将开始的活动事件处理器 |
| OnUpcomingEvent | 即将开始的活动事件 |
| RegStartedEvent | 注册活动开始事件处理器 |
| OnStartedEvent | 活动开始事件 |
| RegEndedEvent | 注册活动结束事件处理器 |
| OnEndedEvent | 活动结束事件 |
| RegExtendedShowStartedEvent | 注册活动结束后延长展示开始事件处理器 |
| OnExtendedShowStartedEvent | 活动结束后延长展示开始事件 |
| RegExtendedShowEndedEvent | 注册活动结束后延长展示结束事件处理器 |
| OnExtendedShowEndedEvent | 活动结束后延长展示结束事件 |
| RegNewDayEvent | 注册新的一天事件处理器 |
| OnNewDayEvent | 新的一天事件 |
| NewOptions | 创建活动选项 |
结构体定义
| 结构体 | 描述 |
|---|---|
| Activity | 活动描述 |
| Controller | 活动控制器 |
| BasicActivityController | 暂无描述... |
| NoneDataActivityController | 无数据活动控制器 |
| GlobalDataActivityController | 全局数据活动控制器 |
| EntityDataActivityController | 实体数据活动控制器 |
| GlobalAndEntityDataActivityController | 全局数据和实体数据活动控制器 |
| DataMeta | 全局活动数据 |
| EntityDataMeta | 活动实体数据 |
| UpcomingEventHandler | 暂无描述... |
| Options | 活动选项 |
func SetTicker(size int, options ...timer.Option)
设置自定义定时器,该方法必须在使用活动系统前调用,且只能调用一次
func LoadGlobalData(handler func (activityType any))
加载所有活动全局数据
func LoadEntityData(handler func (activityType any))
加载所有活动实体数据
func LoadOrRefreshActivity(activityType Type, activityId ID, options ...*Options) error
加载或刷新活动
- 通常在活动配置刷新时候将活动通过该方法注册或刷新
func DefineNoneDataActivity(activityType Type) NoneDataActivityController[Type, ID, *none, none, *none]
声明无数据的活动类型
func DefineGlobalDataActivity(activityType Type) GlobalDataActivityController[Type, ID, Data, none, *none]
声明拥有全局数据的活动类型
func DefineEntityDataActivity(activityType Type) EntityDataActivityController[Type, ID, *none, EntityID, EntityData]
声明拥有实体数据的活动类型
func DefineGlobalAndEntityDataActivity(activityType Type) GlobalAndEntityDataActivityController[Type, ID, Data, EntityID, EntityData]
声明拥有全局数据和实体数据的活动类型
func RegUpcomingEvent(activityType Type, handler UpcomingEventHandler[ID], priority ...int)
注册即将开始的活动事件处理器
func OnUpcomingEvent(activity *Activity[Type, ID])
即将开始的活动事件
func RegStartedEvent(activityType Type, handler StartedEventHandler[ID], priority ...int)
注册活动开始事件处理器
func OnStartedEvent(activity *Activity[Type, ID])
活动开始事件
func RegEndedEvent(activityType Type, handler EndedEventHandler[ID], priority ...int)
注册活动结束事件处理器
func OnEndedEvent(activity *Activity[Type, ID])
活动结束事件
func RegExtendedShowStartedEvent(activityType Type, handler ExtendedShowStartedEventHandler[ID], priority ...int)
注册活动结束后延长展示开始事件处理器
func OnExtendedShowStartedEvent(activity *Activity[Type, ID])
活动结束后延长展示开始事件
func RegExtendedShowEndedEvent(activityType Type, handler ExtendedShowEndedEventHandler[ID], priority ...int)
注册活动结束后延长展示结束事件处理器
func OnExtendedShowEndedEvent(activity *Activity[Type, ID])
活动结束后延长展示结束事件
func RegNewDayEvent(activityType Type, handler NewDayEventHandler[ID], priority ...int)
注册新的一天事件处理器
func OnNewDayEvent(activity *Activity[Type, ID])
新的一天事件
func NewOptions() *Options
创建活动选项
Activity
活动描述
type Activity[Type generic.Basic, ID generic.Basic] struct {
id ID
t Type
options *Options
state byte
lazy bool
tickerKey string
retention time.Duration
retentionKey string
mutex sync.RWMutex
getLastNewDayTime func() time.Time
setLastNewDayTime func(time.Time)
clearData func()
initializeData func()
}
Controller
活动控制器
type Controller[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct {
t Type
activities map[ID]*Activity[Type, ID]
globalData map[ID]*DataMeta[Data]
entityData map[ID]map[EntityID]*EntityDataMeta[EntityData]
entityTof reflect.Type
globalInit func(activityId ID, data *DataMeta[Data])
entityInit func(activityId ID, entityId EntityID, data *EntityDataMeta[EntityData])
mutex sync.RWMutex
}
BasicActivityController
type BasicActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
NoneDataActivityController
无数据活动控制器
type NoneDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
GlobalDataActivityController
全局数据活动控制器
type GlobalDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
EntityDataActivityController
实体数据活动控制器
type EntityDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
GlobalAndEntityDataActivityController
全局数据和实体数据活动控制器
type GlobalAndEntityDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
DataMeta
全局活动数据
type DataMeta[Data any] struct {
once sync.Once
Data Data
LastNewDay time.Time
}
EntityDataMeta
活动实体数据
type EntityDataMeta[Data any] struct {
once sync.Once
Data Data
LastNewDay time.Time
}
UpcomingEventHandler
type UpcomingEventHandler[ID generic.Basic] struct{}
Options
活动选项
type Options struct {
Tl *times.StateLine[byte]
Loop time.Duration
}
func (*Options) WithUpcomingTime(t time.Time) *Options
设置活动预告时间
func (*Options) WithStartTime(t time.Time) *Options
设置活动开始时间
func (*Options) WithEndTime(t time.Time) *Options
设置活动结束时间
func (*Options) WithExtendedShowTime(t time.Time) *Options
设置延长展示时间
func (*Options) WithLoop(interval time.Duration) *Options
设置活动循环,时间间隔小于等于 0 表示不循环
- 当活动状态展示结束后,会根据该选项设置的时间间隔重新开始