public override ProgrammingElement Clone() { TimerFilter clone = new TimerFilter(); CopyTo(clone); return(clone); }
} // end of MatchAction() public override void Reset(Reflex reflex) { this.timerBase = 0; this.timerRandom = 0; bool randomScore = false; this.timer.Stop(); // walk filters and set params if found // for (int indexFilter = 0; indexFilter < reflex.Filters.Count; indexFilter++) { Filter filter = reflex.Filters[indexFilter] as Filter; if (filter != null) { if (filter is TimerFilter) { TimerFilter timerFilter = filter as TimerFilter; if (randomScore) { this.timerRandom += timerFilter.seconds; } else { this.timerBase += timerFilter.seconds; } } if (filter is RandomFilter) { randomScore = true; } } } if (randomScore && this.timerRandom == 0) { this.timerRandom = 5; } this.timer.Reset(CalcTimerValue()); this.timer.Stop(); // make sure it is paused/stopped base.Reset(reflex); }
} // end of PrintTaskProgramming() static private string GetTileString(Reflex reflex) { string tiles = ""; // Ad blanks at beginning for indentation level. for (int i = 0; i < reflex.Indentation; i++) { tiles += " "; } tiles += Strings.Localize("programming.when") + " "; if (reflex.Data.Sensor != null) { tiles += reflex.Data.Sensor.label + " "; } else { tiles += "always "; } for (int i = 0; i < reflex.Data.Filters.Count; i++) { ScoreFilter sf = reflex.Data.Filters[i] as ScoreFilter; if (sf != null) { tiles += sf.points.ToString() + " "; } tiles += reflex.Data.Filters[i].label + " "; TerrainFilter tf = reflex.Data.Filters[i] as TerrainFilter; if (tf != null) { ushort matIdx = (ushort)reflex.MaterialType; int matLabel = Terrain.MaterialIndexToLabel(matIdx); tiles += matLabel.ToString() + " "; } TimerFilter tif = reflex.Data.Filters[i] as TimerFilter; if (tif != null) { tiles += tif.seconds.ToString() + " "; } } tiles += "-- " + Strings.Localize("programming.do") + " "; if (reflex.Data.Actuator != null) { tiles += reflex.Data.Actuator.label + " "; } if (reflex.Data.Selector != null) { tiles += reflex.Data.Selector.label + " "; } for (int i = 0; i < reflex.Data.Modifiers.Count; i++) { ScoreModifier sm = reflex.Data.Modifiers[i] as ScoreModifier; if (sm != null) { tiles += sm.points.ToString() + " "; } CreatableModifier cm = reflex.Data.Modifiers[i] as CreatableModifier; if (cm != null) { GameActor actor = InGame.inGame.GetCreatable(cm.CreatableId); if (actor != null) { tiles += actor.DisplayNameNumber + " "; } else { tiles += "? "; } } else { tiles += reflex.Data.Modifiers[i].label + " "; } } return(tiles); } // end of GetTileString()
protected void CopyTo(TimerFilter clone) { base.CopyTo(clone); clone.seconds = this.seconds; }