|
|
|
@@ -1,19 +1,20 @@
|
|
|
|
|
# Activity
|
|
|
|
|
|
|
|
|
|
activity 活动状态管理
|
|
|
|
|
|
|
|
|
|
[](https://pkg.go.dev/github.com/kercylan98/minotaur/activity)
|
|
|
|
|

|
|
|
|
|
|
|
|
|
|
## 目录
|
|
|
|
|
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
|
|
|
|
activity 活动状态管理
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 目录导航
|
|
|
|
|
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
|
|
|
|
<details>
|
|
|
|
|
<summary>展开 / 折叠目录</summary
|
|
|
|
|
<summary>展开 / 折叠目录导航</summary>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> 包级函数定义
|
|
|
|
|
|
|
|
|
|
|函数|描述
|
|
|
|
|
|函数名称|描述
|
|
|
|
|
|:--|:--
|
|
|
|
|
|[SetTicker](#SetTicker)|设置自定义定时器,该方法必须在使用活动系统前调用,且只能调用一次
|
|
|
|
|
|[LoadGlobalData](#LoadGlobalData)|加载所有活动全局数据
|
|
|
|
@@ -38,111 +39,134 @@ activity 活动状态管理
|
|
|
|
|
|[NewOptions](#NewOptions)|创建活动选项
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> 结构体定义
|
|
|
|
|
> 类型定义
|
|
|
|
|
|
|
|
|
|
|结构体|描述
|
|
|
|
|
|:--|:--
|
|
|
|
|
|[Activity](#activity)|活动描述
|
|
|
|
|
|[Controller](#controller)|活动控制器
|
|
|
|
|
|[BasicActivityController](#basicactivitycontroller)|暂无描述...
|
|
|
|
|
|[NoneDataActivityController](#nonedataactivitycontroller)|无数据活动控制器
|
|
|
|
|
|[GlobalDataActivityController](#globaldataactivitycontroller)|全局数据活动控制器
|
|
|
|
|
|[EntityDataActivityController](#entitydataactivitycontroller)|实体数据活动控制器
|
|
|
|
|
|[GlobalAndEntityDataActivityController](#globalandentitydataactivitycontroller)|全局数据和实体数据活动控制器
|
|
|
|
|
|[DataMeta](#datameta)|全局活动数据
|
|
|
|
|
|[EntityDataMeta](#entitydatameta)|活动实体数据
|
|
|
|
|
|[UpcomingEventHandler](#upcomingeventhandler)|暂无描述...
|
|
|
|
|
|[Options](#options)|活动选项
|
|
|
|
|
|类型|名称|描述
|
|
|
|
|
|:--|:--|:--
|
|
|
|
|
|`STRUCT`|[Activity](#activity)|活动描述
|
|
|
|
|
|`STRUCT`|[Controller](#controller)|活动控制器
|
|
|
|
|
|`INTERFACE`|[BasicActivityController](#basicactivitycontroller)|暂无描述...
|
|
|
|
|
|`INTERFACE`|[NoneDataActivityController](#nonedataactivitycontroller)|无数据活动控制器
|
|
|
|
|
|`INTERFACE`|[GlobalDataActivityController](#globaldataactivitycontroller)|全局数据活动控制器
|
|
|
|
|
|`INTERFACE`|[EntityDataActivityController](#entitydataactivitycontroller)|实体数据活动控制器
|
|
|
|
|
|`INTERFACE`|[GlobalAndEntityDataActivityController](#globalandentitydataactivitycontroller)|全局数据和实体数据活动控制器
|
|
|
|
|
|`STRUCT`|[DataMeta](#datameta)|全局活动数据
|
|
|
|
|
|`STRUCT`|[EntityDataMeta](#entitydatameta)|活动实体数据
|
|
|
|
|
|`STRUCT`|[UpcomingEventHandler](#upcomingeventhandler)|暂无描述...
|
|
|
|
|
|`STRUCT`|[Options](#options)|活动选项
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
## 详情信息
|
|
|
|
|
#### func SetTicker(size int, options ...timer.Option)
|
|
|
|
|
<span id="SetTicker"></span>
|
|
|
|
|
> 设置自定义定时器,该方法必须在使用活动系统前调用,且只能调用一次
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func LoadGlobalData(handler func (activityType any))
|
|
|
|
|
<span id="LoadGlobalData"></span>
|
|
|
|
|
> 加载所有活动全局数据
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func LoadEntityData(handler func (activityType any))
|
|
|
|
|
<span id="LoadEntityData"></span>
|
|
|
|
|
> 加载所有活动实体数据
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func LoadOrRefreshActivity(activityType Type, activityId ID, options ...*Options) error
|
|
|
|
|
<span id="LoadOrRefreshActivity"></span>
|
|
|
|
|
> 加载或刷新活动
|
|
|
|
|
> - 通常在活动配置刷新时候将活动通过该方法注册或刷新
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func DefineNoneDataActivity(activityType Type) NoneDataActivityController[Type, ID, *none, none, *none]
|
|
|
|
|
<span id="DefineNoneDataActivity"></span>
|
|
|
|
|
> 声明无数据的活动类型
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func DefineGlobalDataActivity(activityType Type) GlobalDataActivityController[Type, ID, Data, none, *none]
|
|
|
|
|
<span id="DefineGlobalDataActivity"></span>
|
|
|
|
|
> 声明拥有全局数据的活动类型
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func DefineEntityDataActivity(activityType Type) EntityDataActivityController[Type, ID, *none, EntityID, EntityData]
|
|
|
|
|
<span id="DefineEntityDataActivity"></span>
|
|
|
|
|
> 声明拥有实体数据的活动类型
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func DefineGlobalAndEntityDataActivity(activityType Type) GlobalAndEntityDataActivityController[Type, ID, Data, EntityID, EntityData]
|
|
|
|
|
<span id="DefineGlobalAndEntityDataActivity"></span>
|
|
|
|
|
> 声明拥有全局数据和实体数据的活动类型
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func RegUpcomingEvent(activityType Type, handler UpcomingEventHandler[ID], priority ...int)
|
|
|
|
|
<span id="RegUpcomingEvent"></span>
|
|
|
|
|
> 注册即将开始的活动事件处理器
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func OnUpcomingEvent(activity *Activity[Type, ID])
|
|
|
|
|
<span id="OnUpcomingEvent"></span>
|
|
|
|
|
> 即将开始的活动事件
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func RegStartedEvent(activityType Type, handler StartedEventHandler[ID], priority ...int)
|
|
|
|
|
<span id="RegStartedEvent"></span>
|
|
|
|
|
> 注册活动开始事件处理器
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func OnStartedEvent(activity *Activity[Type, ID])
|
|
|
|
|
<span id="OnStartedEvent"></span>
|
|
|
|
|
> 活动开始事件
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func RegEndedEvent(activityType Type, handler EndedEventHandler[ID], priority ...int)
|
|
|
|
|
<span id="RegEndedEvent"></span>
|
|
|
|
|
> 注册活动结束事件处理器
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func OnEndedEvent(activity *Activity[Type, ID])
|
|
|
|
|
<span id="OnEndedEvent"></span>
|
|
|
|
|
> 活动结束事件
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func RegExtendedShowStartedEvent(activityType Type, handler ExtendedShowStartedEventHandler[ID], priority ...int)
|
|
|
|
|
<span id="RegExtendedShowStartedEvent"></span>
|
|
|
|
|
> 注册活动结束后延长展示开始事件处理器
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func OnExtendedShowStartedEvent(activity *Activity[Type, ID])
|
|
|
|
|
<span id="OnExtendedShowStartedEvent"></span>
|
|
|
|
|
> 活动结束后延长展示开始事件
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func RegExtendedShowEndedEvent(activityType Type, handler ExtendedShowEndedEventHandler[ID], priority ...int)
|
|
|
|
|
<span id="RegExtendedShowEndedEvent"></span>
|
|
|
|
|
> 注册活动结束后延长展示结束事件处理器
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func OnExtendedShowEndedEvent(activity *Activity[Type, ID])
|
|
|
|
|
<span id="OnExtendedShowEndedEvent"></span>
|
|
|
|
|
> 活动结束后延长展示结束事件
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func RegNewDayEvent(activityType Type, handler NewDayEventHandler[ID], priority ...int)
|
|
|
|
|
<span id="RegNewDayEvent"></span>
|
|
|
|
|
> 注册新的一天事件处理器
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func OnNewDayEvent(activity *Activity[Type, ID])
|
|
|
|
|
<span id="OnNewDayEvent"></span>
|
|
|
|
|
> 新的一天事件
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
#### func NewOptions() *Options
|
|
|
|
|
<span id="NewOptions"></span>
|
|
|
|
|
> 创建活动选项
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
### Activity
|
|
|
|
|
### Activity `STRUCT`
|
|
|
|
|
活动描述
|
|
|
|
|
```go
|
|
|
|
|
type Activity[Type generic.Basic, ID generic.Basic] struct {
|
|
|
|
@@ -161,7 +185,7 @@ type Activity[Type generic.Basic, ID generic.Basic] struct {
|
|
|
|
|
initializeData func()
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
### Controller
|
|
|
|
|
### Controller `STRUCT`
|
|
|
|
|
活动控制器
|
|
|
|
|
```go
|
|
|
|
|
type Controller[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct {
|
|
|
|
@@ -175,32 +199,53 @@ type Controller[Type generic.Basic, ID generic.Basic, Data any, EntityID generic
|
|
|
|
|
mutex sync.RWMutex
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
### BasicActivityController
|
|
|
|
|
### BasicActivityController `INTERFACE`
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
type BasicActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
|
|
|
|
|
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
|
|
|
|
|
### NoneDataActivityController `INTERFACE`
|
|
|
|
|
无数据活动控制器
|
|
|
|
|
```go
|
|
|
|
|
type NoneDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
|
|
|
|
|
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
|
|
|
|
|
### GlobalDataActivityController `INTERFACE`
|
|
|
|
|
全局数据活动控制器
|
|
|
|
|
```go
|
|
|
|
|
type GlobalDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
|
|
|
|
|
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
|
|
|
|
|
### EntityDataActivityController `INTERFACE`
|
|
|
|
|
实体数据活动控制器
|
|
|
|
|
```go
|
|
|
|
|
type EntityDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
|
|
|
|
|
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
|
|
|
|
|
### GlobalAndEntityDataActivityController `INTERFACE`
|
|
|
|
|
全局数据和实体数据活动控制器
|
|
|
|
|
```go
|
|
|
|
|
type GlobalAndEntityDataActivityController[Type generic.Basic, ID generic.Basic, Data any, EntityID generic.Basic, EntityData any] struct{}
|
|
|
|
|
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
|
|
|
|
|
### DataMeta `STRUCT`
|
|
|
|
|
全局活动数据
|
|
|
|
|
```go
|
|
|
|
|
type DataMeta[Data any] struct {
|
|
|
|
@@ -209,7 +254,7 @@ type DataMeta[Data any] struct {
|
|
|
|
|
LastNewDay time.Time
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
### EntityDataMeta
|
|
|
|
|
### EntityDataMeta `STRUCT`
|
|
|
|
|
活动实体数据
|
|
|
|
|
```go
|
|
|
|
|
type EntityDataMeta[Data any] struct {
|
|
|
|
@@ -218,12 +263,12 @@ type EntityDataMeta[Data any] struct {
|
|
|
|
|
LastNewDay time.Time
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
### UpcomingEventHandler
|
|
|
|
|
### UpcomingEventHandler `STRUCT`
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
type UpcomingEventHandler[ID generic.Basic] struct{}
|
|
|
|
|
type UpcomingEventHandler[ID generic.Basic] func(activityId ID)
|
|
|
|
|
```
|
|
|
|
|
### Options
|
|
|
|
|
### Options `STRUCT`
|
|
|
|
|
活动选项
|
|
|
|
|
```go
|
|
|
|
|
type Options struct {
|
|
|
|
|