Activity
activity 活动状态管理
目录导航
列出了该 package 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
展开 / 折叠目录导航
包级函数定义
| 函数名称 | 描述 |
|---|---|
| SetTicker | 设置自定义定时器,该方法必须在使用活动系统前调用,且只能调用一次 |
| LoadGlobalData | 加载所有活动全局数据 |
| LoadEntityData | 加载所有活动实体数据 |
| LoadOrRefreshActivity | 加载或刷新活动 |
| DefineNoneDataActivity | 声明无数据的活动类型 |
| DefineGlobalDataActivity | 声明拥有全局数据的活动类型 |
| DefineEntityDataActivity | 声明拥有实体数据的活动类型 |
| DefineGlobalAndEntityDataActivity | 声明拥有全局数据和实体数据的活动类型 |
| RegUpcomingEvent | 注册即将开始的活动事件处理器 |
| OnUpcomingEvent | 即将开始的活动事件 |
| RegStartedEvent | 注册活动开始事件处理器 |
| OnStartedEvent | 活动开始事件 |
| RegEndedEvent | 注册活动结束事件处理器 |
| OnEndedEvent | 活动结束事件 |
| RegExtendedShowStartedEvent | 注册活动结束后延长展示开始事件处理器 |
| OnExtendedShowStartedEvent | 活动结束后延长展示开始事件 |
| RegExtendedShowEndedEvent | 注册活动结束后延长展示结束事件处理器 |
| OnExtendedShowEndedEvent | 活动结束后延长展示结束事件 |
| RegNewDayEvent | 注册新的一天事件处理器 |
| OnNewDayEvent | 新的一天事件 |
| NewOptions | 创建活动选项 |
类型定义
| 类型 | 名称 | 描述 |
|---|---|---|
STRUCT |
Activity | 活动描述 |
STRUCT |
Controller | 活动控制器 |
INTERFACE |
BasicActivityController | 暂无描述... |
INTERFACE |
NoneDataActivityController | 无数据活动控制器 |
INTERFACE |
GlobalDataActivityController | 全局数据活动控制器 |
INTERFACE |
EntityDataActivityController | 实体数据活动控制器 |
INTERFACE |
GlobalAndEntityDataActivityController | 全局数据和实体数据活动控制器 |
STRUCT |
DataMeta | 全局活动数据 |
STRUCT |
EntityDataMeta | 活动实体数据 |
STRUCT |
UpcomingEventHandler | 暂无描述... |
STRUCT |
Options | 活动选项 |
详情信息
func SetTicker(size int, options ...timer.Option)
设置自定义定时器,该方法必须在使用活动系统前调用,且只能调用一次
func LoadGlobalData(handler func (activityType any))
加载所有活动全局数据
func LoadEntityData(handler func (activityType any))
加载所有活动实体数据
func LoadOrRefreshActivity[Type generic.Basic, ID generic.Basic](activityType Type, activityId ID, options ...*Options) error
加载或刷新活动
- 通常在活动配置刷新时候将活动通过该方法注册或刷新
func DefineNoneDataActivity[Type generic.Basic, ID generic.Basic](activityType Type) NoneDataActivityController[Type, ID, *none, none, *none]
声明无数据的活动类型
func DefineGlobalDataActivity[Type generic.Basic, ID generic.Basic, Data any](activityType Type) GlobalDataActivityController[Type, ID, Data, none, *none]
声明拥有全局数据的活动类型
func DefineEntityDataActivity[Type generic.Basic, ID generic.Basic, EntityID generic.Basic, EntityData any](activityType Type) EntityDataActivityController[Type, ID, *none, EntityID, EntityData]
声明拥有实体数据的活动类型
func DefineGlobalAndEntityDataActivity[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any](activityType Type) GlobalAndEntityDataActivityController[Type, ID, Data, EntityID, EntityData]
声明拥有全局数据和实体数据的活动类型
func RegUpcomingEvent[Type generic.Basic, ID generic.Basic](activityType Type, handler UpcomingEventHandler[ID], priority ...int)
注册即将开始的活动事件处理器
func OnUpcomingEvent[Type generic.Basic, ID generic.Basic](activity *Activity[Type, ID])
即将开始的活动事件
func RegStartedEvent[Type generic.Basic, ID generic.Basic](activityType Type, handler StartedEventHandler[ID], priority ...int)
注册活动开始事件处理器
func OnStartedEvent[Type generic.Basic, ID generic.Basic](activity *Activity[Type, ID])
活动开始事件
func RegEndedEvent[Type generic.Basic, ID generic.Basic](activityType Type, handler EndedEventHandler[ID], priority ...int)
注册活动结束事件处理器
func OnEndedEvent[Type generic.Basic, ID generic.Basic](activity *Activity[Type, ID])
活动结束事件
func RegExtendedShowStartedEvent[Type generic.Basic, ID generic.Basic](activityType Type, handler ExtendedShowStartedEventHandler[ID], priority ...int)
注册活动结束后延长展示开始事件处理器
func OnExtendedShowStartedEvent[Type generic.Basic, ID generic.Basic](activity *Activity[Type, ID])
活动结束后延长展示开始事件
func RegExtendedShowEndedEvent[Type generic.Basic, ID generic.Basic](activityType Type, handler ExtendedShowEndedEventHandler[ID], priority ...int)
注册活动结束后延长展示结束事件处理器
func OnExtendedShowEndedEvent[Type generic.Basic, ID generic.Basic](activity *Activity[Type, ID])
活动结束后延长展示结束事件
func RegNewDayEvent[Type generic.Basic, ID generic.Basic](activityType Type, handler NewDayEventHandler[ID], priority ...int)
注册新的一天事件处理器
func OnNewDayEvent[Type generic.Basic, ID generic.Basic](activity *Activity[Type, ID])
新的一天事件
func NewOptions() *Options
创建活动选项
Activity STRUCT
活动描述
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 STRUCT
活动控制器
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
}
func (*Controller) GetGlobalData(activityId ID) Data
获取特定活动全局数据
func (*Controller) GetEntityData(activityId ID, entityId EntityID) EntityData
获取特定活动实体数据
func (*Controller) IsOpen(activityId ID) bool
活动是否开启
func (*Controller) IsShow(activityId ID) bool
活动是否展示
func (*Controller) IsOpenOrShow(activityId ID) bool
活动是否开启或展示
func (*Controller) Refresh(activityId ID)
刷新活动
func (*Controller) InitializeNoneData(handler func (activityId ID, data *DataMeta[Data])) NoneDataActivityController[Type, ID, Data, EntityID, EntityData]
func (*Controller) InitializeGlobalData(handler func (activityId ID, data *DataMeta[Data])) GlobalDataActivityController[Type, ID, Data, EntityID, EntityData]
func (*Controller) InitializeEntityData(handler func (activityId ID, entityId EntityID, data *EntityDataMeta[EntityData])) EntityDataActivityController[Type, ID, Data, EntityID, EntityData]
func (*Controller) InitializeGlobalAndEntityData(handler func (activityId ID, data *DataMeta[Data]), entityHandler func (activityId ID, entityId EntityID, data *EntityDataMeta[EntityData])) GlobalAndEntityDataActivityController[Type, ID, Data, EntityID, EntityData]
BasicActivityController INTERFACE
type BasicActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] interface {
IsOpen(activityId ID) bool
IsShow(activityId ID) bool
IsOpenOrShow(activityId ID) bool
Refresh(activityId ID)
}
NoneDataActivityController INTERFACE
无数据活动控制器
type NoneDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] interface {
BasicActivityController[Type, ID, Data, EntityID, EntityData]
InitializeNoneData(handler func(activityId ID, data *DataMeta[Data])) NoneDataActivityController[Type, ID, Data, EntityID, EntityData]
}
GlobalDataActivityController INTERFACE
全局数据活动控制器
type GlobalDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] interface {
BasicActivityController[Type, ID, Data, EntityID, EntityData]
GetGlobalData(activityId ID) Data
InitializeGlobalData(handler func(activityId ID, data *DataMeta[Data])) GlobalDataActivityController[Type, ID, Data, EntityID, EntityData]
}
EntityDataActivityController INTERFACE
实体数据活动控制器
type EntityDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] interface {
BasicActivityController[Type, ID, Data, EntityID, EntityData]
GetEntityData(activityId ID, entityId EntityID) EntityData
InitializeEntityData(handler func(activityId ID, entityId EntityID, data *EntityDataMeta[EntityData])) EntityDataActivityController[Type, ID, Data, EntityID, EntityData]
}
GlobalAndEntityDataActivityController INTERFACE
全局数据和实体数据活动控制器
type GlobalAndEntityDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] interface {
BasicActivityController[Type, ID, Data, EntityID, EntityData]
GetGlobalData(activityId ID) Data
GetEntityData(activityId ID, entityId EntityID) EntityData
InitializeGlobalAndEntityData(handler func(activityId ID, data *DataMeta[Data]), entityHandler func(activityId ID, entityId EntityID, data *EntityDataMeta[EntityData])) GlobalAndEntityDataActivityController[Type, ID, Data, EntityID, EntityData]
}
DataMeta STRUCT
全局活动数据
type DataMeta[Data any] struct {
once sync.Once
Data Data
LastNewDay time.Time
}
EntityDataMeta STRUCT
活动实体数据
type EntityDataMeta[Data any] struct {
once sync.Once
Data Data
LastNewDay time.Time
}
UpcomingEventHandler STRUCT
type UpcomingEventHandler[ID generic.Basic] func(activityId ID)
Options STRUCT
活动选项
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 表示不循环
- 当活动状态展示结束后,会根据该选项设置的时间间隔重新开始