private void CreateContractSection(IContractSection contract)
        {
            GameObject obj = Instantiate(ContractSectionPrefab);

            if (obj == null)
            {
                return;
            }

            obj.transform.SetParent(contract.IsHidden ? HiddenTransform : ActiveTransform, false);

            CW_ContractSection contractObject = obj.GetComponent <CW_ContractSection>();

            if (contractObject == null)
            {
                return;
            }

            contractObject.setContract(contract, this);

            if (contract.IsHidden)
            {
                hiddenContracts.Add(contract.ID);
            }
            else
            {
                activeContracts.Add(contract.ID);
            }

            masterList.Add(contract.ID, contractObject);
        }
        public void setParameter(IParameterSection section, CW_ContractSection c)
        {
            if (section == null)
            {
                return;
            }

            if (ParameterText == null || ParameterRewardText == null || ParameterPenaltyText == null)
            {
                return;
            }

            if (Spacer == null || ParameterLayout == null)
            {
                return;
            }

            if (c == null)
            {
                return;
            }

            root = c;

            parameterInterface = section;

            Spacer.minWidth = parameterInterface.ParamLayer * 5;

            ParameterLayout.minWidth      -= parameterInterface.ParamLayer * 5;
            ParameterLayout.preferredWidth = ParameterLayout.minWidth;

            ParameterText.OnTextUpdate.Invoke(parameterInterface.TitleText);

            ParameterRewardText.OnTextUpdate.Invoke(parameterInterface.RewardText);

            ParameterPenaltyText.OnTextUpdate.Invoke(parameterInterface.PenaltyText);

            oldState = parameterInterface.ParameterState;

            setNote();

            var subParams = parameterInterface.GetSubParams;

            if (parameterInterface.ParamLayer < 4 && subParams.Count > 0)
            {
                CreateSubParameters(subParams);

                if (c.Interface.ShowParams)
                {
                    if (SubParamTransform != null && parameterInterface.ParameterState != ContractState.Complete)
                    {
                        SubParamTransform.gameObject.SetActive(true);
                    }
                }
            }
        }
        public void SortChildren(List <Guid> sortedList)
        {
            if (missionInterface == null)
            {
                return;
            }

            if (ActiveTransform == null || HiddenTransform == null)
            {
                return;
            }

            int l = sortedList.Count;

            for (int i = l - 1; i >= 0; i--)
            {
                Guid id = sortedList[i];

                CW_ContractSection c = GetContract(id);

                if (c == null)
                {
                    continue;
                }

                c.transform.SetParent(null);
            }

            for (int i = 0; i < l; i++)
            {
                Guid id = sortedList[i];

                CW_ContractSection c = GetContract(id);

                if (c == null)
                {
                    continue;
                }

                c.transform.SetParent(c.Interface.IsHidden ? HiddenTransform : ActiveTransform);
            }
        }
        public void RefreshContract(IContractSection contract)
        {
            if (contract == null)
            {
                return;
            }

            CW_ContractSection c = GetContract(contract.ID);

            if (c == null)
            {
                return;
            }

            c.RefreshParameters();

            if (CW_Window.Window != null)
            {
                CW_Window.Window.ProcessTooltips();
            }
        }