foul-magics/Mage/src/main/java/mage/abilities/effects/ContinuousEffect.java
Alex Vasile a2162ec3e7
Refactor: private fields and performance tweaks (#9625)
1a. Make `costs`, `manaCosts`, and `manaCostsToPay` private in `AbilityImpl` with access through getters/setters 
1b. fix cost adjuster for imprinted cards affected by the above

2a. Lazy instantiation for rarely used `data` field in `TargetPointerImpl`

3a. Pre-allocate certain array sizes in `Modes` and `CostsImpl`

4a. Make `manaTemplate` private in `BasicManaEffect`, copy when passing outside the class 
4b. Don't copy `manaTemplate` in copy constructor since it doesn't change 
4c. Add comments explaining copy usage for `manaTemplate` 
4d. Remove redundant variable assignment and make fields final 

---------

Co-authored-by: xenohedron <xenohedron@users.noreply.github.com>
2023-08-27 17:58:19 -04:00

83 lines
1.9 KiB
Java

package mage.abilities.effects;
import mage.MageObjectReference;
import mage.abilities.Ability;
import mage.constants.DependencyType;
import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.SubLayer;
import mage.game.Game;
import mage.target.targetpointer.TargetPointer;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
/**
* @author BetaSteward_at_googlemail.com
*/
public interface ContinuousEffect extends Effect {
boolean isUsed();
boolean isDiscarded();
void discard();
ContinuousEffect setDuration(Duration duration);
Duration getDuration();
long getOrder();
void setOrder(long order);
boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game);
boolean hasLayer(Layer layer);
boolean isInactive(Ability source, Game game);
void init(Ability source, Game game);
void init(Ability source, Game game, UUID activePlayerId);
Layer getLayer();
SubLayer getSublayer();
List<MageObjectReference> getAffectedObjects();
Set<UUID> isDependentTo(List<ContinuousEffect> allEffectsInLayer);
EnumSet<DependencyType> getDependencyTypes();
void addDependencyType(DependencyType dependencyType);
void setDependedToType(DependencyType dependencyType);
EnumSet<DependencyType> getDependedToTypes();
void addDependedToType(DependencyType dependencyType);
void setStartingControllerAndTurnNum(Game game, UUID startingController, UUID activePlayerId);
UUID getStartingController();
boolean isYourNextTurn(Game game);
boolean isYourNextEndStep(Game game);
boolean isYourNextUpkeepStep(Game game);
@Override
ContinuousEffect copy();
boolean isTemporary();
void setTemporary(boolean temporary);
@Override
ContinuousEffect setTargetPointer(TargetPointer targetPointer);
}