public contractUIObject(contractContainer c, contractMission m)
        {
            container   = c;
            mission     = m;
            _showParams = true;
            _order      = null;

            _agencyLogo = container.RootAgent.Logo;
            _agencyName = container.RootAgent.Name;

            _difficulty = (int)container.Root.Prestige;
            _id         = container.ID;

            for (int i = 0; i < c.FirstLevelParameterCount; i++)
            {
                parameterContainer p = c.getParameterLevelOne(i);

                if (p == null)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(p.Title))
                {
                    continue;
                }

                paramList.Add(new parameterUIObject(p));
            }
        }
Пример #2
0
        private void contractAccepted(Contract c)
        {
            if (c == null)
            {
                return;
            }

            if (c.ContractState != Contract.State.Active)
            {
                return;
            }

            contractContainer cC = contractParser.getActiveContract(c.ContractGuid);

            if (cC != null)
            {
                currentMission.addContract(cC, true, true, true);
                if (currentMission.ShowActiveMissions)
                {
                    refreshContracts(cList);
                }

                if (!currentMission.MasterMission)
                {
                    contractScenario.Instance.MasterMission.addContract(cC, true, true, true);
                }
            }
        }
Пример #3
0
        public void Rebuild()
        {
            contractScenario.Instance.addFullMissionList();

            currentMission = contractScenario.Instance.MasterMission;

            int l = ContractSystem.Instance.Contracts.Count;

            for (int i = 0; i < l; i++)
            {
                Contract c = ContractSystem.Instance.Contracts[i];

                if (c == null || c.ContractState != Contract.State.Active)
                {
                    continue;
                }

                contractContainer cC = contractParser.getActiveContract(c.ContractGuid);

                if (cC != null)
                {
                    currentMission.addContract(cC, true, true);
                }
            }

            UIWindow.SelectMission(currentMission);
        }
Пример #4
0
        public void NewMission(string title, Guid id)
        {
            if (string.IsNullOrEmpty(title))
            {
                return;
            }

            if (!contractScenario.Instance.addMissionList(title))
            {
                return;
            }

            contractMission cM = contractScenario.Instance.getMissionList(title);

            if (cM == null)
            {
                return;
            }

            contractContainer c = contractParser.getActiveContract(id);

            if (c == null)
            {
                return;
            }

            cM.addContract(c, true, true);
        }
Пример #5
0
 internal void removeContract(contractContainer c)
 {
     if (contractScenario.ListRemove(activeMissionList, c.Root.ContractGuid) || contractScenario.ListRemove(hiddenMissionList, c.Root.ContractGuid))
     {
         removeFromMasterList(c);
     }
 }
Пример #6
0
 private void removeFromMasterList(contractContainer c)
 {
     if (contractList.ContainsKey(c.Root.ContractGuid))
     {
         contractList.Remove(c.Root.ContractGuid);
     }
 }
Пример #7
0
        private void buildMissionList(string s, bool Active)
        {
            if (string.IsNullOrEmpty(s))
            {
                return;
            }
            else
            {
                string[] sA = s.Split(',');
                for (int i = 0; i < sA.Length; i++)
                {
                    contractContainer c   = null;
                    contractUIObject  cUI = null;
                    string[]          sB  = sA[i].Split('|');
                    try
                    {
                        Guid g = new Guid(sB[0]);
                        if (g == null)
                        {
                            continue;
                        }

                        c = contractParser.getActiveContract(g);
                        if (c == null)
                        {
                            continue;
                        }

                        addContract(c, Active, true);
                        cUI = getContract(g);
                        if (cUI == null)
                        {
                            continue;
                        }

                        cUI.SetHidden(!Active);
                        cUI.Order      = stringIntParse(sB[1]);
                        cUI.ShowParams = stringBoolParse(sB[2]);
                    }
                    catch (Exception e)
                    {
                        DMC_MBE.LogFormatted("Guid invalid: {0}", e);
                        continue;
                    }
                }
            }
        }
Пример #8
0
 internal void addContract(contractContainer c, bool active, bool warn, bool addToUI = false)
 {
     if (!activeMissionList.Contains(c.Root.ContractGuid) && !hiddenMissionList.Contains(c.Root.ContractGuid))
     {
         if (addToMasterList(c, addToUI))
         {
             if (active)
             {
                 activeMissionList.Add(c.Root.ContractGuid);
             }
             else
             {
                 hiddenMissionList.Add(c.Root.ContractGuid);
             }
         }
     }
     else if (warn)
     {
         DMC_MBE.LogFormatted("Mission List Already Contains Contract: {0}", c.Title);
     }
 }
Пример #9
0
        private void refreshList(Contract c)
        {
            window.refreshContracts(false);

            if (c == null)
            {
                return;
            }

            if (c.ContractState != Contract.State.Active)
            {
                return;
            }

            contractContainer cc = contractParser.getActiveContract(c.ContractGuid);

            if (cc == null)
            {
                return;
            }

            if (cc.Initialized)
            {
                return;
            }

            for (int i = 0; i < cc.ParameterCount; i++)
            {
                parameterContainer p = cc.getParameterFull(i);

                if (p == null)
                {
                    continue;
                }

                customStartup(p);
            }

            cc.Initialized = true;
        }
Пример #10
0
        private bool addToMasterList(contractContainer c, bool add = false)
        {
            if (!contractList.ContainsKey(c.Root.ContractGuid))
            {
                contractUIObject cUI = new contractUIObject(c, this);

                contractList.Add(c.Root.ContractGuid, cUI);

                if (add && UIParent != null)
                {
                    UIParent.AddContract(cUI);
                }

                return(true);
            }
            else
            {
                DMC_MBE.LogFormatted("Master Mission List For: [{0}] Already Contains Contract: [{1}]", _missionTitle, c.Title);
            }

            return(false);
        }
 private void removeFromMasterList(contractContainer c)
 {
     if (contractList.ContainsKey(c.Root.ContractGuid))
         contractList.Remove(c.Root.ContractGuid);
 }
        private bool addToMasterList(contractContainer c)
        {
            if (!contractList.ContainsKey(c.Root.ContractGuid))
            {
                contractList.Add(c.Root.ContractGuid, new contractUIObject(c));
                return true;
            }
            else
                DMC_MBE.LogFormatted("Master Mission List For: [{0}] Already Contains Contract: [{1}]", name, c.Title);

            return false;
        }
 internal void addContract(contractContainer c, bool active, bool warn)
 {
     if (!activeMissionList.Contains(c.Root.ContractGuid) && !hiddenMissionList.Contains(c.Root.ContractGuid))
     {
         if (addToMasterList(c))
         {
             if (active)
                 activeMissionList.Add(c.Root.ContractGuid);
             else
                 hiddenMissionList.Add(c.Root.ContractGuid);
         }
     }
     else if (warn)
         DMC_MBE.LogFormatted("Mission List Already Contains Contract: {0}", c.Title);
 }
 internal contractUIObject(contractContainer c)
 {
     container = c;
     showParams = true;
     order = null;
 }
Пример #15
0
        private void refreshContracts(List <Guid> list, bool sort = true)
        {
            List <Guid> removeList       = new List <Guid>();
            List <Guid> pinnedRemoveList = new List <Guid>();

            int l = list.Count;

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

                contractContainer cC = contractParser.getActiveContract(id);

                if (cC == null)
                {
                    cC = contractParser.getCompletedContract(id);
                }

                if (cC == null)
                {
                    removeList.Add(id);
                    continue;
                }
                else
                {
                    if (cC.Root.ContractState != Contract.State.Active)
                    {
                        cC.Duration     = 0;
                        cC.DaysToExpire = "----";

                        cC.Title = cC.Root.Title;
                        cC.Notes = cC.Root.Notes;

                        foreach (parameterContainer pC in cC.AllParamList)
                        {
                            pC.Title = pC.CParam.Title;
                            pC.setNotes(pC.CParam.Notes);
                        }

                        continue;
                    }

                    //Update contract timers
                    if (cC.Root.DateDeadline <= 0)
                    {
                        cC.Duration     = double.MaxValue;
                        cC.DaysToExpire = "----";
                    }
                    else
                    {
                        cC.Duration = cC.Root.DateDeadline - Planetarium.GetUniversalTime();
                        //Calculate time in day values using Kerbin or Earth days
                        cC.DaysToExpire = cC.timeInDays(cC.Duration);
                    }

                    cC.Title = cC.Root.Title;
                    cC.Notes = cC.Root.Notes;

                    foreach (parameterContainer pC in cC.AllParamList)
                    {
                        pC.Title = pC.CParam.Title;
                        pC.setNotes(pC.CParam.Notes);
                    }
                }
            }

            foreach (Guid id in pinnedList)
            {
                contractContainer cC = contractParser.getActiveContract(id);
                if (cC == null)
                {
                    pinnedRemoveList.Add(id);
                }
            }

            foreach (Guid id in removeList)
            {
                contractScenario.ListRemove(list, id);
            }

            foreach (Guid id in pinnedRemoveList)
            {
                contractScenario.ListRemove(pinnedList, id);
            }

            if (sort)
            {
                list = sortContracts(list, currentMission.OrderMode, currentMission.DescendingOrder);

                if (UIWindow == null)
                {
                    return;
                }

                UIWindow.SortMissionChildren(list);
            }

            if (UIWindow == null)
            {
                return;
            }

            UIWindow.UpdateMissionChildren();
        }
 internal void removeContract(contractContainer c)
 {
     if (contractScenario.ListRemove(activeMissionList, c.Root.ContractGuid) || contractScenario.ListRemove(hiddenMissionList, c.Root.ContractGuid))
         removeFromMasterList(c);
 }
        private void buildParameterLabel(parameterContainer cP, contractContainer c, int level, int id, int size, ref Rect r)
        {
            string paramTitle = cP.Title;
            bool active = cP.CParam.State == ParameterState.Incomplete;
            bool greenState = cP.CParam.State == ParameterState.Complete || cP.CParam.State == ParameterState.Incomplete;
            bool redState = cP.CParam.State == ParameterState.Incomplete || cP.CParam.State == ParameterState.Failed;
            GUIStyle pStyle = paramState(cP);

            GUILayout.BeginHorizontal();
            GUILayout.Space(5 + (level * 5));

            r.x = 5 + (level * 5);
            r.y += r.height;

            //Note icon button
            if (active && !string.IsNullOrEmpty(cP.Notes(useCustomNotes)))
            {
                r.x -= 2;
                r.y += 4;
                r.width = 12 + (size * 2);
                r.height = 14 + (size * 4);

                if (!cP.ShowNote)
                {
                    if (GUI.Button(r, new GUIContent(contractSkins.noteIcon, "Show Note"), contractSkins.texButtonSmall))
                        cP.ShowNote = !cP.ShowNote;
                }
                else
                {
                    if (GUI.Button(r, new GUIContent(contractSkins.noteIconOff, "Hide Note"), contractSkins.texButtonSmall))
                        cP.ShowNote = !cP.ShowNote;
                }
                GUILayout.Space(12 + size * 2);
            }

            /* FIXME - Disabled For Now; Need to Figure Out Changes Made In 0.90 */
            //Editor part icon button
            //if (cP.part != null && HighLogic.LoadedSceneIsEditor)
            //{
            //	if (GUILayout.Button(new GUIContent(contractSkins.partIcon, "Preview Part"), contractSkins.texButtonSmall, GUILayout.MaxWidth(18 + contractScenario.Instance.windowSize * 4), GUILayout.MaxHeight(18 + contractScenario.Instance.windowSize * 4)))
            //	{
            //		EditorLogic.fetch.Unlock(lockID);
            //		editorLocked = false;
            //		EditorPartList.Instance.RevealPart(cP.part, true);
            //	}
            //	GUILayout.Space(-3);
            //}

            //Contract parameter title
            if (!string.IsNullOrEmpty(cP.Notes(useCustomNotes)))
                GUILayout.Box(paramTitle, pStyle, GUILayout.MaxWidth(208 - (level * 5) + size * 28));
            else
                GUILayout.Box(paramTitle, pStyle, GUILayout.MaxWidth(220 - (level * 5) + size * 30));

            r = GUILayoutUtility.GetLastRect();

            GUILayout.EndHorizontal();

            //Parameter reward info
            if (WindowRect.width >= 270 + (size * 30))
            {
                if (r.yMin >= (scroll.y - 20) && r.yMax <= (scroll.y + WindowRect.height - (30 + size * 6)))
                {
                    Rect rewardsRect = r;
                    rewardsRect.x = 230 + (size * 30);
                    rewardsRect.y += 4;

                    scaledContent(ref rewardsRect, cP.FundsRewString, cP.FundsPenString, Currency.Funds, size, greenState, redState);

                    scaledContent(ref rewardsRect, cP.SciRewString, "", Currency.Science, size, greenState, redState);

                    scaledContent(ref rewardsRect, cP.RepRewString, cP.RepPenString, Currency.Reputation, size, greenState, redState);
                }
            }

            //Display note
            if (!string.IsNullOrEmpty(cP.Notes(useCustomNotes)) && cP.ShowNote && active)
            {
                GUILayout.Space(-6);
                GUILayout.Box(cP.Notes(useCustomNotes), GUILayout.MaxWidth(320 + size * 60));

                r.height += GUILayoutUtility.GetLastRect().height;
            }

            if (level < 4)
            {
                foreach (parameterContainer sP in cP.ParamList)
                {
                    if (sP.Level == level + 1 && !string.IsNullOrEmpty(sP.Title))
                    {
                        if (active)
                            buildParameterLabel(sP, c, level + 1, id, size, ref r);
                    }
                }
            }
        }