文档及许可

This commit is contained in:
kercylan98 2023-05-29 20:15:13 +08:00
parent 3f453efef6
commit f6f8bbebc3
12 changed files with 58 additions and 10 deletions

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 yuanqi
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,4 @@
// Package components 通用组件的内置实现
// - lockstep.go 帧同步组件
// - lockstep_options.go 帧同步组件可选项
package components

4
component/doc.go Normal file
View File

@ -0,0 +1,4 @@
// Package component 通用组件的接口定义
// - lockstep.go 帧同步组件接口定义
// - lockstep_client.go 帧同步组件客户端接口定义
package component

View File

@ -1,5 +1,6 @@
package component
// Lockstep 帧同步组件接口定义
type Lockstep[ClientID comparable, Command any] interface {
// JoinClient 加入客户端
JoinClient(client LockstepClient[ClientID])
@ -28,5 +29,6 @@ type Lockstep[ClientID comparable, Command any] interface {
}
type (
// LockstepStoppedEventHandle 帧同步停止广播事件处理函数
LockstepStoppedEventHandle[ClientID comparable, Command any] func(lockstep Lockstep[ClientID, Command])
)

View File

@ -1,7 +1,11 @@
package component
import "github.com/kercylan98/minotaur/game"
// LockstepClient 帧同步客户端接口定义
// - 客户端应该具备ID及写入数据包的实现
type LockstepClient[ID comparable] interface {
game.Player[ID]
// GetID 用户玩家ID
GetID() ID
// Send 发送数据包
// - messageType: websocket模式中指定消息类型
Send(packet []byte, messageType ...int)
}

View File

@ -11,7 +11,10 @@ import (
"time"
)
// LoadHandle 配置加载处理函数
type LoadHandle func(handle func(filename string, config any) error)
// RefreshHandle 配置刷新处理函数
type RefreshHandle func()
const (
@ -28,12 +31,14 @@ var (
mutex sync.Mutex
)
// Init 配置初始化
func Init(loadDir string, loadHandle LoadHandle, refreshHandle RefreshHandle) {
cLoadDir = loadDir
cLoadHandle = loadHandle
cRefreshHandle = refreshHandle
}
// Load 加载配置
func Load() {
mutex.Lock()
if cTicker != nil {
@ -53,6 +58,7 @@ func Load() {
mutex.Unlock()
}
// WithTickerLoad 通过定时器加载配置
func WithTickerLoad(ticker *timer.Ticker, interval time.Duration) {
if ticker != cTicker && cTicker != nil {
cTicker.StopTimer(tickerLoadRefresh)
@ -65,12 +71,14 @@ func WithTickerLoad(ticker *timer.Ticker, interval time.Duration) {
})
}
// StopTickerLoad 停止通过定时器加载配置
func StopTickerLoad() {
if cTicker != nil {
cTicker.StopTimer(tickerLoadRefresh)
}
}
// Refresh 刷新配置
func Refresh() {
mutex.Lock()
cRefreshHandle()

2
config/doc.go Normal file
View File

@ -0,0 +1,2 @@
// Package config 基于配置导表功能实现的配置加载及刷新功能
package config

View File

@ -1,11 +1,12 @@
package config
type RefreshEvent func()
// RefreshEventHandle 配置刷新事件处理函数
type RefreshEventHandle func()
var configRefreshEventHandles []func()
// RegConfigRefreshEvent 当配置刷新时将立即执行被注册的事件处理函数
func RegConfigRefreshEvent(handle RefreshEvent) {
func RegConfigRefreshEvent(handle RefreshEventHandle) {
configRefreshEventHandles = append(configRefreshEventHandles, handle)
}

2
examples/doc.go Normal file
View File

@ -0,0 +1,2 @@
// Package examples 提供了多种实现案例
package examples

View File

@ -4,13 +4,8 @@ import "github.com/kercylan98/minotaur/server"
// Player 玩家
type Player[ID comparable] interface {
// GetID 用户玩家ID
GetID() ID
// UseConn 指定连接
UseConn(conn *server.Conn)
// Send 发送数据包
// - messageType: websocket模式中指定消息类型
Send(packet []byte, messageType ...int)
// Close 关闭玩家并且释放其资源
Close()
}

3
local-doc.bat Normal file
View File

@ -0,0 +1,3 @@
@echo off
echo Open: http://localhost:9998/pkg/github.com/kercylan98/minotaur/
godoc -http=:9998 -play

2
local-doc.sh Normal file
View File

@ -0,0 +1,2 @@
echo Open: http://localhost:9998/pkg/github.com/kercylan98/minotaur/
godoc -http=:9998 -play