Skip to content

Commit 932a56a

Browse files
authored
Merge pull request #32 from EverestAPI/berry_with_return
Berry with Return
2 parents 2e9fce5 + e9fd0a8 commit 932a56a

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module SpringCollab2020BubbleReturnBerry
2+
3+
using ..Ahorn, Maple
4+
5+
@mapdef Entity "SpringCollab2020/returnBerry" ReturnBerry(x::Integer, y::Integer, order::Integer=-1, checkpointID::Integer=-1, winged::Bool=false)
6+
7+
const placements = Ahorn.PlacementDict(
8+
"Strawberry With Return (Spring Collab 2020)" => Ahorn.EntityPlacement(
9+
ReturnBerry
10+
)
11+
)
12+
13+
function getSpriteName(entity::ReturnBerry)
14+
winged = get(entity.data, "winged", false)
15+
16+
if winged
17+
return "collectables/strawberry/wings01"
18+
end
19+
20+
return "collectables/strawberry/normal00"
21+
end
22+
23+
function Ahorn.selection(entity::ReturnBerry)
24+
x, y = Ahorn.position(entity)
25+
26+
return Ahorn.getSpriteRectangle(getSpriteName(entity), x, y)
27+
end
28+
29+
function Ahorn.renderAbs(ctx::Ahorn.Cairo.CairoContext, entity::ReturnBerry, room::Maple.Room)
30+
x, y = Ahorn.position(entity)
31+
32+
Ahorn.drawSprite(ctx, getSpriteName(entity), x, y)
33+
end
34+
35+
end

Entities/BubbleReturnBerry.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using Celeste;
2+
using Celeste.Mod.Entities;
3+
using Microsoft.Xna.Framework;
4+
using Monocle;
5+
using System;
6+
using System.Collections;
7+
8+
namespace Celeste.Mod.SpringCollab2020.Entities {
9+
[CustomEntity("SpringCollab2020/returnBerry")]
10+
[RegisterStrawberry(true, false)]
11+
class BubbleReturnBerry : Strawberry {
12+
public BubbleReturnBerry(EntityData data, Vector2 position, EntityID gid) : base(data, position, gid) {
13+
Add(collider = new PlayerCollider(new Action<Player>(OnPlayer)));
14+
}
15+
16+
public new void OnPlayer(Player player) {
17+
Add(new Coroutine(Return(player), true));
18+
19+
Collidable = false;
20+
}
21+
22+
private IEnumerator Return(Player player) {
23+
yield return 0.3f;
24+
25+
if (!player.Dead) {
26+
Vector2 targetLocation = (Vector2) SceneAs<Level>().Session.RespawnPoint;
27+
28+
Audio.Play("event:/game/general/cassette_bubblereturn", SceneAs<Level>().Camera.Position + new Vector2(160f, 90f));
29+
player.StartCassetteFly(targetLocation, targetLocation);
30+
}
31+
}
32+
33+
private static PlayerCollider collider;
34+
}
35+
}

0 commit comments

Comments
 (0)