/// <summary>
        /// Sets the policy to this panel and initialize editable entries
        /// </summary>
        /// <param name="policy">Policy that will be set</param>
        private void SetPolicy(List <ControlAction> policy)
        {
            Policy = policy;
            if (policy != null)
            {
                while (entries.Count < policy.Count)
                {
                    AddPolicyEntry();
                }
                while (entries.Count > policy.Count)
                {
                    RemovePolicyEntry(entries[0]);
                }

                for (var i = 0; i < entries.Count; i++)
                {
                    entries[i].Deinitialize();
                    entries[i].Initialize(this, validActions, validStates, policy[i].Action,
                                          policy[i].Value);
                }
            }
            else
            {
                while (entries.Count > 0)
                {
                    RemovePolicyEntry(entries[0]);
                }
            }

            PolicyUpdated?.Invoke(Policy);
            ScenarioManager.Instance.IsScenarioDirty = true;
        }
Exemple #2
0
        /// <summary>
        /// Updates the controllable policy basing on the inherited policy entries
        /// </summary>
        public void UpdatePolicy()
        {
            if (BoundControllable == null)
                return;
            Policy.Clear();
            for (var i = 0; i < entries.Count; i++)
            {
                if (!entries[i].IsValid)
                    continue;
                Policy.Add(entries[i].Policy);
            }

            PolicyUpdated?.Invoke(Policy);
            ScenarioManager.Instance.IsScenarioDirty = true;
        }