本文整理汇总了Golang中github.com/runningwild/haunts/base.GetDataDir函数的典型用法代码示例。如果您正苦于以下问题:Golang GetDataDir函数的具体用法?Golang GetDataDir怎么用?Golang GetDataDir使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetDataDir函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: InsertStartMenu
func InsertStartMenu(ui gui.WidgetParent) error {
var sm StartMenu
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "layout.json"), "json", &sm.layout)
if err != nil {
return err
}
sm.buttons = []ButtonLike{
&sm.layout.Menu.Continue,
&sm.layout.Menu.Versus,
&sm.layout.Menu.Online,
&sm.layout.Menu.Settings,
}
sm.layout.Menu.Continue.f = func(interface{}) {}
sm.layout.Menu.Versus.f = func(interface{}) {
ui.RemoveChild(&sm)
ui.AddChild(MakeGamePanel("versus/basic.lua", nil, nil))
}
sm.layout.Menu.Settings.f = func(interface{}) {}
sm.layout.Menu.Online.f = func(interface{}) {
ui.RemoveChild(&sm)
err := InsertOnlineMenu(ui)
if err != nil {
base.Error().Printf("Unable to make Online Menu: %v", err)
return
}
}
ui.AddChild(&sm)
return nil
}
示例2: InsertCreditsMenu
func InsertCreditsMenu(ui gui.WidgetParent) error {
var cm CreditsMenu
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "start", "credits", "layout.json"), "json", &cm.layout)
if err != nil {
return err
}
cm.buttons = []ButtonLike{
&cm.layout.Back,
&cm.layout.Up,
&cm.layout.Down,
}
cm.layout.Back.f = func(interface{}) {
ui.RemoveChild(&cm)
InsertStartMenu(ui)
}
d := base.GetDictionary(cm.layout.Credits.Size)
cm.layout.Credits.Scroll.Height = len(cm.layout.Credits.Lines) * int(d.MaxHeight())
cm.layout.Down.valid_func = func() bool {
return cm.layout.Credits.Scroll.Height > cm.layout.Credits.Scroll.Dy
}
cm.layout.Up.valid_func = cm.layout.Down.valid_func
cm.layout.Down.f = func(interface{}) {
cm.layout.Credits.Scroll.Down()
}
cm.layout.Up.f = func(interface{}) {
cm.layout.Credits.Scroll.Up()
}
cm.ui = ui
ui.AddChild(&cm)
return nil
}
示例3: MakeMainBar
func MakeMainBar(game *Game) (*MainBar, error) {
var mb MainBar
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "main_bar.json"), "json", &mb.layout)
if err != nil {
return nil, err
}
mb.all_buttons = []*Button{
&mb.layout.EndTurn,
&mb.layout.UnitLeft,
&mb.layout.UnitRight,
&mb.layout.ActionLeft,
&mb.layout.ActionRight,
}
mb.no_actions_buttons = []*Button{
&mb.layout.EndTurn,
&mb.layout.UnitLeft,
&mb.layout.UnitRight,
}
mb.layout.EndTurn.f = buttonFuncEndTurn
mb.layout.UnitRight.f = buttonFuncUnitRight
mb.layout.UnitRight.key = gin.Tab
mb.layout.UnitLeft.f = buttonFuncUnitLeft
mb.layout.UnitLeft.key = gin.ShiftTab
mb.layout.ActionLeft.f = buttonFuncActionLeft
mb.layout.ActionRight.f = buttonFuncActionRight
mb.game = game
return &mb, nil
}
示例4: chooserFromFile
func chooserFromFile(gp *GamePanel) lua.GoFunction {
return func(L *lua.State) int {
if !LuaCheckParamsOk(L, "ChooserFromFile", LuaString) {
return 0
}
gp.script.syncStart()
defer gp.script.syncEnd()
path := filepath.Join(base.GetDataDir(), L.ToString(-1))
chooser, done, err := makeChooserFromOptionBasicsFile(path)
if err != nil {
base.Error().Printf("Error making chooser: %v", err)
return 0
}
gp.AnchorBox.AddChild(chooser, gui.Anchor{0.5, 0.5, 0.5, 0.5})
gp.script.syncEnd()
res := <-done
L.NewTable()
for i, s := range res {
L.PushInteger(i + 1)
L.PushString(s)
L.SetTable(-3)
}
gp.script.syncStart()
gp.AnchorBox.RemoveChild(chooser)
return 1
}
}
示例5: GetAllPlayers
// Returns a map from player name to the path of that player's file.
func GetAllPlayers() map[string]string {
root := filepath.Join(base.GetDataDir(), "players")
players := make(map[string]string)
filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
return nil
}
f, err := os.Open(path)
if err != nil {
base.Warn().Printf("Unable to open player file: %s.", path)
return nil
}
defer f.Close()
dec := gob.NewDecoder(f)
var name string
err = dec.Decode(&name)
if err != nil {
base.Warn().Printf("Unable to read player file: %s.", path)
return nil
}
players[name] = path
return nil
})
return players
}
示例6: LoadAllEntities
func LoadAllEntities() {
base.RemoveRegistry("entities")
base.RegisterRegistry("entities", make(map[string]*entityDef))
basedir := base.GetDataDir()
base.RegisterAllObjectsInDir("entities", filepath.Join(basedir, "entities"), ".json", "json")
base.RegisterAllObjectsInDir("entities", filepath.Join(basedir, "objects"), ".json", "json")
}
示例7: MakeChooser
func MakeChooser(opts []Option) (*Chooser, <-chan []string, error) {
var ch Chooser
datadir := base.GetDataDir()
err := base.LoadAndProcessObject(filepath.Join(datadir, "ui", "chooser", "layout.json"), "json", &ch.layout)
if err != nil {
return nil, nil, err
}
ch.options = opts
ch.buttons = []*Button{
&ch.layout.Up,
&ch.layout.Down,
&ch.layout.Back,
&ch.layout.Next,
}
ch.non_scroll_buttons = []*Button{
&ch.layout.Back,
&ch.layout.Next,
}
ch.layout.Up.f = func(interface{}) {
ch.layout.Options.Up()
}
ch.layout.Down.f = func(interface{}) {
ch.layout.Options.Down()
}
done := make(chan []string, 1)
ch.selected = make(map[int]bool)
ch.layout.Back.f = func(interface{}) {
done <- nil
close(done)
}
ch.layout.Next.f = func(interface{}) {
var res []string
for i := range ch.options {
if ch.selected[i] {
res = append(res, ch.options[i].String())
}
}
done <- res
close(done)
}
ch.layout.Next.valid_func = func() bool {
return ch.selector(-1, ch.selected, false)
}
ch.min, ch.max = 1, 1
if ch.min == 1 && ch.max == 1 {
ch.selector = SelectExactlyOne
} else {
ch.selector = SelectInRange(ch.min, ch.max)
}
ch.info_region = gui.Region{
gui.Point{ch.layout.Info.X, ch.layout.Info.Y},
gui.Dims{ch.layout.Info.Dx, ch.layout.Info.Dy},
}
return &ch, done, nil
}
示例8: pickFromN
func pickFromN(gp *GamePanel) lua.GoFunction {
return func(L *lua.State) int {
if !LuaCheckParamsOk(L, "PickFromN", LuaInteger, LuaInteger, LuaTable) {
return 0
}
min := L.ToInteger(-3)
max := L.ToInteger(-2)
var options []hui.Option
var option_names []string
L.PushNil()
for L.Next(-2) != 0 {
name := L.ToString(-2)
option_names = append(option_names, name)
path := L.ToString(-1)
if !filepath.IsAbs(path) {
path = filepath.Join(base.GetDataDir(), path)
}
option := iconWithText{
Name: name,
Icon: texture.Object{Path: base.Path(path)},
}
options = append(options, &option)
L.Pop(1)
}
var selector hui.Selector
if min == 1 && max == 1 {
selector = hui.SelectExactlyOne
} else {
selector = hui.SelectInRange(min, max)
}
var chooser *hui.RosterChooser
done := make(chan struct{})
on_complete := func(m map[int]bool) {
gp.RemoveChild(chooser)
L.NewTable()
count := 0
for i := range options {
if m[i] {
count++
L.PushInteger(count)
L.PushString(option_names[i])
L.SetTable(-3)
}
}
done <- struct{}{}
}
chooser = hui.MakeRosterChooser(options, selector, on_complete, nil)
gp.script.syncStart()
gp.AddChild(chooser, gui.Anchor{0.5, 0.5, 0.5, 0.5})
gp.script.syncEnd()
<-done
return 1
}
}
示例9: SavePlayer
func SavePlayer(p *Player) error {
hash := fnv.New64()
hash.Write([]byte(p.Name))
name := fmt.Sprintf("%x.player", hash.Sum64())
f, err := os.Create(filepath.Join(base.GetDataDir(), "players", name))
if err != nil {
return err
}
defer f.Close()
base.SetStoreVal("last player", name)
return EncodePlayer(f, p)
}
示例10: registerMoves
func registerMoves() map[string]func() game.Action {
move_actions := make(map[string]*MoveDef)
base.RemoveRegistry("actions-move_actions")
base.RegisterRegistry("actions-move_actions", move_actions)
base.RegisterAllObjectsInDir("actions-move_actions", filepath.Join(base.GetDataDir(), "actions", "movement"), ".json", "json")
makers := make(map[string]func() game.Action)
for name := range move_actions {
cname := name
makers[cname] = func() game.Action {
a := Move{Defname: cname}
base.GetObject("actions-move_actions", &a)
return &a
}
}
return makers
}
示例11: registerBasicConditions
func registerBasicConditions() {
registry_name := "conditions-basic_conditions"
base.RemoveRegistry(registry_name)
base.RegisterRegistry(registry_name, make(map[string]*BasicConditionDef))
base.RegisterAllObjectsInDir(registry_name, filepath.Join(base.GetDataDir(), "conditions", "basic_conditions"), ".json", "json")
names := base.GetAllNamesInRegistry(registry_name)
for _, name := range names {
cname := name
f := func() Condition {
c := BasicCondition{Defname: cname}
base.GetObject(registry_name, &c)
return &c
}
condition_makers[name] = f
}
}
示例12: registerInteracts
func registerInteracts() map[string]func() game.Action {
interact_actions := make(map[string]*InteractDef)
base.RemoveRegistry("actions-interact_actions")
base.RegisterRegistry("actions-interact_actions", interact_actions)
base.RegisterAllObjectsInDir("actions-interact_actions", filepath.Join(base.GetDataDir(), "actions", "interacts"), ".json", "json")
makers := make(map[string]func() game.Action)
for name := range interact_actions {
cname := name
makers[cname] = func() game.Action {
a := Interact{Defname: cname}
base.GetObject("actions-interact_actions", &a)
return &a
}
}
return makers
}
示例13: MakeRosterChooser
func MakeRosterChooser(options []Option, selector Selector, on_complete func(map[int]bool), on_undo func()) *RosterChooser {
var rc RosterChooser
rc.options = options
err := base.LoadAndProcessObject(filepath.Join(base.GetDataDir(), "ui", "widgets", "roster_chooser.json"), "json", &rc.layout)
if err != nil {
base.Error().Printf("Failed to create RosterChooser: %v", err)
return nil
}
rc.Request_dims = gui.Dims{
rc.layout.Down.Data().Dx() + rc.layout.Option.Dx,
rc.layout.Num_options*rc.layout.Option.Dy + 2*int(base.GetDictionary(15).MaxHeight()),
}
rc.selected = make(map[int]bool)
rc.selector = selector
rc.on_complete = on_complete
rc.on_undo = on_undo
rc.render.options = make([]gui.Region, len(rc.options))
return &rc
}
示例14: registerSummonActions
func registerSummonActions() map[string]func() game.Action {
summons_actions := make(map[string]*SummonActionDef)
base.RemoveRegistry("actions-summons_actions")
base.RegisterRegistry("actions-summons_actions", summons_actions)
base.RegisterAllObjectsInDir("actions-summons_actions", filepath.Join(base.GetDataDir(), "actions", "summons"), ".json", "json")
makers := make(map[string]func() game.Action)
for name := range summons_actions {
cname := name
makers[cname] = func() game.Action {
a := SummonAction{Defname: cname}
base.GetObject("actions-summons_actions", &a)
if a.Ammo > 0 {
a.Current_ammo = a.Ammo
} else {
a.Current_ammo = -1
}
return &a
}
}
return makers
}
示例15: drawReticle
func (e *Entity) drawReticle(pos mathgl.Vec2, rgba [4]float64) {
if !e.hovered && !e.selected && !e.controlled {
return
}
gl.PushAttrib(gl.CURRENT_BIT)
r := byte(rgba[0] * 255)
g := byte(rgba[1] * 255)
b := byte(rgba[2] * 255)
a := byte(rgba[3] * 255)
switch {
case e.controlled:
gl.Color4ub(0, 0, r, a)
case e.selected:
gl.Color4ub(r, g, b, a)
default:
gl.Color4ub(r, g, b, byte((int(a)*200)>>8))
}
glow := texture.LoadFromPath(filepath.Join(base.GetDataDir(), "ui", "glow.png"))
dx := float64(e.last_render_width + 0.5)
dy := float64(e.last_render_width * 150 / 100)
glow.Render(float64(pos.X), float64(pos.Y), dx, dy)
gl.PopAttrib()
}