mirror of
https://github.com/MartinKral/Slash-The-Hordes
synced 2025-10-09 08:36:14 +00:00
Projectile piercing, meta upgrades
This commit is contained in:
@@ -7,20 +7,43 @@ const { ccclass, property } = _decorator;
|
||||
@ccclass("Projectile")
|
||||
export class Projectile extends Component {
|
||||
@property(CircleCollider2D) private collider: CircleCollider2D;
|
||||
private contactBeginEvent: Signal<ProjectileCollision> = new Signal<ProjectileCollision>();
|
||||
private contactBeginEvent = new Signal<ProjectileCollision>();
|
||||
private piercesDepletedEvent = new Signal<Projectile>();
|
||||
|
||||
private isInit = false;
|
||||
public tryInit(): void {
|
||||
if (this.isInit) return;
|
||||
this.isInit = true;
|
||||
private isContactListenerSet = false;
|
||||
|
||||
this.collider.on(Contact2DType.BEGIN_CONTACT, this.onColliderContactBegin, this);
|
||||
private piercesLeft = 0;
|
||||
private damage = 0;
|
||||
|
||||
public init(damage: number, pierces: number): void {
|
||||
this.piercesLeft = pierces;
|
||||
this.damage = damage;
|
||||
|
||||
if (!this.isContactListenerSet) {
|
||||
this.isContactListenerSet = true;
|
||||
this.collider.on(Contact2DType.BEGIN_CONTACT, this.onColliderContactBegin, this);
|
||||
}
|
||||
}
|
||||
|
||||
public pierce(): void {
|
||||
this.piercesLeft--;
|
||||
if (this.piercesLeft <= 0) {
|
||||
this.piercesDepletedEvent.trigger(this);
|
||||
}
|
||||
}
|
||||
|
||||
public get Damage(): number {
|
||||
return this.damage;
|
||||
}
|
||||
|
||||
public get ContactBeginEvent(): ISignal<ProjectileCollision> {
|
||||
return this.contactBeginEvent;
|
||||
}
|
||||
|
||||
public get PiercesDepletedEvent(): ISignal<Projectile> {
|
||||
return this.piercesDepletedEvent;
|
||||
}
|
||||
|
||||
private onColliderContactBegin(thisCollider: Collider2D, otherCollider: Collider2D): void {
|
||||
this.contactBeginEvent.trigger({ otherCollider, projectile: this });
|
||||
}
|
||||
|
Reference in New Issue
Block a user