docs: 优化文档展示,适配部分无目录文档,适配非结构体的类型定义,增加测试用例文档
This commit is contained in:
@@ -1,27 +1,10 @@
|
||||
# Game
|
||||
|
||||
game 目录下包含了各类通用的游戏玩法性内容,其中该目录主要为基础性内容,具体目录将对应不同的游戏功能性内容。
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/game)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|:--|:--
|
||||
|
||||
|
||||
> 结构体定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|
||||
</details>
|
||||
game 目录下包含了各类通用的游戏玩法性内容,其中该目录主要为基础性内容,具体目录将对应不同的游戏功能性内容。
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -1,27 +1,22 @@
|
||||
# Main
|
||||
|
||||
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/main)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|函数名称|描述
|
||||
|:--|:--
|
||||
|
||||
|
||||
> 结构体定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
|
||||
@@ -1,27 +1,22 @@
|
||||
# Activities
|
||||
|
||||
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/activities)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|函数名称|描述
|
||||
|:--|:--
|
||||
|
||||
|
||||
> 结构体定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
|
||||
@@ -1,27 +1,22 @@
|
||||
# Demoactivity
|
||||
|
||||
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/demoactivity)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|函数名称|描述
|
||||
|:--|:--
|
||||
|
||||
|
||||
> 结构体定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
|
||||
@@ -1,32 +1,29 @@
|
||||
# Types
|
||||
|
||||
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/types)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
> 类型定义
|
||||
|
||||
|函数|描述
|
||||
|:--|:--
|
||||
|
||||
|
||||
> 结构体定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|[DemoActivityData](#demoactivitydata)|暂无描述...
|
||||
|类型|名称|描述
|
||||
|:--|:--|:--
|
||||
|`STRUCT`|[DemoActivityData](#demoactivitydata)|暂无描述...
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
### DemoActivityData
|
||||
***
|
||||
## 详情信息
|
||||
### DemoActivityData `STRUCT`
|
||||
|
||||
```go
|
||||
type DemoActivityData struct {
|
||||
|
||||
@@ -1,42 +1,46 @@
|
||||
# Fight
|
||||
|
||||
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/fight)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|函数名称|描述
|
||||
|:--|:--
|
||||
|[NewTurnBased](#NewTurnBased)|创建一个新的回合制
|
||||
|
||||
|
||||
> 结构体定义
|
||||
> 类型定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|[TurnBased](#turnbased)|回合制
|
||||
|[TurnBasedControllerInfo](#turnbasedcontrollerinfo)|暂无描述...
|
||||
|[TurnBasedControllerAction](#turnbasedcontrolleraction)|暂无描述...
|
||||
|[TurnBasedController](#turnbasedcontroller)|回合制控制器
|
||||
|[TurnBasedEntitySwitchEventHandler](#turnbasedentityswitcheventhandler)|暂无描述...
|
||||
|类型|名称|描述
|
||||
|:--|:--|:--
|
||||
|`STRUCT`|[TurnBased](#turnbased)|回合制
|
||||
|`INTERFACE`|[TurnBasedControllerInfo](#turnbasedcontrollerinfo)|暂无描述...
|
||||
|`INTERFACE`|[TurnBasedControllerAction](#turnbasedcontrolleraction)|暂无描述...
|
||||
|`STRUCT`|[TurnBasedController](#turnbasedcontroller)|回合制控制器
|
||||
|`STRUCT`|[TurnBasedEntitySwitchEventHandler](#turnbasedentityswitcheventhandler)|暂无描述...
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
#### func NewTurnBased(calcNextTurnDuration func ( Camp, Entity) time.Duration) *TurnBased[CampID, EntityID, Camp, Entity]
|
||||
<span id="NewTurnBased"></span>
|
||||
> 创建一个新的回合制
|
||||
> - calcNextTurnDuration 将返回下一次行动时间间隔,适用于按照速度计算下一次行动时间间隔的情况。当返回 0 时,将使用默认的行动超时时间
|
||||
|
||||
***
|
||||
### TurnBased
|
||||
### TurnBased `STRUCT`
|
||||
回合制
|
||||
```go
|
||||
type TurnBased[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] struct {
|
||||
@@ -60,25 +64,37 @@ type TurnBased[CampID comparable, EntityID comparable, Camp generic.IdR[CampID],
|
||||
closed bool
|
||||
}
|
||||
```
|
||||
### TurnBasedControllerInfo
|
||||
### TurnBasedControllerInfo `INTERFACE`
|
||||
|
||||
```go
|
||||
type TurnBasedControllerInfo[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] struct{}
|
||||
type TurnBasedControllerInfo[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] interface {
|
||||
GetRound() int
|
||||
GetCamp() Camp
|
||||
GetEntity() Entity
|
||||
GetActionTimeoutDuration() time.Duration
|
||||
GetActionStartTime() time.Time
|
||||
GetActionEndTime() time.Time
|
||||
Stop()
|
||||
}
|
||||
```
|
||||
### TurnBasedControllerAction
|
||||
### TurnBasedControllerAction `INTERFACE`
|
||||
|
||||
```go
|
||||
type TurnBasedControllerAction[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] struct{}
|
||||
type TurnBasedControllerAction[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] interface {
|
||||
TurnBasedControllerInfo[CampID, EntityID, Camp, Entity]
|
||||
Finish()
|
||||
Refresh(duration time.Duration) time.Time
|
||||
}
|
||||
```
|
||||
### TurnBasedController
|
||||
### TurnBasedController `STRUCT`
|
||||
回合制控制器
|
||||
```go
|
||||
type TurnBasedController[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] struct {
|
||||
tb *TurnBased[CampID, EntityID, Camp, Entity]
|
||||
}
|
||||
```
|
||||
### TurnBasedEntitySwitchEventHandler
|
||||
### TurnBasedEntitySwitchEventHandler `STRUCT`
|
||||
|
||||
```go
|
||||
type TurnBasedEntitySwitchEventHandler[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] struct{}
|
||||
type TurnBasedEntitySwitchEventHandler[CampID comparable, EntityID comparable, Camp generic.IdR[CampID], Entity generic.IdR[EntityID]] func(controller TurnBasedControllerAction[CampID, EntityID, Camp, Entity])
|
||||
```
|
||||
|
||||
@@ -1,45 +1,60 @@
|
||||
# Space
|
||||
|
||||
space 游戏中常见的空间设计,例如房间、地图等
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/space)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
space 游戏中常见的空间设计,例如房间、地图等
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|函数名称|描述
|
||||
|:--|:--
|
||||
|[NewRoomManager](#NewRoomManager)|创建房间管理器 RoomManager 的实例
|
||||
|[NewRoomControllerOptions](#NewRoomControllerOptions)|创建房间控制器选项
|
||||
|
||||
|
||||
> 结构体定义
|
||||
> 类型定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|[RoomController](#roomcontroller)|对房间进行操作的控制器,由 RoomManager 接管后返回
|
||||
|[RoomManager](#roommanager)|房间管理器是用于对房间进行管理的基本单元,通过该实例可以对房间进行增删改查等操作
|
||||
|[RoomAssumeControlEventHandle](#roomassumecontroleventhandle)|暂无描述...
|
||||
|[RoomControllerOptions](#roomcontrolleroptions)|暂无描述...
|
||||
|类型|名称|描述
|
||||
|:--|:--|:--
|
||||
|`STRUCT`|[RoomController](#roomcontroller)|对房间进行操作的控制器,由 RoomManager 接管后返回
|
||||
|`STRUCT`|[RoomManager](#roommanager)|房间管理器是用于对房间进行管理的基本单元,通过该实例可以对房间进行增删改查等操作
|
||||
|`STRUCT`|[RoomAssumeControlEventHandle](#roomassumecontroleventhandle)|暂无描述...
|
||||
|`STRUCT`|[RoomControllerOptions](#roomcontrolleroptions)|暂无描述...
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
#### func NewRoomManager() *RoomManager[EntityID, RoomID, Entity, Room]
|
||||
<span id="NewRoomManager"></span>
|
||||
> 创建房间管理器 RoomManager 的实例
|
||||
|
||||
示例代码:
|
||||
```go
|
||||
|
||||
func ExampleNewRoomManager() {
|
||||
var rm = space.NewRoomManager[string, int64, *Player, *Room]()
|
||||
fmt.Println(rm == nil)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
***
|
||||
#### func NewRoomControllerOptions() *RoomControllerOptions[EntityID, RoomID, Entity, Room]
|
||||
<span id="NewRoomControllerOptions"></span>
|
||||
> 创建房间控制器选项
|
||||
|
||||
***
|
||||
### RoomController
|
||||
### RoomController `STRUCT`
|
||||
对房间进行操作的控制器,由 RoomManager 接管后返回
|
||||
```go
|
||||
type RoomController[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] struct {
|
||||
@@ -53,7 +68,7 @@ type RoomController[EntityID comparable, RoomID comparable, Entity generic.IdR[E
|
||||
owner *EntityID
|
||||
}
|
||||
```
|
||||
### RoomManager
|
||||
### RoomManager `STRUCT`
|
||||
房间管理器是用于对房间进行管理的基本单元,通过该实例可以对房间进行增删改查等操作
|
||||
- 该实例是线程安全的
|
||||
```go
|
||||
@@ -63,12 +78,12 @@ type RoomManager[EntityID comparable, RoomID comparable, Entity generic.IdR[Enti
|
||||
rooms map[RoomID]*RoomController[EntityID, RoomID, Entity, Room]
|
||||
}
|
||||
```
|
||||
### RoomAssumeControlEventHandle
|
||||
### RoomAssumeControlEventHandle `STRUCT`
|
||||
|
||||
```go
|
||||
type RoomAssumeControlEventHandle[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] struct{}
|
||||
type RoomAssumeControlEventHandle[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] func(controller *RoomController[EntityID, RoomID, Entity, Room])
|
||||
```
|
||||
### RoomControllerOptions
|
||||
### RoomControllerOptions `STRUCT`
|
||||
|
||||
```go
|
||||
type RoomControllerOptions[EntityID comparable, RoomID comparable, Entity generic.IdR[EntityID], Room generic.IdR[RoomID]] struct {
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
# Task
|
||||
|
||||
|
||||
|
||||
[](https://pkg.go.dev/github.com/kercylan98/minotaur/task)
|
||||

|
||||
|
||||
## 目录
|
||||
列出了该 `package` 下所有的函数,可通过目录进行快捷跳转 ❤️
|
||||
|
||||
|
||||
|
||||
## 目录导航
|
||||
列出了该 `package` 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️
|
||||
<details>
|
||||
<summary>展开 / 折叠目录</summary
|
||||
<summary>展开 / 折叠目录导航</summary>
|
||||
|
||||
|
||||
> 包级函数定义
|
||||
|
||||
|函数|描述
|
||||
|函数名称|描述
|
||||
|:--|:--
|
||||
|[Cond](#Cond)|创建任务条件
|
||||
|[RegisterRefreshTaskCounterEvent](#RegisterRefreshTaskCounterEvent)|注册特定任务类型的刷新任务计数器事件处理函数
|
||||
@@ -29,48 +30,95 @@
|
||||
|[NewTask](#NewTask)|生成任务
|
||||
|
||||
|
||||
> 结构体定义
|
||||
> 类型定义
|
||||
|
||||
|结构体|描述
|
||||
|:--|:--
|
||||
|[Condition](#condition)|任务条件
|
||||
|[RefreshTaskCounterEventHandler](#refreshtaskcountereventhandler)|暂无描述...
|
||||
|[Option](#option)|任务选项
|
||||
|[Status](#status)|暂无描述...
|
||||
|[Task](#task)|是对任务信息进行描述和处理的结构体
|
||||
|类型|名称|描述
|
||||
|:--|:--|:--
|
||||
|`STRUCT`|[Condition](#condition)|任务条件
|
||||
|`STRUCT`|[RefreshTaskCounterEventHandler](#refreshtaskcountereventhandler)|暂无描述...
|
||||
|`STRUCT`|[Option](#option)|任务选项
|
||||
|`STRUCT`|[Status](#status)|暂无描述...
|
||||
|`STRUCT`|[Task](#task)|是对任务信息进行描述和处理的结构体
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
## 详情信息
|
||||
#### func Cond(k any, v any) Condition
|
||||
<span id="Cond"></span>
|
||||
> 创建任务条件
|
||||
|
||||
<details>
|
||||
<summary>查看 / 收起单元测试</summary>
|
||||
|
||||
|
||||
```go
|
||||
|
||||
func TestCond(t *testing.T) {
|
||||
task := NewTask(WithType("T"), WithCounter(5), WithCondition(Cond("N", 5).Cond("M", 10)))
|
||||
task.AssignConditionValueAndRefresh("N", 5)
|
||||
task.AssignConditionValueAndRefresh("M", 10)
|
||||
RegisterRefreshTaskCounterEvent[*Player](task.Type, func(taskType string, trigger *Player, count int64) {
|
||||
fmt.Println("Player", count)
|
||||
for _, t := range trigger.tasks[taskType] {
|
||||
fmt.Println(t.CurrCount, t.IncrementCounter(count).Status)
|
||||
}
|
||||
})
|
||||
RegisterRefreshTaskConditionEvent[*Player](task.Type, func(taskType string, trigger *Player, condition Condition) {
|
||||
fmt.Println("Player", condition)
|
||||
for _, t := range trigger.tasks[taskType] {
|
||||
fmt.Println(t.CurrCount, t.AssignConditionValueAndRefresh("N", 5).Status)
|
||||
}
|
||||
})
|
||||
RegisterRefreshTaskCounterEvent[*Monster](task.Type, func(taskType string, trigger *Monster, count int64) {
|
||||
fmt.Println("Monster", count)
|
||||
})
|
||||
player := &Player{tasks: map[string][]*Task{task.Type: {task}}}
|
||||
OnRefreshTaskCounterEvent(task.Type, player, 1)
|
||||
OnRefreshTaskCounterEvent(task.Type, player, 2)
|
||||
OnRefreshTaskCounterEvent(task.Type, player, 3)
|
||||
OnRefreshTaskCounterEvent(task.Type, new(Monster), 3)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
***
|
||||
#### func RegisterRefreshTaskCounterEvent(taskType string, handler RefreshTaskCounterEventHandler[Trigger])
|
||||
<span id="RegisterRefreshTaskCounterEvent"></span>
|
||||
> 注册特定任务类型的刷新任务计数器事件处理函数
|
||||
|
||||
***
|
||||
#### func OnRefreshTaskCounterEvent(taskType string, trigger any, count int64)
|
||||
<span id="OnRefreshTaskCounterEvent"></span>
|
||||
> 触发特定任务类型的刷新任务计数器事件
|
||||
|
||||
***
|
||||
#### func RegisterRefreshTaskConditionEvent(taskType string, handler RefreshTaskConditionEventHandler[Trigger])
|
||||
<span id="RegisterRefreshTaskConditionEvent"></span>
|
||||
> 注册特定任务类型的刷新任务条件事件处理函数
|
||||
|
||||
***
|
||||
#### func OnRefreshTaskConditionEvent(taskType string, trigger any, condition Condition)
|
||||
<span id="OnRefreshTaskConditionEvent"></span>
|
||||
> 触发特定任务类型的刷新任务条件事件
|
||||
|
||||
***
|
||||
#### func WithType(taskType string) Option
|
||||
<span id="WithType"></span>
|
||||
> 设置任务类型
|
||||
|
||||
***
|
||||
#### func WithCondition(condition Condition) Option
|
||||
<span id="WithCondition"></span>
|
||||
> 设置任务完成条件,当满足条件时,任务状态为完成
|
||||
> - 任务条件值需要变更时可通过 Task.AssignConditionValueAndRefresh 方法变更
|
||||
> - 当多次设置该选项时,后面的设置会覆盖之前的设置
|
||||
|
||||
***
|
||||
#### func WithCounter(counter int64, initCount ...int64) Option
|
||||
<span id="WithCounter"></span>
|
||||
@@ -78,29 +126,34 @@
|
||||
> - 一些场景下,任务计数器可能会溢出,此时可通过 WithOverflowCounter 设置可溢出的任务计数器
|
||||
> - 当多次设置该选项时,后面的设置会覆盖之前的设置
|
||||
> - 如果需要初始化计数器的值,可通过 initCount 参数设置
|
||||
|
||||
***
|
||||
#### func WithOverflowCounter(counter int64, initCount ...int64) Option
|
||||
<span id="WithOverflowCounter"></span>
|
||||
> 设置可溢出的任务计数器,当计数器达到要求时,任务状态为完成
|
||||
> - 当多次设置该选项时,后面的设置会覆盖之前的设置
|
||||
> - 如果需要初始化计数器的值,可通过 initCount 参数设置
|
||||
|
||||
***
|
||||
#### func WithDeadline(deadline time.Time) Option
|
||||
<span id="WithDeadline"></span>
|
||||
> 设置任务截止时间,超过截至时间并且任务未完成时,任务状态为失败
|
||||
|
||||
***
|
||||
#### func WithLimitedDuration(start time.Time, duration time.Duration) Option
|
||||
<span id="WithLimitedDuration"></span>
|
||||
> 设置任务限时,超过限时时间并且任务未完成时,任务状态为失败
|
||||
|
||||
***
|
||||
#### func NewTask(options ...Option) *Task
|
||||
<span id="NewTask"></span>
|
||||
> 生成任务
|
||||
|
||||
***
|
||||
### Condition
|
||||
### Condition `STRUCT`
|
||||
任务条件
|
||||
```go
|
||||
type Condition struct{}
|
||||
type Condition map[any]any
|
||||
```
|
||||
#### func (Condition) Cond(k any, v any) Condition
|
||||
> 创建任务条件
|
||||
@@ -168,24 +221,24 @@ type Condition struct{}
|
||||
#### func (Condition) GetAny(key any) any
|
||||
> 获取特定类型的任务条件值,该值必须与预期类型一致,否则返回零值
|
||||
***
|
||||
### RefreshTaskCounterEventHandler
|
||||
### RefreshTaskCounterEventHandler `STRUCT`
|
||||
|
||||
```go
|
||||
type RefreshTaskCounterEventHandler[Trigger any] struct{}
|
||||
type RefreshTaskCounterEventHandler[Trigger any] func(taskType string, trigger Trigger, count int64)
|
||||
```
|
||||
### Option
|
||||
### Option `STRUCT`
|
||||
任务选项
|
||||
```go
|
||||
type Option struct{}
|
||||
type Option func(task *Task)
|
||||
```
|
||||
### Status
|
||||
### Status `STRUCT`
|
||||
|
||||
```go
|
||||
type Status struct{}
|
||||
type Status byte
|
||||
```
|
||||
#### func (Status) String() string
|
||||
***
|
||||
### Task
|
||||
### Task `STRUCT`
|
||||
是对任务信息进行描述和处理的结构体
|
||||
```go
|
||||
type Task struct {
|
||||
|
||||
Reference in New Issue
Block a user