#textdomain wesnoth
# Utility macros for images, overlays, and display effects.

# These don't depend on any other macros.  Please don't change this.

#define MAGENTA_IS_THE_TEAM_COLOR
    # A macro to define a common set of magenta color values which different
    # units can be color shifted by using the team color system.
    flag_rgb=magenta
#enddef

#define COLOR_HEAL
    green=255
#enddef

#define COLOR_HARM
    red=255
#enddef

#define COLOR_WHITE
    red=255
    green=255
    blue=255
#enddef

#define IS_HERO
    # Embed this into a unit declaration to add a hero icon to the unit.
    overlays="misc/hero-icon.png"
#enddef

#define REMOVE_HERO_ICON FILTER
    # Remove the hero icon from a unit by ID or other filter
    [store_unit]
        [filter]
            {FILTER}
        [/filter]

        kill=no
        variable=hero_removal_target
    [/store_unit]

    [remove_unit_overlay]
        x,y=$hero_removal_target.x,$hero_removal_target.y
        image=misc/hero-icon.png
    [/remove_unit_overlay]

    [clear_variable]
        name=hero_removal_target
    [/clear_variable]
#enddef

#define NEW_JOURNEY X Y
    # Make a new journey mark on a tracking map
    [image]
        x,y={X},{Y}
        file=misc/new-journey.png
        delay=500
        centered=yes
    [/image]
#enddef

#define OLD_JOURNEY X Y
    # Make an old journey mark on a tracking map
    [image]
        x,y={X},{Y}
        file=misc/dot-white.png
        centered=yes
    [/image]
#enddef

#define NEW_BATTLE X Y
    # Make a new battle mark on a tracking map
    [image]
        x,y={X},{Y}
        file=misc/new-battle.png
        delay=500
        centered=yes
    [/image]
#enddef

#define OLD_BATTLE X Y
    # Make an old battle mark on a tracking map
    [image]
        x,y={X},{Y}
        file=misc/cross-white.png
        centered=yes
    [/image]
#enddef

#define NEW_REST X Y
    # Make a new rest mark on a tracking map
    [image]
        x,y={X},{Y}
        file=misc/flag-red.png
        delay=500
        centered=yes
    [/image]
#enddef

#define OLD_REST X Y
    # Make an old rest mark on a tracking map
    [image]
        x,y={X},{Y}
        file=misc/flag-white.png
        centered=yes
    [/image]
#enddef

#define PLACE_IMAGE IMAGE X Y
    # Place an image at a specified location on the map.
    [item]
        x={X}
        y={Y}
        image={IMAGE}
    [/item]
#enddef

#define REMOVE_IMAGE X Y
    # Removes a previously set image from a tile.
    #
    # Example:
    #! {REMOVE_IMAGE 14 5}
    [removeitem]
        x,y={X},{Y}
    [/removeitem]
#enddef

#define TEAM_COLOR_OVERRIDE FILTER TEAMCOLOR
    # Override the team color of filtered units.
    [object]
        silent=yes
        [filter]
            {FILTER}
        [/filter]
        [effect]
            apply_to=image_mod
            add=RC(magenta>{TEAMCOLOR})
        [/effect]
    [/object]
#enddef

#define MAKE_HERO ID_STRING
    # Give an existing unit a hero overlay
    [store_unit]
        [filter]
            id={ID_STRING}
        [/filter]
        variable=hero_store
        kill=no
    [/store_unit]
    [unit_overlay]
        x=$hero_store.x
        y=$hero_store.y
        image=misc/hero-icon.png
    [/unit_overlay]

    {CLEAR_VARIABLE hero_store}
#enddef

#define UNMAKE_HERO ID_STRING
    # Remove the hero overlay from a unit
    [store_unit]
        [filter]
            id={ID_STRING}
        [/filter]
        variable=hero_store
        kill=no
    [/store_unit]
    [remove_unit_overlay]
        x=$hero_store.x
        y=$hero_store.y
        image=misc/hero-icon.png
    [/remove_unit_overlay]

    {CLEAR_VARIABLE hero_store}
#enddef

#define ANIMATED_CAMPFIRE X Y
    # Embed this at scenario toplevel, not within an event.
    # Note that it will freeze while dialogue popups are onscreen.
    [terrain_graphics]
        x={X}
        y={Y}
        [tile]
            x=0
            y=0
            [image]
                layer=0
                name="../scenery/fire1:140,../scenery/fire2:140,../scenery/fire3:140,../scenery/fire4:140,../scenery/fire5:140,../scenery/fire6:140,../scenery/fire7:140,../scenery/fire8:140"
            [/image]
        [/tile]
    [/terrain_graphics]
#enddef

#define ANIMATED_BRAZIER X Y
    # Embed this at scenario toplevel, not within an event.
    # Note that it will freeze while dialogue popups are onscreen.
    [terrain_graphics]
        x={X}
        y={Y}
        [tile]
            x=0
            y=0
            [image]
                layer=0
                name="../items/brazier-lit1:140,../items/brazier-lit2:140,../items/brazier-lit3:140,../items/brazier-lit4:140,../items/brazier-lit5:140,../items/brazier-lit6:140,../items/brazier-lit7:140,../items/brazier-lit8:140"
            [/image]
        [/tile]
    [/terrain_graphics]
#enddef

#define FLAG_VARIANT NAME
    # Enable the specified flag variant: knalgan, loyalist, or undead.
    # Use within a [side] block; only affects that side.
    # wmlscope: start ignoring
    flag=flags/{NAME}-flag-1.png:150,flags/{NAME}-flag-2.png:150,flags/{NAME}-flag-3.png:150,flags/{NAME}-flag-4.png:150
    flag_icon=flags/{NAME}-flag-icon.png
    # wmlscope: stop ignoring
    flag_rgb=flag_green
#enddef
