/// <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; }
/// <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; }