Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Scripts/XUIC/XUiC_QuestOfferWindowRebirth.cs
Nathaniel Cosford e06f2bd282 Add All Mods
2025-05-29 23:33:28 +09:30

350 lines
14 KiB
C#

public class XUiC_QuestOfferWindowRebirth : XUiC_QuestOfferWindow
{
public Quest quest;
public XUiV_Sprite prefabPreview;
public XUiV_Label Label;
public XUiV_Label LabelNumToGo;
public XUiV_Panel Panel;
public XUiV_Panel PanelHeader;
public XUiV_Label LabelBiome;
public int windowX = 0;
public int windowY = 0;
private XUiController btnAccept;
private XUiController btnDecline;
private XUiV_Button btnAccept_Background;
private XUiV_Button btnDecline_Background;
private bool btnAcceptHovered;
private bool btnDeclineHovered;
private bool questAccepted;
private Action<EntityNPC> OnCancel;
public override void Init()
{
if (this.viewComponent != null)
{
this.viewComponent.InitView();
}
for (int i = 0; i < this.children.Count; i++)
{
this.children[i].Init();
}
this.btnAccept = base.GetChildById("btnAccept");
this.btnAccept_Background = (XUiV_Button)this.btnAccept.GetChildById("clickable").ViewComponent;
this.btnAccept_Background.Controller.OnPress += this.btnAccept_OnPress;
this.btnAccept_Background.Controller.OnHover += this.btnAccept_OnHover;
this.btnDecline = base.GetChildById("btnDecline");
this.btnDecline_Background = (XUiV_Button)this.btnDecline.GetChildById("clickable").ViewComponent;
this.btnDecline_Background.Controller.OnPress += this.btnDecline_OnPress;
this.btnDecline_Background.Controller.OnHover += this.btnDecline_OnHover;
//prefabPreview = base.GetChildById("poiPreview").ViewComponent as XUiV_Texture;
this.prefabPreview = (XUiV_Sprite)GetChildById("previewImage").ViewComponent;
Panel = (XUiV_Panel)GetChildById("content").ViewComponent;
Label = (XUiV_Label)Panel.Controller.GetChildById("descriptionText").ViewComponent;
PanelHeader = (XUiV_Panel)GetChildById("header").ViewComponent;
LabelNumToGo = (XUiV_Label)PanelHeader.Controller.GetChildById("numToGo").ViewComponent;
}
private void btnAccept_OnHover(XUiController _sender, bool _isOver)
{
this.btnAcceptHovered = _isOver;
base.RefreshBindings(false);
}
private void btnDecline_OnHover(XUiController _sender, bool _isOver)
{
this.btnDeclineHovered = _isOver;
base.RefreshBindings(false);
}
private void btnAccept_OnPress(XUiController _sender, int _mouseButton)
{
Quest quest = this.Quest;
quest.QuestGiverID = this.QuestGiverID;
if (this.OfferType == XUiC_QuestOfferWindow.OfferTypes.Item)
{
ItemStack itemStack = this.ItemStackController.ItemStack;
if (itemStack.count > 1)
{
itemStack.count--;
this.ItemStackController.ForceSetItemStack(itemStack.Clone());
this.ItemStackController.WindowGroup.Controller.SetAllChildrenDirty(false);
}
else
{
this.ItemStackController.ItemStack = ItemStack.Empty.Clone();
this.ItemStackController.WindowGroup.Controller.SetAllChildrenDirty(false);
}
}
if (this.QuestGiverID != -1)
{
base.xui.Dialog.Respondent.PlayVoiceSetEntry("questaccepted", base.xui.playerUI.entityPlayer, true, true);
}
this.questAccepted = true;
base.xui.playerUI.windowManager.Close(base.WindowGroup.ID);
base.xui.playerUI.entityPlayer.QuestJournal.AddQuest(quest);
}
private void btnDecline_OnPress(XUiController _sender, int _mouseButton)
{
EntityNPC respondent = base.xui.Dialog.Respondent;
if (this.QuestGiverID != -1)
{
base.xui.Dialog.Respondent.PlayVoiceSetEntry("questdeclined", base.xui.playerUI.entityPlayer, true, true);
}
base.xui.playerUI.windowManager.Close(base.WindowGroup.ID);
if (this.OnCancel != null)
{
this.OnCancel(respondent);
}
}
public override bool GetBindingValue(ref string value, string bindingName)
{
if (bindingName != null)
{
if (bindingName == "questname")
{
string biome = "";
if (this.Quest != null && !GameUtils.IsPlaytesting())
{
Vector3 QuestLocation = this.Quest.GetLocation();
string biomeName = RebirthUtilities.GetBiomeName(QuestLocation);
if (biomeName == "wasteland")
{
biome = "[bd5959]" + Localization.Get("xuiWasteland") + "[-]";
}
else if (biomeName == "desert")
{
biome = "[bfbc5a]" + Localization.Get("xuiDesert") + "[-]";
}
else if (biomeName == "forest" || biomeName == "pine_forest")
{
biome = "[5fb056]" + Localization.Get("xuiPineForest") + "[-]";
}
else if (biomeName == "burnt_forest")
{
biome = "[bf9b5c]" + Localization.Get("xuiBurntForest") + "[-]";
}
else if (biomeName == "snow")
{
biome = "[bf9b5c]" + Localization.Get("xuiSnow") + "[-]";
}
}
value = ((this.Quest != null) ? this.Quest.GetParsedText(this.Quest.QuestClass.Name) : "");
if (biome.Trim().Length > 0)
{
value = value + " (" + biome.Trim() + ")";
}
return true;
}
else if (bindingName == "questicon")
{
value = ((this.Quest != null) ? this.Quest.QuestClass.Icon : "");
return true;
}
else if (bindingName == "questoffer")
{
value = ((this.Quest != null) ? this.Quest.GetParsedText(this.Quest.QuestClass.Offer) : "");
return true;
}
else if (bindingName == "questdifficulty")
{
value = ((this.Quest != null) ? this.Quest.QuestClass.Difficulty : "");
return true;
}
else if (bindingName == "windowX")
{
value = this.windowX.ToString();
return true;
}
else if (bindingName == "windowY")
{
value = this.windowY.ToString();
return true;
}
}
return false;
}
public override void OnOpen()
{
base.OnOpen();
string strPrefabName = "";
if (this.Quest.QuestPrefab != null)
{
strPrefabName = base.Quest.QuestPrefab.name;
}
//strPrefabName = base.Quest.QuestPrefab.name; // base.Quest.GetPOIName();
string[] parts = strPrefabName.Split('.');
strPrefabName = parts[0];
string strQuestTags = base.Quest.QuestTags.ToString();
int questType = 0;
Entity entity = GameManager.Instance.World.GetEntity(Quest.QuestGiverID);
EntityPlayerLocal primaryPlayer = GameManager.Instance.World.GetPrimaryPlayer();
if (entity is EntityTrader)
{
EntityTrader entityTrader = (EntityTrader)entity;
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen entityTrader.EntityName: " + entityTrader.EntityName);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen entityTrader.EntityClass.entityClassName: " + entityTrader.EntityClass.entityClassName);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen entityTrader.NPCInfo.QuestFaction: " + entityTrader.NPCInfo.QuestFaction);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.QuestsPerTier: " + Quest.QuestsPerTier);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.QuestFactionPoints: " + GameManager.Instance.World.GetPrimaryPlayer().QuestJournal.QuestFactionPoints);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.GetCurrentFactionTier: " + GameManager.Instance.World.GetPrimaryPlayer().QuestJournal.GetCurrentFactionTier(entityTrader.NPCInfo.QuestFaction));
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen GetQuestFactionPoints: " + GameManager.Instance.World.GetPrimaryPlayer().QuestJournal.GetQuestFactionPoints(entityTrader.NPCInfo.QuestFaction));
int jobsToNextTier = RebirthVariables.customJobsToNextTier;
int numQuests = jobsToNextTier; // Quest.QuestsPerTier;
int questPoints = 0;
int questTier = 0;
if (primaryPlayer != null)
{
questPoints = primaryPlayer.QuestJournal.GetQuestFactionPoints(entityTrader.NPCInfo.QuestFaction);
questTier = primaryPlayer.QuestJournal.GetCurrentFactionTier(entityTrader.NPCInfo.QuestFaction);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen questPoints: " + questPoints);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen questTier: " + questTier);
int tierPoints = 0;
for (int i = 1; i <= questTier; i++)
{
tierPoints = tierPoints + (i * numQuests);
}
int pointsLeft = tierPoints - questPoints;
int jobsLeft = pointsLeft / questTier;
int numPointsLeft = tierPoints - pointsLeft;
if (pointsLeft > 0 && pointsLeft < questTier)
{
jobsLeft = 1;
}
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen pointsLeft: " + pointsLeft);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen tierPoints: " + tierPoints);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen jobsLeft: " + jobsLeft);
if (questTier < 6)
{
LabelNumToGo.Text = "[cf8080]" + (int)jobsLeft + "[-] " + Localization.Get("ttTier") + " [d4d483]" + questTier + "[-] " + Localization.Get("ttJobsLeft") + " [8dc987]" + (questTier + 1) + "[-]";
}
}
}
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.ID: " + base.Quest.ID);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.QuestClass.Name: " + base.Quest.QuestClass.Name);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.QuestClass.ID: " + base.Quest.QuestClass.ID);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Quest.QuestClass.QuestType: " + base.Quest.QuestClass.QuestType);
for (int i = 0; i < base.Quest.Objectives.Count; i++)
{
/*//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen ToString(): " + base.Quest.Objectives[i].ToString());
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen ObjectiveValueType: " + base.Quest.Objectives[i].ObjectiveValueType);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen Value: " + base.Quest.Objectives[i].Value);
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen ID: " + base.Quest.Objectives[i].ID);*/
if (base.Quest.Objectives[i].ToString() == "ObjectiveTreasureChest")
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 1");
questType = 1;
strPrefabName = "buried_supplies";
}
}
if (base.Quest.ID.ToLower().Contains("challenge_furiousramsaystarter"))
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 1a");
questType = 2;
strPrefabName = base.Quest.ID.ToLower();
}
else if (base.Quest.ID.ToLower().Contains("contraband_collection"))
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 1a2");
questType = 3;
strPrefabName = "ContrabandCollection";
}
Vector2i labelSize = new Vector2i(990, 710);
Label.Size = labelSize;
string ModsBasePath = GameIO.GetUserGameDataDir() + "/Mods";
string ModsBasePathLegacy = Application.platform != UnityEngine.RuntimePlatform.OSXPlayer ? (Application.dataPath + "/../Mods") : (Application.dataPath + "/../../Mods");
string prefabImagePath = "";
if (Directory.Exists(ModsBasePathLegacy + "/zzz_REBIRTH__Utils"))
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 3");
if (questType == 1)
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 4");
prefabImagePath = ModsBasePathLegacy + "/zzz_REBIRTH__Utils" + "/UIAtlases/UIAtlas/buried_supplies.jpg";
}
else if (questType == 3)
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 4a");
prefabImagePath = ModsBasePathLegacy + "/zzz_REBIRTH__Utils" + "/UIAtlases/UIAtlas/ContrabandCollection.jpg";
}
else
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 6");
prefabImagePath = ModsBasePathLegacy + "/zzz_REBIRTH__Utils" + "/UIAtlases/UIAtlas/" + strPrefabName + ".jpg";
}
}
else
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 7");
if (questType == 1)
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 8");
prefabImagePath = ModsBasePath + "/zzz_REBIRTH__Utils" + "/UIAtlases/UIAtlas/buried_supplies.jpg";
}
else if (questType == 3)
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 8a");
prefabImagePath = ModsBasePath + "/zzz_REBIRTH__Utils" + "/UIAtlases/UIAtlas/ContrabandCollection.jpg";
}
else
{
//Log.Out("XUiC_QuestOfferWindowRebirth-OnOpen 9");
prefabImagePath = ModsBasePath + "/zzz_REBIRTH__Utils" + "/UIAtlases/UIAtlas/" + strPrefabName + ".jpg";
}
}
if (primaryPlayer != null)
{
this.windowX = 6;
this.windowY = -350;
}
prefabPreview.SpriteName = strPrefabName;
if (!File.Exists(prefabImagePath))
{
this.windowX = 6;
this.windowY = -10;
}
else
{
labelSize = new Vector2i(998, 440);
Label.Size = labelSize;
}
}
}