package main

func (game *Game) drawPlayer() {
	game.screen.SetContent(game.player.position.x, game.player.position.y, '@', nil, game.style)
}

func (game *Game) movePlayer(press int) {

	if game.blockedByTrash(press) {
		game.player.moves++
		return
	}

	if press == Left {
		if game.player.position.x != 2 {
			game.player.position.x--
			game.player.moves++
		}
	} else if press == Right {
		if game.player.position.x != 78 {
			game.player.position.x++
			game.player.moves++
		}
	} else if press == Up {
		if game.player.position.y != 1 {
			game.player.position.y--
			game.player.moves++
		}
	} else if press == Down {
		if game.player.position.y != 22 {
			game.player.position.y++
			game.player.moves++
		}
	} else if press == upleft {
		if game.player.position.x != 2 && game.player.position.y != 1 {
			game.player.position.x--
			game.player.position.y--
			game.player.moves++
		}
	} else if press == upright {
		if game.player.position.x != 78 && game.player.position.y != 1 {
			game.player.position.x++
			game.player.position.y--
			game.player.moves++
		}
	} else if press == downright {
		if game.player.position.x != 78 && game.player.position.y != 22 {
			game.player.position.x++
			game.player.position.y++
			game.player.moves++
		}
	} else if press == downleft {
		if game.player.position.x != 2 && game.player.position.y != 22 {
			game.player.position.x--
			game.player.position.y++
			game.player.moves++
		}
	} else if press == teleport {
		game.teleport()
		game.player.teleports++
	}
}

// blockedByTrash() Checks if player can move into a direction and if trash isn't blocking
func (game *Game) blockedByTrash(press int) bool {
	var checkPos Position

	if press == Left {
		checkPos.x = game.player.position.x - 1
		checkPos.y = game.player.position.y
	} else if press == Right {
		checkPos.x = game.player.position.x + 1
		checkPos.y = game.player.position.y
	} else if press == Up {
		checkPos.x = game.player.position.x
		checkPos.y = game.player.position.y - 1
	} else if press == Down {
		checkPos.x = game.player.position.x
		checkPos.y = game.player.position.y + 1
	} else if press == upleft {
		checkPos.x = game.player.position.x - 1
		checkPos.y = game.player.position.y - 1
	} else if press == upright {
		checkPos.x = game.player.position.x + 1
		checkPos.y = game.player.position.y - 1
	} else if press == downright {
		checkPos.x = game.player.position.x + 1
		checkPos.y = game.player.position.y + 1
	} else if press == downleft {
		checkPos.x = game.player.position.x - 1
		checkPos.y = game.player.position.y + 1
	}
	return game.onTrash(checkPos)
}

func (game *Game) teleport() {

	var pos Position
	var safe bool = false

	for !safe {
		pos = game.randPos()
		if !game.onTrash(pos) {
			safe = true
		}
	}

	game.player.position.x = pos.x
	game.player.position.y = pos.y

}

func (game *Game) onPlayer(pos Position) bool {
	var onPlayer bool
	if pos.x == game.player.position.x && pos.y == game.player.position.y {
		onPlayer = true
	} else {
		onPlayer = false
	}
	return onPlayer
}