|
2 | 2 |
|
3 | 3 | using ..Ahorn, Maple |
4 | 4 |
|
5 | | -@mapdef Entity "SpringCollab2020/returnBerry" ReturnBerry(x::Integer, y::Integer, order::Integer=-1, checkpointID::Integer=-1, winged::Bool=false) |
| 5 | +@mapdef Entity "SpringCollab2020/returnBerry" ReturnBerry(x::Integer, y::Integer, order::Integer=-1, checkpointID::Integer=-1, winged::Bool=false, nodes::Array{Tuple{Integer, Integer}, 1}=Tuple{Integer, Integer}[]) |
6 | 6 |
|
7 | 7 | const placements = Ahorn.PlacementDict( |
8 | | - "Strawberry With Return (Spring Collab 2020)" => Ahorn.EntityPlacement( |
| 8 | + "Strawberry (With Return) (Spring Collab 2020)" => Ahorn.EntityPlacement( |
9 | 9 | ReturnBerry |
| 10 | + ), |
| 11 | + "Strawberry (Winged, With Return) (Spring Collab 2020)" => Ahorn.EntityPlacement( |
| 12 | + ReturnBerry, |
| 13 | + "point", |
| 14 | + Dict{String,Any}( |
| 15 | + "winged" => true |
| 16 | + ) |
10 | 17 | ) |
11 | 18 | ) |
12 | 19 |
|
| 20 | +seedSprite = "collectables/strawberry/seed00" |
| 21 | + |
| 22 | +Ahorn.nodeLimits(entity::ReturnBerry) = 0, -1 |
| 23 | + |
13 | 24 | function getSpriteName(entity::ReturnBerry) |
14 | 25 | winged = get(entity.data, "winged", false) |
15 | 26 |
|
|
22 | 33 |
|
23 | 34 | function Ahorn.selection(entity::ReturnBerry) |
24 | 35 | x, y = Ahorn.position(entity) |
| 36 | + nodes = get(entity.data, "nodes", ()) |
| 37 | + |
| 38 | + res = Ahorn.Rectangle[Ahorn.getSpriteRectangle(getSpriteName(entity), x, y)] |
| 39 | + |
| 40 | + for node in nodes |
| 41 | + nx, ny = node |
| 42 | + push!(res, Ahorn.getSpriteRectangle(seedSprite, nx, ny)) |
| 43 | + end |
| 44 | + |
| 45 | + return res |
| 46 | +end |
| 47 | + |
| 48 | +function Ahorn.renderSelectedAbs(ctx::Ahorn.Cairo.CairoContext, entity::ReturnBerry) |
| 49 | + x, y = Ahorn.position(entity) |
25 | 50 |
|
26 | | - return Ahorn.getSpriteRectangle(getSpriteName(entity), x, y) |
| 51 | + for node in get(entity.data, "nodes", ()) |
| 52 | + nx, ny = node |
| 53 | + |
| 54 | + Ahorn.drawLines(ctx, Tuple{Number, Number}[(x, y), (nx, ny)], Ahorn.colors.selection_selected_fc) |
| 55 | + end |
27 | 56 | end |
28 | 57 |
|
29 | 58 | function Ahorn.renderAbs(ctx::Ahorn.Cairo.CairoContext, entity::ReturnBerry, room::Maple.Room) |
30 | 59 | x, y = Ahorn.position(entity) |
| 60 | + nodes = get(entity.data, "nodes", ()) |
| 61 | + |
| 62 | + for node in nodes |
| 63 | + nx, ny = node |
| 64 | + |
| 65 | + Ahorn.drawSprite(ctx, seedSprite, nx, ny) |
| 66 | + end |
31 | 67 |
|
32 | 68 | Ahorn.drawSprite(ctx, getSpriteName(entity), x, y) |
33 | 69 | end |
|
0 commit comments