from __future__ import annotations

from sprite_ai.core.sprite_state import SpriteState

POSSIBLE_STATES = {
    'appearing': SpriteState(
        name='idle',
        animation='appearing',
        movement='idle',
        state_transitions={
            'walking': 1,
        },
    ),
    'thinking': SpriteState(
        name='thinking',
        animation='thinking',
        movement='idle',
        state_transitions={
            'thinking': 1,
        },
    ),
    'idle': SpriteState(
        name='idle',
        animation='idle',
        movement='idle',
        state_transitions={
            'idle': 1 / 15,
            'walking': 2 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 2 / 15,
            'playing': 2 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'walking': SpriteState(
        name='walking',
        animation='walking',
        movement='walking',
        state_transitions={
            'idle': 2 / 15,
            'walking': 1 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 2 / 15,
            'playing': 2 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'jumping_idle': SpriteState(
        name='jumping_idle',
        animation='walking',
        movement='walking',
        state_transitions={
            'idle': 2 / 15,
            'walking': 2 / 15,
            'jumping_idle': 1 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 2 / 15,
            'playing': 2 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'jumping_walking': SpriteState(
        name='jumping_walking',
        animation='jumping',
        movement='walking',
        state_transitions={
            'idle': 2 / 15,
            'walking': 2 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 1 / 15,
            'sliding': 2 / 15,
            'playing': 2 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'sliding': SpriteState(
        name='sliding',
        animation='sliding',
        movement='walking',
        state_transitions={
            'idle': 2 / 15,
            'walking': 2 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 1 / 15,
            'playing': 2 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'playing': SpriteState(
        name='playing',
        animation='playing',
        movement='idle',
        state_transitions={
            'idle': 2 / 15,
            'walking': 2 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 2 / 15,
            'playing': 1 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'walking_upright': SpriteState(
        name='walking_upright',
        animation='walking_upright',
        movement='walking',
        state_transitions={
            'idle': 2 / 15,
            'walking': 2 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 2 / 15,
            'playing': 2 / 15,
            'walking_upright': 1 / 15,
            'laying_down': 2 / 15,
        },
    ),
    'laying_down': SpriteState(
        name='laying_down',
        animation='laying_down',
        movement='idle',
        state_transitions={
            'idle': 2 / 15,
            'walking': 2 / 15,
            'jumping_idle': 2 / 15,
            'jumping_walking': 2 / 15,
            'sliding': 2 / 15,
            'playing': 2 / 15,
            'walking_upright': 2 / 15,
            'laying_down': 1 / 15,
        },
    ),
}
