From fea825d2eefc3cb93fdfd95c26483725f0135574 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 18 Nov 2020 13:03:51 -0500 Subject: [PATCH] v0.9.1: added a new buff type that stores a counter --- .../actors/buffs/Buff.java | 6 ++ .../actors/buffs/CounterBuff.java | 56 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/CounterBuff.java diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java index 815e61632..8dc10d52c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/Buff.java @@ -158,6 +158,12 @@ public class Buff extends Actor { buff.postpone( duration * target.resist(buffClass) ); return buff; } + + public static T count( Char target, Class buffclass, float count ) { + T buff = affect( target, buffclass ); + buff.countUp( count ); + return buff; + } public static void detach( Char target, Class cl ) { for ( Buff b : target.buffs( cl )){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/CounterBuff.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/CounterBuff.java new file mode 100644 index 000000000..5446bddab --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/buffs/CounterBuff.java @@ -0,0 +1,56 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2020 Evan Debenham + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see + */ + +package com.shatteredpixel.shatteredpixeldungeon.actors.buffs; + +import com.watabou.utils.Bundle; + +//A buff whose only purposes is to keep track of a count of some form +public class CounterBuff extends Buff { + + private float count = 0; + + public void countUp( float inc ){ + count += inc; + } + + public void countDown( float inc ){ + count -= inc; + } + + public float count(){ + return count; + } + + private static final String COUNT = "count"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put(COUNT, count); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + count = bundle.getFloat(COUNT); + } +}