2020-02-08 21:02:37 -05:00
package d2gui
import (
"errors"
2020-06-29 00:41:58 -04:00
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
2020-02-08 21:02:37 -05:00
)
var (
ErrWasInit = errors . New ( "gui system is already initialized" )
ErrNotInit = errors . New ( "gui system is not initialized" )
)
2020-02-17 22:11:52 -05:00
var singleton * manager
2020-02-08 21:02:37 -05:00
func Initialize ( ) error {
2020-02-09 14:12:04 -05:00
verifyNotInit ( )
2020-02-08 21:02:37 -05:00
var err error
if singleton , err = createGuiManager ( ) ; err != nil {
return err
}
return nil
}
2020-06-29 00:41:58 -04:00
func Render ( target d2interface . Surface ) error {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-08 21:02:37 -05:00
return singleton . render ( target )
}
func Advance ( elapsed float64 ) error {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-08 21:02:37 -05:00
return singleton . advance ( elapsed )
}
2020-07-03 14:00:56 -04:00
func CreateLayout ( renderer d2interface . Renderer , positionType PositionType ) * Layout {
2020-02-24 22:35:21 -05:00
verifyWasInit ( )
2020-07-03 14:00:56 -04:00
return createLayout ( renderer , positionType )
2020-02-17 22:11:52 -05:00
}
2020-02-24 22:35:21 -05:00
func SetLayout ( layout * Layout ) {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-24 22:35:21 -05:00
singleton . SetLayout ( layout )
2020-02-08 21:02:37 -05:00
}
2020-06-24 18:46:03 -04:00
// ShowLoadScreen renders the loading progress screen. The provided progress argument defines the loading animation's state in the range `[0, 1]`, where `0` is initial frame and `1` is the final frame
2020-02-08 21:02:37 -05:00
func ShowLoadScreen ( progress float64 ) {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-08 21:02:37 -05:00
singleton . showLoadScreen ( progress )
}
func HideLoadScreen ( ) {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-08 21:02:37 -05:00
singleton . hideLoadScreen ( )
}
func ShowCursor ( ) {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-08 21:02:37 -05:00
singleton . showCursor ( )
}
func HideCursor ( ) {
2020-02-09 14:12:04 -05:00
verifyWasInit ( )
2020-02-08 21:02:37 -05:00
singleton . hideCursor ( )
}
2020-02-09 14:12:04 -05:00
func verifyWasInit ( ) {
2020-02-08 21:02:37 -05:00
if singleton == nil {
panic ( ErrNotInit )
}
}
2020-02-09 14:12:04 -05:00
func verifyNotInit ( ) {
2020-02-08 21:02:37 -05:00
if singleton != nil {
panic ( ErrWasInit )
}
}