1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-10-31 16:27:18 -04:00
OpenDiablo2/main.go

72 lines
2.2 KiB
Go
Raw Normal View History

2019-10-24 09:31:59 -04:00
package main
import (
"image"
2019-10-24 09:31:59 -04:00
"log"
2019-11-10 08:51:02 -05:00
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2scene"
2019-11-10 03:36:53 -05:00
"github.com/hajimehoshi/ebiten/ebitenutil"
"github.com/OpenDiablo2/D2Shared/d2common"
"github.com/OpenDiablo2/D2Shared/d2data/d2mpq"
"github.com/OpenDiablo2/OpenDiablo2/d2core"
2019-10-24 09:31:59 -04:00
"github.com/hajimehoshi/ebiten"
"gopkg.in/alecthomas/kingpin.v2"
2019-10-24 09:31:59 -04:00
)
2019-11-06 22:12:15 -05:00
// GitBranch is set by the CI build process to the name of the branch
var GitBranch string
2019-11-06 22:12:15 -05:00
// GitCommit is set by the CI build process to the commit hash
var GitCommit string
2019-11-10 10:44:13 -05:00
var d2Engine d2core.Engine
2019-10-24 09:31:59 -04:00
var region = kingpin.Arg("region", "Region type id").Int()
var preset = kingpin.Arg("preset", "Level preset").Int()
2019-10-24 09:31:59 -04:00
func main() {
//procs := runtime.GOMAXPROCS(16)
//log.Printf("Setting gomaxprocs to 16, it was previously set to %d", procs)
//runtime.LockOSThread()
//defer runtime.UnlockOSThread()
//defer profile.Start(profile.ProfilePath(".")).Stop()
if len(GitBranch) == 0 {
GitBranch = "Local Build"
GitCommit = ""
}
2019-11-10 03:36:53 -05:00
d2common.SetBuildInfo(GitBranch, GitCommit)
log.SetFlags(log.Ldate | log.LUTC | log.Lmicroseconds | log.Llongfile)
2019-10-24 09:31:59 -04:00
log.Println("OpenDiablo2 - Open source Diablo 2 engine")
_, iconImage, err := ebitenutil.NewImageFromFile("d2logo.png", ebiten.FilterLinear)
if err == nil {
ebiten.SetWindowIcon([]image.Image{iconImage})
}
2019-11-10 08:51:02 -05:00
d2mpq.InitializeCryptoBuffer()
2019-11-10 03:36:53 -05:00
d2Engine = d2core.CreateEngine()
kingpin.Parse()
if *region == 0 {
d2Engine.SetNextScene(d2scene.CreateMainMenu(&d2Engine, &d2Engine, d2Engine.UIManager, d2Engine.SoundManager))
} else {
d2Engine.SetNextScene(d2scene.CreateMapEngineTest(&d2Engine, &d2Engine, d2Engine.UIManager, d2Engine.SoundManager, *region, *preset))
}
2019-10-24 09:31:59 -04:00
ebiten.SetCursorVisible(false)
ebiten.SetFullscreen(d2Engine.Settings.FullScreen)
ebiten.SetRunnableInBackground(d2Engine.Settings.RunInBackground)
ebiten.SetVsyncEnabled(d2Engine.Settings.VsyncEnabled)
ebiten.SetMaxTPS(d2Engine.Settings.TicksPerSecond)
if err := ebiten.Run(update, 800, 600, d2Engine.Settings.Scale, "OpenDiablo 2 ("+GitBranch+")"); err != nil {
2019-10-24 09:31:59 -04:00
log.Fatal(err)
}
}
func update(screen *ebiten.Image) error {
d2Engine.Update()
if ebiten.IsDrawingSkipped() {
return nil
}
d2Engine.Draw(screen)
return nil
}