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


Golang ICreature.GetTile方法代码示例

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


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

示例1: OnCreatureEnter

func (e *Warp) OnCreatureEnter(_creature pul.ICreature, _prevRet int) (ret int) {
	currentTile := _creature.GetTile()
	destinationTile, found := g_map.GetTileFromPosition(e.destination)

	if found {
		ret = g_game.internalCreatureTeleport(_creature, currentTile, destinationTile)
	} else {
		ret = RET_NOTPOSSIBLE
	}

	return
}
开发者ID:gasperko,项目名称:pokemon-universe,代码行数:12,代码来源:warp.go

示例2: OnPlayerMove

func (g *Game) OnPlayerMove(_creature pul.ICreature, _direction int, _sendMap bool) {
	ret := g.OnCreatureMove(_creature, _direction)

	player := _creature.(*Player)
	if ret == RET_NOTPOSSIBLE {
		player.sendCreatureMove(_creature, _creature.GetTile(), _creature.GetTile())
	} else if ret == RET_PLAYERISTELEPORTED {
		player.sendPlayerWarp()
		player.sendMapData(DIR_NULL)
	} else {
		player.sendMapData(_direction)
	}
}
开发者ID:gasperko,项目名称:pokemon-universe,代码行数:13,代码来源:game.go

示例3: OnCreatureMove

func (g *Game) OnCreatureMove(_creature pul.ICreature, _direction int) (ret int) {
	ret = RET_NOTPOSSIBLE

	if !CreatureCanMove(_creature) {
		return
	}

	currentTile := _creature.GetTile()
	destinationPosition := currentTile.GetPosition()

	switch _direction {
	case DIR_NORTH:
		destinationPosition.Y -= 1
	case DIR_SOUTH:
		destinationPosition.Y += 1
	case DIR_WEST:
		destinationPosition.X -= 1
	case DIR_EAST:
		destinationPosition.X += 1
	}

	// Check if destination tile exists
	destinationTile, ok := g_map.GetTileFromPosition(destinationPosition)
	if !ok {
		return
	}

	// Check if we can move to the destination tile
	if ret = destinationTile.CheckMovement(_creature, _direction); ret == RET_NOTPOSSIBLE {
		return
	}

	// Update position
	_creature.SetTile(destinationTile)

	// fmt.Printf("[%v] From (%v,%v) To (%v,%v)\n", _creature.GetName(), currentTile.Position.X, currentTile.Position.Y, destinationPosition.X, destinationPosition.Y)

	// Tell creatures this creature has moved
	g.mutexCreatureList.RLock()
	defer g.mutexCreatureList.RUnlock()
	for _, value := range g.Creatures {
		if value != nil {
			value.OnCreatureMove(_creature, currentTile, destinationTile, false)
		}
	}

	// Move creature object to destination tile
	if ret = currentTile.RemoveCreature(_creature, true); ret == RET_NOTPOSSIBLE {
		return
	}
	if ret = destinationTile.AddCreature(_creature, true); ret == RET_NOTPOSSIBLE {
		currentTile.AddCreature(_creature, false) // Something went wrong, put creature back on old tile
		_creature.SetTile(currentTile)
		return
	}

	// If ICreature is a player type we can check for wild encounter
	g.checkForWildEncounter(_creature)

	return
}
开发者ID:gasperko,项目名称:pokemon-universe,代码行数:61,代码来源:game.go


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