gopenfusion/shard/npcloader.go

34 lines
733 B
Go

package shard
import (
"encoding/json"
"log"
"os"
"github.com/CPunch/gopenfusion/internal/config"
"github.com/CPunch/gopenfusion/shard/entity"
)
type NPCData struct {
NPCs map[string]entity.NPC `json:"NPCs"`
}
func (server *ShardServer) LoadNPCs() {
log.Print("Loading NPCs...")
data, err := os.ReadFile(config.GetTDataPath() + "/NPCs.json")
if err != nil {
log.Printf("Warning: failed to load NPCs: %v", err)
return
}
// yes, we have to do it this way so our NPCs IDs will be incremented and unique
var NPCs NPCData
json.Unmarshal(data, &NPCs)
for _, npc := range NPCs.NPCs {
server.addEntity(entity.NewNPC(npc.X, npc.Y, npc.Z, npc.Angle, npc.NPCType))
}
log.Printf("Loaded %d NPCs!", len(NPCs.NPCs))
}