66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/heroiclabs/nakama-common/runtime"
|
|
)
|
|
|
|
// Example RPC
|
|
func HelloWorld(
|
|
ctx context.Context,
|
|
logger runtime.Logger,
|
|
db *sql.DB,
|
|
nk runtime.NakamaModule,
|
|
payload string,
|
|
) (string, error) {
|
|
logger.Info("HelloWorld RPC called — payload: %s", payload)
|
|
return `{"message": "Hello from Go RPC!"}`, nil
|
|
}
|
|
|
|
// Required module initializer
|
|
func InitModule(
|
|
ctx context.Context,
|
|
logger runtime.Logger,
|
|
db *sql.DB,
|
|
nk runtime.NakamaModule,
|
|
initializer runtime.Initializer,
|
|
) error {
|
|
if err := initializer.RegisterRpc("hello_world", HelloWorld); err != nil {
|
|
logger.Error("Failed to register RPC: %v", err)
|
|
return err
|
|
}
|
|
if err := initializer.RegisterMatch("tictactoe", NewMatch); err != nil {
|
|
logger.Error("Failed to register RPC: %v", err)
|
|
return err
|
|
}
|
|
// Match making
|
|
if err := initializer.RegisterRpc("leave_matchmaking", rpcLeaveMatchmaking); err != nil {
|
|
logger.Error("RegisterRpc leave_matchmaking failed: %v", err)
|
|
return err
|
|
}
|
|
if err := initializer.RegisterMatchmakerMatched(MatchmakerMatched); err != nil {
|
|
logger.Error("RegisterMatchmakerMatched failed: %v", err)
|
|
return err
|
|
}
|
|
|
|
err := nk.LeaderboardCreate(
|
|
ctx,
|
|
"tictactoe", // id
|
|
true, // authoritative
|
|
"desc", // sortOrder
|
|
"incr", // operator
|
|
"", // resetSchedule
|
|
map[string]interface{}{}, // metadata
|
|
)
|
|
|
|
if err != nil && err.Error() != "Leaderboard ID already exists" {
|
|
return err
|
|
}
|
|
|
|
logger.Info("Leaderboard tictactoe ready")
|
|
logger.Info("Go module loaded successfully!")
|
|
return nil
|
|
}
|