本文整理汇总了Golang中github.com/Cristofori/kmud/types.Room.GetLocation方法的典型用法代码示例。如果您正苦于以下问题:Golang Room.GetLocation方法的具体用法?Golang Room.GetLocation怎么用?Golang Room.GetLocation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/Cristofori/kmud/types.Room
的用法示例。
在下文中一共展示了Room.GetLocation方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: DeleteRoom
func DeleteRoom(room types.Room) {
db.DeleteObject(room.GetId())
// Disconnect all exits leading to this room
loc := room.GetLocation()
updateRoom := func(dir types.Direction) {
next := loc.Next(dir)
room := GetRoomByLocation(next, room.GetZoneId())
if room != nil {
room.SetExitEnabled(dir.Opposite(), false)
}
}
updateRoom(types.DirectionNorth)
updateRoom(types.DirectionNorthEast)
updateRoom(types.DirectionEast)
updateRoom(types.DirectionSouthEast)
updateRoom(types.DirectionSouth)
updateRoom(types.DirectionSouthWest)
updateRoom(types.DirectionWest)
updateRoom(types.DirectionNorthWest)
updateRoom(types.DirectionUp)
updateRoom(types.DirectionDown)
}
示例2: printRoom
func (self *Session) printRoom(room types.Room) {
pcs := model.PlayerCharactersIn(self.pc.GetRoomId(), self.pc.GetId())
npcs := model.NpcsIn(room.GetId())
items := model.ItemsIn(room.GetId())
store := model.StoreIn(room.GetId())
var area types.Area
if room.GetAreaId() != nil {
area = model.GetArea(room.GetAreaId())
}
var str string
areaStr := ""
if area != nil {
areaStr = fmt.Sprintf("%s - ", area.GetName())
}
str = fmt.Sprintf("\r\n %v>>> %v%s%s %v<<< %v(%v %v %v)\r\n\r\n %v%s\r\n\r\n",
types.ColorWhite, types.ColorBlue,
areaStr, room.GetTitle(),
types.ColorWhite, types.ColorBlue,
room.GetLocation().X, room.GetLocation().Y, room.GetLocation().Z,
types.ColorWhite,
room.GetDescription())
if store != nil {
str = fmt.Sprintf("%s Store: %s\r\n\r\n", str, types.Colorize(types.ColorBlue, store.GetName()))
}
extraNewLine := ""
if len(pcs) > 0 {
str = fmt.Sprintf("%s %sAlso here:", str, types.ColorBlue)
names := make([]string, len(pcs))
for i, char := range pcs {
names[i] = types.Colorize(types.ColorWhite, char.GetName())
}
str = fmt.Sprintf("%s %s \r\n", str, strings.Join(names, types.Colorize(types.ColorBlue, ", ")))
extraNewLine = "\r\n"
}
if len(npcs) > 0 {
str = fmt.Sprintf("%s %s", str, types.Colorize(types.ColorBlue, "NPCs: "))
names := make([]string, len(npcs))
for i, npc := range npcs {
names[i] = types.Colorize(types.ColorWhite, npc.GetName())
}
str = fmt.Sprintf("%s %s \r\n", str, strings.Join(names, types.Colorize(types.ColorBlue, ", ")))
extraNewLine = "\r\n"
}
if len(items) > 0 {
itemMap := make(map[string]int)
var nameList []string
for _, item := range items {
if item == nil {
continue
}
_, found := itemMap[item.GetName()]
if !found {
nameList = append(nameList, item.GetName())
}
itemMap[item.GetName()]++
}
sort.Strings(nameList)
str = str + " " + types.Colorize(types.ColorBlue, "Items: ")
var names []string
for _, name := range nameList {
if itemMap[name] > 1 {
name = fmt.Sprintf("%s x%v", name, itemMap[name])
}
names = append(names, types.Colorize(types.ColorWhite, name))
}
str = str + strings.Join(names, types.Colorize(types.ColorBlue, ", ")) + "\r\n"
extraNewLine = "\r\n"
}
str = str + extraNewLine + " " + types.Colorize(types.ColorBlue, "Exits: ")
var exitList []string
for _, direction := range room.GetExits() {
exitList = append(exitList, utils.DirectionToExitString(direction))
}
if len(exitList) == 0 {
str = str + types.Colorize(types.ColorWhite, "None")
} else {
str = str + strings.Join(exitList, " ")
}
//.........这里部分代码省略.........
示例3: costEstimate
func costEstimate(start, goal types.Room) int {
c1 := start.GetLocation()
c2 := goal.GetLocation()
return utils.Abs(c1.X-c2.X) + utils.Abs(c1.Y-c2.Y) + utils.Abs(c1.Z-c2.Z)
}