コード例 #1
0
        public override ProgrammingElement Clone()
        {
            TimerFilter clone = new TimerFilter();

            CopyTo(clone);
            return(clone);
        }
コード例 #2
0
        }   // 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);
        }
コード例 #3
0
ファイル: Print.cs プロジェクト: Yash-Codemaster/KoduGameLab
        }   // 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()
コード例 #4
0
 protected void CopyTo(TimerFilter clone)
 {
     base.CopyTo(clone);
     clone.seconds = this.seconds;
 }