refactor(logic): 重构服务器启动逻辑与任务状态管理

- 移除了 `gcmd` 包在 controller 中的直接使用,改为通过参数传递端口和服务器类型
- 统一使用 `GetTask` 和 `SetTask` 方法替代直接访问 `TaskList` 数组,提升代码可维护性
- 修改了战斗逻辑中部分调试打印语句,并优化战斗循环结束日志输出
- 调整了新手玩家初始化流程,默认完成新手任务4
- 更新了数据库模型字段及结构定义,如增加 `max_ts` 字段、扩展 `TaskList` 长度等
- 改进了宠物添加逻辑,采用 SQL 方式确保捕捉时间唯一递增
- 清理了无用或注释掉的旧代码块
This commit is contained in:
2025-12-08 17:03:43 +08:00
parent 7005c1047f
commit 8983222dcb
21 changed files with 341 additions and 177 deletions

View File

@@ -23,15 +23,10 @@ const (
maxPortRetryCount = 5
)
var defaultPort = gconv.Int(cool.Config.Port) //读入默认的端口
var candidatePorts = cool.Config.GamePort
// determinePort 确定服务器使用的端口
func determinePort(serverid uint16) (int, error) {
// 服务器ID为0时使用默认端口
if serverid == 0 {
return defaultPort, nil
}
func determinePort() (int, error) {
// 尝试从指定端口列表中找可用端口最多尝试maxPortRetryCount轮
for i := 0; i < maxPortRetryCount; i++ {
@@ -61,35 +56,22 @@ func isPortAvailable(port uint64) bool {
// 如果id是0,那就是login server
func Start(serverid uint16) {
if serverid != 0 { //logic服务器
// 确定端口
port, err := determinePort(serverid)
if err != nil {
log.Fatalf("Failed to determine port: %v", err)
}
ser := socket.NewServer(
socket.WithCORS(),
socket.WithPort(port),
)
// go func() {
t := rpc.StartClient(serverid, uint16(port), ser)
controller.Maincontroller.RPCClient = *t //将RPC赋值Start
controller.Maincontroller.Port = uint16(port) //赋值服务器ID
xmlres.Initfile()
blservice.NewLoginServiceService().SetServerID(serverid, gconv.Uint16(port))
ser.Boot()
} else {
go rpc.StartServer()
//go rpcserver() //对login tcp启动
//ants.Submit(rpcserver)
socket.NewServer(
socket.WithCORS(),
socket.WithPort(defaultPort),
).Boot()
// 确定端口
port, err := determinePort()
if err != nil {
log.Fatalf("Failed to determine port: %v", err)
}
ser := socket.NewServer(
socket.WithCORS(),
socket.WithPort(port),
)
// go func() {
t := rpc.StartClient(serverid, uint16(port), ser)
controller.Maincontroller.RPCClient = *t //将RPC赋值Start
controller.Maincontroller.Port = uint16(port) //赋值服务器ID
controller.Init(true)
xmlres.Initfile()
blservice.NewLoginServiceService().SetServerID(serverid, gconv.Uint16(port))
ser.Boot()
}