from olives_object import Object
from olives_types import Position2, LightInfo, TemperatureModifierInfo


class GameState:
    """
    This is the wrapper around the C++ "GameState" class.

    The "olives" prefix in the file indicates it is not meant to be edited for modifying,
    as this will most definitely result in breakage.
    """

    def get_object(self, object_id: int) -> Object: ...

    def reduce_funds(self, cost: int): ...

    def set_animation(self, object_id: int, animation: str, is_looped: bool): ...

    def add_light(self, light_info: LightInfo, position: Position2) -> int: ...

    def update_light(self, light_id: int, light_info: LightInfo, new_position: Position2): ...

    def remove_light(self, light_id: int): ...

    def add_temp_modifier(self, temp_info: TemperatureModifierInfo, position: Position2) -> int: ...

    def update_temp_modifier(self, temp_modifier_id: int, temp_info: TemperatureModifierInfo, new_position: Position2): ...

    def remove_temp_modifier(self, temp_modifier_id: int): ...

    def get_temp_modifier(self, temp_modifier_id: int) -> TemperatureModifierInfo: ...

    def get_object_temp_modifier_id(self, object_id: int) -> int: ...

    def get_temperature(self, position: Position2) -> int: ...

    def set_object_active_state(self, object_id: int, is_active: bool): ...
