当前位置: 首页>>代码示例>>Golang>>正文


Golang State.GetTable方法代码示例

本文整理汇总了Golang中github.com/xenith-studios/golua.State.GetTable方法的典型用法代码示例。如果您正苦于以下问题:Golang State.GetTable方法的具体用法?Golang State.GetTable怎么用?Golang State.GetTable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/xenith-studios/golua.State的用法示例。


在下文中一共展示了State.GetTable方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: LuaToEntity

// Gets the id out of the table at the specified index and returns the
// associated Entity, or nil if there is none.
func LuaToEntity(L *lua.State, game *Game, index int) *Entity {
	L.PushString("id")
	L.GetTable(index - 1)
	id := EntityId(L.ToInteger(-1))
	L.Pop(1)
	return game.EntityById(id)
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:9,代码来源:script_utils.go

示例2: LuaToSpawnPoint

func LuaToSpawnPoint(L *lua.State, game *Game, pos int) *house.SpawnPoint {
	L.PushString("id")
	L.GetTable(pos - 1)
	index := L.ToInteger(-1)
	L.Pop(1)
	if index < 0 || index >= len(game.House.Floors[0].Spawns) {
		return nil
	}
	return game.House.Floors[0].Spawns[index]
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:10,代码来源:script_utils.go

示例3: LuaToPoint

func LuaToPoint(L *lua.State, pos int) (x, y int) {
	L.PushString("X")
	L.GetTable(pos - 1)
	x = L.ToInteger(-1)
	L.Pop(1)
	L.PushString("Y")
	L.GetTable(pos - 1)
	y = L.ToInteger(-1)
	L.Pop(1)
	return
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:11,代码来源:script_utils.go

示例4: LuaIsEntity

func LuaIsEntity(L *lua.State, index int) bool {
	L.PushString("type")
	L.GetTable(index - 1)
	if L.IsNil(-1) {
		L.Pop(1)
		return false
	}
	if L.ToString(-1) == "Entity" {
		L.Pop(1)
		return true
	}
	L.Pop(1)
	return false
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:14,代码来源:script_utils.go

示例5: LuaToRoom

func LuaToRoom(L *lua.State, game *Game, index int) *house.Room {
	L.PushString("floor")
	L.GetTable(index - 1)
	floor := L.ToInteger(-1)
	L.Pop(1)
	L.PushString("room")
	L.GetTable(index - 1)
	room := L.ToInteger(-1)
	L.Pop(1)

	if floor < 0 || floor >= len(game.House.Floors) {
		return nil
	}
	if room < 0 || room >= len(game.House.Floors[floor].Rooms) {
		return nil
	}

	return game.House.Floors[floor].Rooms[room]
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:19,代码来源:script_utils.go

示例6: LuaEncodeValue

// Encodes a lua value, only bool, number, nil, table, and string can be
// encoded.  If an unencodable value is encountered an error will be
// returned.
func LuaEncodeValue(w io.Writer, L *lua.State, index int) error {
	var err1, err2, err3 error
	switch {
	case L.IsBoolean(index):
		err1 = binary.Write(w, binary.LittleEndian, luaEncBool)
		var v byte = 0
		if L.ToBoolean(index) {
			v = 1
		}
		err2 = binary.Write(w, binary.LittleEndian, v)
	case L.IsNumber(index):
		err1 = binary.Write(w, binary.LittleEndian, luaEncNumber)
		err2 = binary.Write(w, binary.LittleEndian, L.ToNumber(index))
	case L.IsNil(index):
		err1 = binary.Write(w, binary.LittleEndian, luaEncNil)
	case LuaIsEntity(L, index):
		err1 = binary.Write(w, binary.LittleEndian, luaEncEntity)
		L.PushString("id")
		L.GetTable(index - 1)
		err2 = binary.Write(w, binary.LittleEndian, uint64(L.ToInteger(-1)))
		L.Pop(1)
	case L.IsTable(index):
		err1 = binary.Write(w, binary.LittleEndian, luaEncTable)
		err2 = LuaEncodeTable(w, L, index)
	case L.IsString(index):
		err1 = binary.Write(w, binary.LittleEndian, luaEncString)
		str := L.ToString(index)
		err2 = binary.Write(w, binary.LittleEndian, uint32(len(str)))
		err3 = binary.Write(w, binary.LittleEndian, []byte(str))
	default:
		return errors.New(fmt.Sprintf("Cannot encode lua type id == %d.", L.Type(index)))
	}
	switch {
	case err1 != nil:
		return err1
	case err2 != nil:
		return err2
	case err3 != nil:
		return err3
	}
	return nil
}
开发者ID:FlyingCar,项目名称:haunts,代码行数:45,代码来源:script_utils.go


注:本文中的github.com/xenith-studios/golua.State.GetTable方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。