Quellcode für miniworlds.worlds.tiled_world.corner

import math
from typing import Optional

import miniworlds.base.app as app
import miniworlds.worlds.tiled_world.tile as tile
import miniworlds.worlds.tiled_world.tile_elements as tile_elements
import miniworlds.worlds.tiled_world.tiled_world as tiled_world_mod


[Doku] class Corner(tile_elements.TileDelimiter): angles = { "no": 0, "nw": 1, "sw": 2, "so": 3, } direction_angles = { "no": 0, "nw": 0, "sw": 0, "so": 0, }
[Doku] @staticmethod def direction_vectors(): return tile.Tile.corner_vectors
[Doku] @classmethod def from_position(cls, position, world: "tiled_world_mod.TiledWorld"): return world.get_corner(position)
[Doku] @classmethod def from_pixel(cls, position, world: Optional["tiled_world_mod.TiledWorld"] = None): if not world: window = app.App.get_window() world = window.worlds_manager.get_container_by_pixel(position[0], position[1]) min_value = math.inf nearest_hex = None corner_points = world.get_corner_points() for corner_position, corner_pos in corner_points.items(): distance = math.sqrt(pow(position[0] - corner_pos[0], 2) + pow(position[1] - corner_pos[1], 2)) if distance < min_value: min_value = distance nearest_hex = corner_position return cls.from_position(nearest_hex, world)
[Doku] @classmethod def from_tile(cls, position, direction_string): world = app.App.get_running_world() tile = world.get_tile(position) return world.get_corner(tile.position + cls.get_direction_from_string(direction_string))
[Doku] def start_angle(self): return 0.5