Exemplo n.º 1
0
        private void RankProgrammingExample(
            ExamplePage example,
            RankSettings settings,
            GameActor actor,
            ProgrammingElement selected,
            ReflexData reflex)
        {
            if (!example.ActorCompatible(actor))
            {
                example.rank = -1;
                return;
            }

            string selectedUpid;

            if (selected != null)
            {
                selectedUpid = selected.upid;
            }
            else
            {
                selectedUpid = String.Empty;
            }


            example.rank = 0;

            for (int iReflex = 0; iReflex < example.reflexes.Length; ++iReflex)
            {
                ReflexData exampleReflex = example.reflexes[iReflex];

                // Rank sensor
                if (selected == exampleReflex.Sensor)
                {
                    example.rank += RankElements(exampleReflex.Sensor, selected, settings.sensorRank);
                }

                if (exampleReflex.Sensor != null && reflex.Sensor != null)
                {
                    example.rank += RankElements(exampleReflex.Sensor, reflex.Sensor, settings.sensorRank);
                }

                // Rank selector
                if (selected == exampleReflex.Selector)
                {
                    example.rank += RankElements(exampleReflex.Selector, selected, settings.selectorRank);
                }

                if (exampleReflex.Selector != null && reflex.Selector != null)
                {
                    example.rank += RankElements(exampleReflex.Selector, reflex.Selector, settings.selectorRank);
                }

                // Rank actuator
                if (selected == exampleReflex.Actuator)
                {
                    example.rank += RankElements(exampleReflex.Actuator, selected, settings.actuatorRank);
                }

                if (exampleReflex.Actuator != null && reflex.Actuator != null)
                {
                    example.rank += RankElements(exampleReflex.Actuator, reflex.Actuator, settings.actuatorRank);
                }

                // Rank filters
                for (int i = 0; i < exampleReflex.Filters.Count; ++i)
                {
                    if (selected == exampleReflex.Filters[i])
                    {
                        example.rank += RankElements(exampleReflex.Filters[i], selected, settings.filterRank);
                    }

                    for (int j = 0; j < reflex.Filters.Count; ++j)
                    {
                        example.rank += RankElements(exampleReflex.Filters[i], reflex.Filters[j], settings.filterRank);
                    }
                }

                // Rank modifiers
                for (int i = 0; i < exampleReflex.Modifiers.Count; ++i)
                {
                    if (selected == exampleReflex.Modifiers[i])
                    {
                        example.rank += RankElements(exampleReflex.Modifiers[i], selected, settings.modifierRank);
                    }

                    for (int j = 0; j < reflex.Modifiers.Count; ++j)
                    {
                        example.rank += RankElements(exampleReflex.Modifiers[i], reflex.Modifiers[j], settings.modifierRank);
                    }
                }
            }
        }