本文整理汇总了Golang中pulogic.ICreature.GetUID方法的典型用法代码示例。如果您正苦于以下问题:Golang ICreature.GetUID方法的具体用法?Golang ICreature.GetUID怎么用?Golang ICreature.GetUID使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pulogic.ICreature
的用法示例。
在下文中一共展示了ICreature.GetUID方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: AddCreature
// AddCreature adds a new active creature to this tile
func (t *Tile) AddCreature(_creature pul.ICreature, _checkEvents bool) (ret int) {
ret = RET_NOERROR
if _checkEvents && t.Events.Len() > 0 {
var i int = 0
for e := t.Events.Front(); e != nil; e = e.Next() {
event, valid := e.Value.(ITileEvent)
if valid {
ret = event.OnCreatureEnter(_creature, ret)
}
if ret == RET_NOTPOSSIBLE {
return
}
i++
}
}
_, found := t.Creatures[_creature.GetUID()]
if !found {
t.Creatures[_creature.GetUID()] = _creature
}
return
}
示例2: OnCreatureMove
func (p *Player) OnCreatureMove(_creature pul.ICreature, _from pul.ITile, _to pul.ITile, _teleport bool) {
if _creature.GetUID() == p.GetUID() {
p.lastStep = PUSYS_TIME()
return
}
from := _from.(*Tile)
to := _to.(*Tile)
canSeeFromTile := CanSeePosition(p.GetPosition(), from.Position)
canSeeToTile := CanSeePosition(p.GetPosition(), to.Position)
if canSeeFromTile && !canSeeToTile { // Leaving viewport
p.sendCreatureMove(_creature, from, to)
p.RemoveVisibleCreature(_creature)
_creature.RemoveVisibleCreature(p)
} else if canSeeToTile && !canSeeFromTile { // Entering viewport
p.AddVisibleCreature(_creature)
_creature.RemoveVisibleCreature(p)
p.sendCreatureMove(_creature, from, to)
} else { // Moving inside viewport
p.AddVisibleCreature(_creature)
_creature.AddVisibleCreature(p)
p.sendCreatureMove(_creature, from, to)
}
}
示例3: sendCreatureChangeVisibility
func (p *Player) sendCreatureChangeVisibility(_creature pul.ICreature, _visible bool) {
if _creature.GetUID() != p.GetUID() {
if _visible {
p.AddVisibleCreature(_creature)
} else if !p.HasFlag(PlayerFlag_CanSenseInvisibility) {
p.RemoveVisibleCreature(_creature)
}
}
}
示例4: AddVisibleCreature
func (n *Npc) AddVisibleCreature(_creature pul.ICreature) {
// Check if _creature is a Player, otherwise return
if _creature.GetType() != CTYPE_PLAYER {
return
}
if _, found := n.VisibleCreatures[_creature.GetUID()]; !found {
n.VisibleCreatures[_creature.GetUID()] = _creature
}
}
示例5: OnCreatureDisappear
func (p *Player) OnCreatureDisappear(_creature pul.ICreature, _isLogout bool) {
if _creature.GetUID() == p.GetUID() {
return
}
if _isLogout {
// Check if creature is in friendlist
p.UpdateFriend(_creature.GetName(), false)
}
p.RemoveVisibleCreature(_creature)
}
示例6: RemoveVisibleCreature
func (n *Npc) RemoveVisibleCreature(_creature pul.ICreature) {
// Check if _creature is a Player, otherwise return
if _creature.GetType() != CTYPE_PLAYER {
return
}
// Check if the player was interacting with this npc
if n.HasInteractingPlayer(_creature.(*Player)) {
n.RemoveInteractingPlayer(_creature.(*Player))
}
// No need to check if the key actually exists because Go is awesome
// http://golang.org/doc/effective_go.html#maps
delete(n.VisibleCreatures, _creature.GetUID())
}
示例7: OnCreatureAppear
func (p *Player) OnCreatureAppear(_creature pul.ICreature, _isLogin bool) {
if _creature.GetUID() == p.GetUID() {
return
}
if _isLogin {
// Check if creature is in friendlist
p.UpdateFriend(_creature.GetName(), true)
}
canSeeCreature := CanSeeCreature(p, _creature)
if !canSeeCreature {
return
}
// We're checking inside the AddVisibleCreature method so no need to check here
p.AddVisibleCreature(_creature)
_creature.AddVisibleCreature(p)
}
示例8: RemoveCreature
// RemoveCreature removes an active creature from this tile
func (t *Tile) RemoveCreature(_creature pul.ICreature, _checkEvents bool) (ret int) {
ret = RET_NOERROR
if _checkEvents && t.Events.Len() > 0 {
for e := t.Events.Front(); e != nil; e = e.Next() {
event, valid := e.Value.(ITileEvent)
if valid {
ret = event.OnCreatureLeave(_creature, ret)
}
if ret == RET_NOTPOSSIBLE {
return
}
}
}
delete(t.Creatures, _creature.GetUID())
return
}
示例9: AddCreature
func (g *Game) AddCreature(_creature pul.ICreature) {
// TODO: Maybe only take the creatues from the area the new creature is in. This saves some extra iterating
g.mutexCreatureList.Lock()
defer g.mutexCreatureList.Unlock()
for _, value := range g.Creatures {
value.OnCreatureAppear(_creature, true)
}
g.Creatures[_creature.GetUID()] = _creature
if _creature.GetType() == CTYPE_PLAYER {
g.mutexPlayerList.Lock()
defer g.mutexPlayerList.Unlock()
g.Players[_creature.GetUID()] = _creature.(*Player)
// Join default channels
g.Chat.AddUserToChannel(_creature.(*Player), pnet.CHANNEL_WORLD)
g.Chat.AddUserToChannel(_creature.(*Player), pnet.CHANNEL_TRADE)
}
}
示例10: SendCreatureRemove
func (c *Connection) SendCreatureRemove(_creature pul.ICreature) {
if _creature.GetUID() != c.Owner.GetUID() {
msg := pnetmsg.NewCreatureRemoveMessage(_creature)
c.SendMessage(msg)
}
}
示例11: KnowsVisibleCreature
func (c *Creature) KnowsVisibleCreature(_creature pul.ICreature) (found bool) {
_, found = c.VisibleCreatures[_creature.GetUID()]
return
}
示例12: RemoveVisibleCreature
func (c *Creature) RemoveVisibleCreature(_creature pul.ICreature) {
if _, found := c.VisibleCreatures[_creature.GetUID()]; !found {
c.VisibleCreatures[_creature.GetUID()] = _creature
}
}
示例13: RemoveVisibleCreature
func (p *Player) RemoveVisibleCreature(_creature pul.ICreature) {
// No need to check if the key actually exists because Go is awesome
// http://tip.golang.org/doc/effective_go.html#maps
delete(p.VisibleCreatures, _creature.GetUID())
p.sendCreatureRemove(_creature)
}
示例14: AddVisibleCreature
func (p *Player) AddVisibleCreature(_creature pul.ICreature) {
if _, found := p.VisibleCreatures[_creature.GetUID()]; !found {
p.VisibleCreatures[_creature.GetUID()] = _creature
p.sendCreatureAdd(_creature)
}
}
示例15: OnCreatureTurn
func (p *Player) OnCreatureTurn(_creature pul.ICreature) {
if _creature.GetUID() != p.GetUID() {
p.sendCreatureTurn(_creature)
}
}