Skip to content

Commit f4b8fa6

Browse files
committed
Non-Core Mode Wall Booster
1 parent 53ac7dc commit f4b8fa6

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
module SpringCollab2020NonCoreModeWallBooster
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Entity "SpringCollab2020/NonCoreModeWallBooster" NonCoreModeWallBooster(x::Integer, y::Integer, height::Integer=8, left::Bool=false, notCoreMode::Bool=false)
6+
7+
const placements = Ahorn.PlacementDict(
8+
"Wall Booster (Non-Core Mode, Right) (Spring Collab 2020)" => Ahorn.EntityPlacement(
9+
NonCoreModeWallBooster,
10+
"rectangle",
11+
Dict{String, Any}(
12+
"left" => true
13+
)
14+
),
15+
"Wall Booster (Non-Core Mode, Left) (Spring Collab 2020)" => Ahorn.EntityPlacement(
16+
NonCoreModeWallBooster,
17+
"rectangle",
18+
Dict{String, Any}(
19+
"left" => false
20+
)
21+
)
22+
)
23+
24+
Ahorn.minimumSize(entity::NonCoreModeWallBooster) = 0, 8
25+
Ahorn.resizable(entity::NonCoreModeWallBooster) = false, true
26+
27+
function Ahorn.selection(entity::NonCoreModeWallBooster)
28+
x, y = Ahorn.position(entity)
29+
height = Int(get(entity.data, "height", 8))
30+
31+
return Ahorn.Rectangle(x, y, 8, height)
32+
end
33+
34+
function Ahorn.render(ctx::Ahorn.Cairo.CairoContext, entity::NonCoreModeWallBooster, room::Maple.Room)
35+
left = get(entity.data, "left", false)
36+
37+
# Values need to be system specific integer
38+
x = Int(get(entity.data, "x", 0))
39+
y = Int(get(entity.data, "y", 0))
40+
41+
height = Int(get(entity.data, "height", 8))
42+
tileHeight = div(height, 8)
43+
44+
if left
45+
for i in 2:tileHeight - 1
46+
Ahorn.drawImage(ctx, "objects/wallBooster/fireMid00", 0, (i - 1) * 8)
47+
end
48+
49+
Ahorn.drawImage(ctx, "objects/wallBooster/fireTop00", 0, 0)
50+
Ahorn.drawImage(ctx, "objects/wallBooster/fireBottom00", 0, (tileHeight - 1) * 8)
51+
52+
else
53+
Ahorn.Cairo.save(ctx)
54+
Ahorn.scale(ctx, -1, 1)
55+
56+
for i in 2:tileHeight - 1
57+
Ahorn.drawImage(ctx, "objects/wallBooster/fireMid00", -8, (i - 1) * 8)
58+
end
59+
60+
Ahorn.drawImage(ctx, "objects/wallBooster/fireTop00", -8, 0)
61+
Ahorn.drawImage(ctx, "objects/wallBooster/fireBottom00", -8, (tileHeight - 1) * 8)
62+
63+
Ahorn.restore(ctx)
64+
end
65+
end
66+
67+
end

Ahorn/lang/en_gb.lang

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,3 +323,7 @@ placements.entities.SpringCollab2020/StaticPuffer.tooltips.right=The initial dir
323323

324324
# Badeline Bounce Direction Trigger
325325
placements.triggers.SpringCollab2020/BadelineBounceDirectionTrigger.tooltips.bounceLeft=Determines the bounce direction of the player when hitting the Badeline Boss inside of the trigger (checked = to the left, unchecked = to the right).
326+
327+
# Wall Booster
328+
placements.entities.SpringCollab2020/NonCoreModeWallBooster.tooltips.left=Whether the entity attaches to the left wall or not.
329+
placements.entities.SpringCollab2020/NonCoreModeWallBooster.tooltips.notCoreMode=Determines whether the entity should ignore the current core mode and default to ice variant.

Entities/NonCoreModeWallBooster.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using Celeste.Mod.Entities;
2+
using Microsoft.Xna.Framework;
3+
using Monocle;
4+
5+
namespace Celeste.Mod.SpringCollab2020.Entities {
6+
[CustomEntity("SpringCollab2020/NonCoreModeWallBooster")]
7+
[TrackedAs(typeof(WallBooster))]
8+
class NonCoreModeWallBooster : WallBooster {
9+
public NonCoreModeWallBooster(EntityData data, Vector2 offset) : base(data, offset) {
10+
Remove(Get<CoreModeListener>());
11+
}
12+
}
13+
}

0 commit comments

Comments
 (0)