Add ReplacementEffectView, StaticAbility View for Netplay Dialog

This commit is contained in:
kevlahnota
2024-09-17 14:58:43 +08:00
committed by GitHub
parent 0a4cff5adc
commit 663bde22ac
6 changed files with 134 additions and 15 deletions

View File

@@ -60,6 +60,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase {
private boolean hasRun = false;
private List<ReplacementEffect> otherChoices = null;
private ReplacementEffectView view = null;
/**
* Gets the id.
@@ -109,6 +110,15 @@ public abstract class ReplacementEffect extends TriggerReplacementBase {
}
}
public ReplacementEffectView getView() {
if (view == null)
view = new ReplacementEffectView(this);
else {
view.updateHostCard(this);
view.updateDescription(this);
}
return view;
}
/**
* Sets the checks for run.
*

View File

@@ -0,0 +1,47 @@
package forge.game.replacement;
import forge.game.card.CardView;
import forge.game.card.IHasCardView;
import forge.trackable.TrackableObject;
import forge.trackable.TrackableProperty;
import forge.trackable.Tracker;
public class ReplacementEffectView extends TrackableObject implements IHasCardView {
private static final long serialVersionUID = 1L;
ReplacementEffectView(ReplacementEffect re) {
this(re, re.getHostCard() == null || re.getHostCard().getGame() == null ? null : re.getHostCard().getGame().getTracker());
}
ReplacementEffectView(ReplacementEffect re, Tracker tracker) {
super(re.getId(), tracker);
updateHostCard(re);
updateDescription(re);
}
@Override
public CardView getCardView() {
return this.getHostCard();
}
public CardView getHostCard() {
return get(TrackableProperty.RE_HostCard);
}
void updateHostCard(ReplacementEffect re) {
set(TrackableProperty.RE_HostCard, CardView.get(re.getHostCard()));
}
@Override
public String toString() {
return this.getDescription();
}
public String getDescription() {
return get(TrackableProperty.RE_Description);
}
void updateDescription(ReplacementEffect re) {
set(TrackableProperty.RE_Description, re.getDescription());
}
}

View File

@@ -62,6 +62,7 @@ public class StaticAbility extends CardTraitBase implements IIdentifiable, Clone
private int mayPlayTurn = 0;
private SpellAbility payingTrigSA;
private StaticAbilityView view = null;
@Override
public final int getId() {
@@ -231,6 +232,16 @@ public class StaticAbility extends CardTraitBase implements IIdentifiable, Clone
this.setCardState(state);
}
public StaticAbilityView getView() {
if (view == null)
view = new StaticAbilityView(this);
else {
view.updateHostCard(this);
view.updateDescription(this);
}
return view;
}
public final CardCollectionView applyContinuousAbilityBefore(final StaticAbilityLayer layer, final CardCollectionView preList) {
if (!shouldApplyContinuousAbility(layer, false)) {
return null;

View File

@@ -0,0 +1,47 @@
package forge.game.staticability;
import forge.game.card.CardView;
import forge.game.card.IHasCardView;
import forge.trackable.TrackableObject;
import forge.trackable.TrackableProperty;
import forge.trackable.Tracker;
public class StaticAbilityView extends TrackableObject implements IHasCardView {
private static final long serialVersionUID = 1L;
StaticAbilityView(StaticAbility st) {
this(st, st.getHostCard() == null || st.getHostCard().getGame() == null ? null : st.getHostCard().getGame().getTracker());
}
StaticAbilityView(StaticAbility st, Tracker tracker) {
super(st.getId(), tracker);
updateHostCard(st);
updateDescription(st);
}
@Override
public CardView getCardView() {
return this.getHostCard();
}
public CardView getHostCard() {
return get(TrackableProperty.ST_HostCard);
}
void updateHostCard(StaticAbility st) {
set(TrackableProperty.ST_HostCard, CardView.get(st.getHostCard()));
}
@Override
public String toString() {
return this.getDescription();
}
public String getDescription() {
return get(TrackableProperty.ST_Description);
}
void updateDescription(StaticAbility st) {
set(TrackableProperty.ST_Description, st.toString());
}
}

View File

@@ -241,6 +241,14 @@ public enum TrackableProperty {
CanPlay(TrackableTypes.BooleanType),
PromptIfOnlyPossibleAbility(TrackableTypes.BooleanType),
//ReplacementEffectView
RE_HostCard(TrackableTypes.CardViewType),
RE_Description(TrackableTypes.StringType),
//StaticAbilityView
ST_HostCard(TrackableTypes.CardViewType),
ST_Description(TrackableTypes.StringType),
//HasBackSide
BackSideName(TrackableTypes.StringType),
HasBackSide(TrackableTypes.BooleanType),