func init() { runtime.LockOSThread() sys = system.Make(gos.GetSystemInterface()) datadir = filepath.Join(os.Args[0], "..", "..") base.SetDatadir(datadir) base.Log().Printf("Setting datadir: %s", datadir) wdx = 1000 wdy = 800 var key_binds base.KeyBinds base.LoadJson(filepath.Join(datadir, "key_binds.json"), &key_binds) fmt.Printf("Prething: %v\n", key_binds) key_map = key_binds.MakeKeyMap() base.SetDefaultKeyMap(key_map) }
func (u SetupComplete) Apply(_g interface{}) { g := _g.(*Game) if g.Setup == nil { return } sideCount := make(map[int]int) // Must have at least two sides sideCount[0] = 0 sideCount[1] = 0 for _, spd := range g.Setup.Players { sideCount[spd.Side]++ } g.Engines = make(map[int64]*PlayerData) for id, player := range g.Setup.Players { var gid Gid if id < 0 { gid = Gid(fmt.Sprintf("Ai:%d", -id)) } else { gid = Gid(fmt.Sprintf("Engine:%d", id)) } g.Engines[id] = &PlayerData{ PlayerGid: Gid(gid), Side: player.Side, ChampIndex: player.ChampIndex, } } // Now that we have the information we can set up a lot of the local data for // this engine's player. if g.IsPlaying() { g.local.Side = g.Engines[g.local.Engine.Id()].Side g.local.Gid = g.Engines[g.local.Engine.Id()].PlayerGid g.local.Data = g.Engines[g.local.Engine.Id()] } var room Room err := base.LoadJson(filepath.Join(base.GetDataDir(), "rooms/basic.json"), &room) if err != nil { base.Error().Fatalf("%v", err) } errs := room.Validate() for _, err := range errs { base.Error().Printf("%v", err) } if len(errs) > 0 { base.Error().Fatalf("Errors with the level, bailing...") } g.Level = &Level{} g.Level.Room = room g.Rng = cmwc.MakeGoodCmwc() g.Rng.Seed(u.Seed) g.Ents = make(map[Gid]Ent) g.Friction = 0.97 g.losCache = makeLosCache(g.Level.Room.Dx, g.Level.Room.Dy) sides := make(map[int][]int64) var playerDatas []*PlayerData base.DoOrdered(g.Engines, func(a, b int64) bool { return a < b }, func(id int64, data *PlayerData) { sides[data.Side] = append(sides[data.Side], id) playerDatas = append(playerDatas, data) }) for id, ed := range g.Engines { base.Log().Printf("%v -> %v", id, *ed) } g.AddPlayers(playerDatas) g.MakeControlPoints() g.Init() base.Log().Printf("Nillifying g.Setup()") g.Setup = nil }