private void buildContractTitle(contractUIObject c, int id, int size, ref Rect r) { string contractTitle = c.Container.Title; GUIStyle cStyle = titleState(c.Container.Contract.ContractState); bool active = c.Container.Contract.ContractState == Contract.State.Active || c.Container.Contract.ContractState == Contract.State.Completed; bool failed = c.Container.Contract.ContractState == Contract.State.Active || c .Container.Contract.ContractState == Contract.State.Cancelled || c.Container.Contract.ContractState == Contract.State.DeadlineExpired || c.Container.Contract.ContractState == Contract.State.Failed; //Add in space for the contract title buttons GUILayout.Space(23 + size * 4); //Draw inactive buttons if any popup window is open if (!popup) { if (GUILayout.Button(contractTitle, cStyle, GUILayout.MaxWidth(225 + size * 30))) c.ShowParams = !c.ShowParams; } else GUILayout.Box(contractTitle, hoverTitleState(c.Container.Contract.ContractState), GUILayout.MaxWidth(225 + size * 30)); r = GUILayoutUtility.GetLastRect(); //Only draw the rewards if they are visible in the window if (WindowRect.width >= 270 + (size* 30)) { if (r.yMin >= (scroll.y - 20) && r.yMax <= (scroll.y + WindowRect.height - (20 + size * 6))) { Rect rewardsRect = r; rewardsRect.x = 230 + (size * 30); rewardsRect.y -= (2 + (size *2)); scaledContent(ref rewardsRect, c.Container.FundsRewString, c.Container.FundsPenString, Currency.Funds, size, active, failed); scaledContent(ref rewardsRect, c.Container.SciRewString, "", Currency.Science, size, active, failed); scaledContent(ref rewardsRect, c.Container.RepRewString, c.Container.RepPenString, Currency.Reputation, size, active, failed); } } //Display note if (!string.IsNullOrEmpty(c.Container.Notes) && c.Container.ShowNote && c.Container.Contract.ContractState == Contract.State.Active) { GUILayout.Space(-3); GUILayout.Box(c.Container.Notes, GUILayout.MaxWidth(300 + size * 60)); r.height += GUILayoutUtility.GetLastRect().height; } }
private void buildContractTitleBar(contractUIObject c, int id, int size, ref Rect r) { r.x = 6; r.y += (r.height + 2); r.width = 54 + (size * 12); r.height = 15 + (size * 4); if (r.yMin >= (scroll.y - 20) && r.yMax <= (scroll.y + WindowRect.height - (30 + size * 6))) { //Difficulty icons if (c.Container.Contract.Prestige == Contract.ContractPrestige.Trivial) GUI.DrawTexture(r, contractSkins.goldStar); else if (c.Container.Contract.Prestige == Contract.ContractPrestige.Significant) GUI.DrawTexture(r, contractSkins.goldStarTwo); else GUI.DrawTexture(r, contractSkins.goldStarThree); r.x += r.width; r.width = 58 + (size * 15); //Expiration date if (c.Container.Duration >= 2160000) GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerGood); else if (c.Container.Duration > 0) GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerBad); else if (c.Container.Contract.ContractState == Contract.State.Completed) GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerGood); else GUI.Label(r, c.Container.DaysToExpire, contractSkins.timerFinished); r.x += 60 + (size * 10); r.width = 16 + (size * 4); r.height += 1; //Draw icon buttons when no popup menus are open if (!popup) { //Agency Icon if (GUI.Button(r, new GUIContent(contractSkins.agencyIcon, "Agency"), contractSkins.texButtonSmall)) { currentAgent = c.Container.Contract.Agent; popup = !popup; agencyPopup = !agencyPopup; } r.x += 22 + (size * 4); //Show and hide icons if (c.Container.Contract.ContractState == Contract.State.Active) { if (currentMission.ShowActiveMissions) { if (GUI.Button(r, new GUIContent(contractSkins.hideIcon, "Hide Contract"), contractSkins.texButtonSmall)) nextRemoveList.Add(c); } else { if (GUI.Button(r, new GUIContent(contractSkins.showIcon, "Un-Hide Contract"), contractSkins.texButtonSmall)) nextRemoveList.Add(c); } } else { if (GUI.Button(r, new GUIContent(contractSkins.closeIcon, "Remove Contract"), contractSkins.texButtonSmall)) nextRemoveMissionList.Add(c); } r.x += 22 + (size * 4); //Pin icon button if (c.Order == null) { if (GUI.Button(r, new GUIContent(contractSkins.pinIcon, "Pin Contract"), contractSkins.texButtonSmall)) nextPinnedList.Add(c); } else { r.width -= 2; if (GUI.Button(r, new GUIContent(contractSkins.pinDownIcon, "Un-Pin Contract"), contractSkins.texButtonSmall)) nextPinnedList.Add(c); } r.x += 22 + (size * 4); r.width = 16 + (size * 4); //Mission list button if (GUI.Button(r, new GUIContent(contractSkins.missionIcon, "Add To Mission List"),contractSkins.texButtonSmall)) { tempContainer = c; popup = true; missionCreator = true; } r.width = 12 + (size * 4); r.x += 18 + (size * 4); //Note icon button if (c.Container.Contract.ContractState == Contract.State.Active && !string.IsNullOrEmpty(c.Container.Notes)) { if (!c.Container.ShowNote) { if (GUI.Button(r, new GUIContent(contractSkins.noteIcon, "Show Note"), contractSkins.texButtonSmall)) c.Container.ShowNote = !c.Container.ShowNote; } else { if (GUI.Button(r, new GUIContent(contractSkins.noteIconOff, "Hide Note"), contractSkins.texButtonSmall)) c.Container.ShowNote = !c.Container.ShowNote; } } } //Draw inactive icons while any popup menu is active else { //Agency Icon GUI.Label(r, contractSkins.agencyIcon, contractSkins.texButtonSmall); r.x += 22 + (size * 4); //Show and hide icons if (c.Container.Contract.ContractState == Contract.State.Active) { if (currentMission.ShowActiveMissions) GUI.Label(r, contractSkins.hideIcon, contractSkins.texButtonSmall); else GUI.Label(r, contractSkins.showIcon, contractSkins.texButtonSmall); } else GUI.Label(r, contractSkins.closeIcon, contractSkins.texButtonSmall); r.x += 22 + (size * 4); //Pin icon button if (c.Order == null) GUI.Label(r, contractSkins.pinIcon, contractSkins.texButtonSmall); else { r.width -= 2; GUI.Label(r, contractSkins.pinDownIcon, contractSkins.texButtonSmall); } r.x += 22 + (size * 4); r.width = 16 + (size * 4); //Mission list button GUI.Label(r, contractSkins.missionIcon, contractSkins.texButtonSmall); r.x += 18 + (size * 4); r.width = 12 + (size * 4); //Note icon button if (c.Container.Contract.ContractState == Contract.State.Active && !string.IsNullOrEmpty(c.Container.Notes)) { if (!c.Container.ShowNote) GUI.Label(r, contractSkins.noteIcon, contractSkins.texButtonSmall); else GUI.Label(r, contractSkins.noteIconOff, contractSkins.texButtonSmall); } } } }
//Remove contract from current list and update private void showHideContract(contractUIObject c) { if (currentMission.ShowActiveMissions) { if (!currentMission.HiddenMissionList.Contains(c.Container.Contract.ContractGuid) && c.Container.Contract.ContractState == Contract.State.Active) { currentMission.HiddenMissionList.Add(c.Container.Contract.ContractGuid); c.ShowParams = false; } contractScenario.ListRemove(currentMission.ActiveMissionList, c.Container.Contract.ContractGuid); if (contractScenario.ListRemove(pinnedList, c.Container.Contract.ContractGuid)) c.Order = null; cList = currentMission.ActiveMissionList; } else { if (!currentMission.ActiveMissionList.Contains(c.Container.Contract.ContractGuid) && c.Container.Contract.ContractState == Contract.State.Active) { currentMission.ActiveMissionList.Add(c.Container.Contract.ContractGuid); c.ShowParams = true; } contractScenario.ListRemove(currentMission.HiddenMissionList, c.Container.Contract.ContractGuid); if (contractScenario.ListRemove(pinnedList, c.Container.Contract.ContractGuid)) c.Order = null; cList = currentMission.HiddenMissionList; } if (c.Container.Contract.ContractState != Contract.State.Active) { contractScenario.Instance.removeContract(c.Container.Contract.ContractGuid); currentMission.removeContract(c.Container); foreach (contractMission m in missionList) m.removeContract(c.Container); } }