public GameRuleEvent(GameRuleEventType et, SportsObject s, FieldObject t) { source = s; target = t; eventType = et; if (et == GameRuleEventType.Bump && t.GetType() == typeof(FieldObject)) param = t.sportName; else param = null; }
public SportsObject trigger; //this will cause the condition that ends the timer #endregion Fields #region Constructors public GameRuleActionWaitTimer(GameRuleEventHappenedCondition c, SportsObject tr, SportsObject ta, GameRuleDurationEffect e) { condition = c; trigger = tr; target = ta; effect = e; }
public override bool checkCondition(SportsObject triggeringObject) { return triggeringObject.GetType() == selector.targetType() && conditionZone.objectsInZone.Contains(triggeringObject); }
public virtual bool checkCondition(SportsObject triggeringObject) { return false; }
public override SportsObject interceptSelection(SportsObject so) { lastInterceptionSource = so; return ((TeamPlayer)(so)).opponent; }
public SportsObject interceptSelection(SportsObject so) { foreach (GameRule metaRule in metaRulesList) { if (metaRule.condition.checkCondition(so)) return ((GameRuleMetaRuleAction)(metaRule.action)).innerMetaRule.interceptSelection(so); } return so; }
public override SportsObject target(SportsObject source) { TeamPlayer shooter = ((Ball)(source)).currentPlayer; return shooter == null ? null : shooter.opponent; }
public abstract SportsObject target(SportsObject source);
public override void takeAction(SportsObject source, SportsObject target) { target.Duplicate(1); }
public override void cancelAction(SportsObject so) { so.StopBeingDizzy(); }
public override void cancelAction(SportsObject so) { so.StopBouncing(); }
public SportsObject target; //this is the object that the action happened to #endregion Fields #region Constructors public GameRuleActionWaitTimer(GameRuleEventHappenedCondition grehc, SportsObject sos, SportsObject sot, GameRuleDurationEffect grde) { condition = grehc; source = sos; target = sot; effect = grde; }
public override float startDuration(SportsObject source, SportsObject target, GameRuleDurationEffect action) { GameRules.instance.waitTimers.Add(new GameRuleActionWaitTimer(untilCondition, source, target, action)); return 1000000000.0f; }
public override float startDuration(SportsObject source, SportsObject target, GameRuleDurationEffect action) { return duration; }
public virtual void handleSportsCollision(SportsObject sObject) { }
public override SportsObject target(SportsObject source) { return ((Ball)(source)).currentPlayer; }
public override SportsObject target(SportsObject source) { return ((TeamPlayer)(source)).opponent; }
public abstract void cancelAction(SportsObject so);
public override SportsObject target(SportsObject source) { return source; }
public abstract void takeAction(SportsObject source, SportsObject target);
public void startFlash(SportsObject so) { flashImage.gameObject.SetActive(true); Color targetColor = GameRules.instance.teamColors[so.team]; flashImage.color = new Color(targetColor.r, targetColor.g, targetColor.b, 1.0f); }
//returns the sportsobject that got affected, often the source public SportsObject takeAction(SportsObject source) { SportsObject target = GameRules.instance.interceptSelection(selector.target(source)); if (target != null) innerEffect.takeAction(source, target); return target; }
public override void handleSportsCollision(SportsObject sObject) { }
public override void cancelAction(SportsObject so) { so.Unfreeze(); }
public abstract SportsObject interceptSelection(SportsObject so);
public override void takeAction(SportsObject source, SportsObject target) { target.Freeze(duration.startDuration(source, target, this)); }
public override void handleSportsCollision(SportsObject sObject) { gameRules.SendEvent(new GameRuleEvent(GameRuleEventType.BallHitSportsObject, bl: this, so: sObject)); }
public override void takeAction(SportsObject source, SportsObject target) { ((TeamPlayer)(target)).ScorePoints(pointsGiven); GameRules.instance.spawnPointsText(pointsGiven, (TeamPlayer)(target)); }
public abstract float startDuration(SportsObject source, SportsObject target, GameRuleDurationEffect action);
public override bool checkCondition(SportsObject triggeringObject) { return GameRules.derivesFrom(triggeringObject.GetType(), selector.targetType()) && conditionZone.objectsInZone.Contains(triggeringObject); }