コード例 #1
0
 public IDeepGoal getActiveDeepGoal()
 {
     if (StatisticsTracker.guildmastersElected.value == 0)
     {
         return(DeepGoalsTypes.NONE);
     }
     return(DeepGoalsTypes.getFirstActiveGoal());
     //IDeepGoal goal = DeepGoalsTypes.getFirstActiveGoal();
     //if(goal.minQuestDifficulty() >= StatisticsTracker.maxQuestDifficulty.value)
     //	return goal;
     //return DeepGoalsTypes.NONE;
 }
コード例 #2
0
 public IDeepGoal register()
 {
     DeepGoalsTypes.register(this);
     return(this);
 }
コード例 #3
0
ファイル: GuildManager.cs プロジェクト: kyapp69/IdleArtificer
        private static void electGuildmaster(Master master)
        {
            foreach (Industry ind in Main.instance.player.builtItems)
            {
                ind.apprentices = 0;
            }
            DeepGoalsTypes.clearActiveGoal();
            Main.instance.player.reset();
            BigInteger renown = Main.instance.player.totalRenown;

            //Debug.Log(Main.instance.player.totalRenown + " | " + Main.instance.player.renown);
            Main.instance.player.skillPoints       += renown / 10000;
            Main.instance.player.totalSkillPoints  += renown / 10000;
            Main.instance.player.currentGuildmaster = master;
            Main.instance.player.totalRenown        = 0;
            Main.instance.player.renown             = 0;
            Main.instance.player.journeymen         = 0;
            Main.instance.player.maxApprentices     = 0;

            List <ItemStack> allRelics = new List <ItemStack>();

            allRelics.AddRange(QuestManager.availableRelics);
            QuestManager.availableRelics.Clear();
            allRelics.AddRange(Main.instance.player.unidentifiedRelics);
            Main.instance.player.unidentifiedRelics.Clear();
            foreach (ItemStack stack in Main.instance.player.miscInventory)
            {
                if (stack.relicData != null)
                {
                    allRelics.Add(stack);
                }
            }
            Main.instance.player.miscInventory.Clear();
            List <ItemStack> specialItems = new List <ItemStack>();

            specialItems.AddRange(allRelics.FindAll(x => x.isSpecial()));
            allRelics.RemoveAll(x => x.isSpecial());
            allRelics.Sort((a, b) => {
                int besta = 0;
                int vala  = a.antiquity * 10;
                foreach (RelicInfo ri in a.relicData)
                {
                    besta = Math.Max(besta, ri.notoriety);
                    vala += ri.notoriety;
                }
                int bestb = 0;
                int valb  = b.antiquity * 10;
                foreach (RelicInfo ri in b.relicData)
                {
                    bestb = Math.Max(bestb, ri.notoriety);
                    valb += ri.notoriety;
                }
                besta += vala;
                bestb += valb;
                return(bestb.CompareTo(besta));
            });
            allRelics.RemoveRange(Math.Min(10, allRelics.Count - 1), allRelics.Count - Math.Min(10, allRelics.Count - 1));
            allRelics.AddRange(specialItems);
            int best = 0;

            foreach (ItemStack stack in allRelics)
            {
                best = Math.Max(++stack.antiquity, best);
                if (stack.antiquity >= 50)
                {
                    StatisticsTracker.impressiveAntiquity.setAchieved();
                }
                if (stack.antiquity <= 0)
                {
                    //Debug.Log("How the hell did this happen?");
                    //Debug.Log(stack.getDisplayName() + " has 0 antiquity.");
                    ItemStack     s       = stack;
                    List <string> strList = new List <string>();
                    if (s.enchants.Count > 0)
                    {
                        //strList.Add("Enchanted:");
                        foreach (string en in s.enchants.Select(x => x.name).Distinct())
                        {
                            int num = s.enchants.Count(x => x.name == en);
                            if (num > 1)
                            {
                                strList.Add(en + " (x" + num + ")");
                            }
                            else
                            {
                                strList.Add(en);
                            }
                        }
                    }
                    string str = string.Join(", ", strList.ToArray());
                    strList.Clear();
                    strList.Add(s.antiquity + " Antiquity");
                    if (s.enchants.Count > 0)
                    {
                        strList.Add("Enchanted:");
                        strList.Add(" - " + str);
                    }
                    foreach (RelicInfo inf in s.relicData)
                    {
                        strList.Add(inf.heroName + "\n   " + inf.questDescription + " (" + inf.notoriety + ")");
                        if (strList.Count > 3)
                        {
                            break;
                        }
                    }
                    str = string.Join("\n", strList.ToArray());

                    //Debug.Log(str);
                }
                stack.isIDedByPlayer = false;
                if (stack.relicData.Any(x => x.relicName == "Lost"))
                {
                    stack.relicData = null;
                    QuestManager.makeRelic(stack, new Main.FirstRelics(), 1, "Unknown");
                }
                else
                {
                    stack.relicData = null;
                    QuestManager.availableRelics.Add(QuestManager.makeRelic(stack, new AntiquityRelics(), 1, "Unknown"));
                }
            }
            StatisticsTracker.relicAntiquity.resetValue();
            StatisticsTracker.relicAntiquity.setValue(best);
///Kongregate statistics reporting
#if UNITY_WEBGL
            KongregateAPI.submitStat("relicAntiquity", best);
            KongregateAPI.submitStat("guildmastersElected", 1);
#endif

            int pts = 15 + SkillList.GuildmasterRating.getMultiplier();
            availableMasters[0] = Master.createRandomMaster(pts);
            availableMasters[1] = Master.createRandomMaster(pts);
            availableMasters[2] = Master.createRandomMaster(pts);

            GuiManager.instance.guildmasterArea.transform.Find("OwnedTxt").GetComponent <Text>().text = Main.instance.player.currentGuildmaster.getDisplay();
            if (!StatisticsTracker.firstGuildmaster.isAchieved())
            {
                StatisticsTracker.firstGuildmaster.setAchieved();
                StatisticsTracker.maxQuestDifficulty.addValue(2);
                StatisticsTracker.minQuestDifficulty.addValue(1);
            }
            closeNewGuildmaster();
            GuiManager.instance.guildArea.transform.Find("SkillPanel").Find("Skills").gameObject.SetActive(Main.instance.player.totalSkillPoints > 0);
            skillDisp.transform.parent.gameObject.SetActive(Main.instance.player.totalSkillPoints > 0);
            skillDisp.text = Main.AsCurrency(Main.instance.player.skillPoints);
            StatisticsTracker.guildmastersElected.addValue(1);
            closeNewGuildmaster();
        }
コード例 #4
0
        public PlayerInfo(SerializationInfo info, StreamingContext context)
        {
            //Main.instance.player.SetDefaultUpgrades();
#pragma warning disable 0168
            try {
                Main.saveVersionFromDisk = info.GetInt32("SaveVersion");
            }
            catch (Exception ex) {
                Main.saveVersionFromDisk = 0;
            }
#pragma warning restore 0168
            // To future self: this turned into a dirty hack
            // Because how how upgrades were handled
            // :(
            Main.instance.player.builtItems = new List <Industry>();
            Main.instance.player.money      = BigInteger.Parse(info.GetString("money"));
            Main.instance.player.moneyFloor = BigInteger.Parse(info.GetString("moneyFloor"));
            //StatisticsTracker.lifetimeMoney.setValue(BigInteger.Parse(info.GetString("lifetimeMoney")));
            Main.instance.player.renown      = BigInteger.Parse(info.GetString("renown"));
            Main.instance.player.totalRenown = BigInteger.Parse(info.GetString("totalRenown"));

            Main.instance.player.maxVendors     = info.GetInt32("maxVendors");
            Main.instance.player.currentVendors = info.GetInt32("currentVendors");
            Main.instance.player.maxApprentices = info.GetInt32("maxApprentices");
            if (Main.saveVersionFromDisk >= 6)
            {
                Main.instance.player.journeymen = info.GetInt32("journeymen");
            }
            Main.instance.player.currentApprentices         = info.GetInt32("currentApprentices");
            Main.instance.player.totalQuestsCompletedRenown = info.GetInt64("totalQuestsCompleted");
            Main.instance.player.questsCompletedRenown      = info.GetInt64("questsCompleted");


            if (Main.saveVersionFromDisk < 8)
            {
                Main.instance.player.skillPoints = info.GetInt32("skillPoints");
            }
            else
            {
                Main.instance.player.skillPoints      = BigInteger.Parse(info.GetString("skillPoints"));
                Main.instance.player.totalSkillPoints = BigInteger.Parse(info.GetString("totalSkillPoints"));
            }


            Main.instance.player.resetLevel   = info.GetInt32("resetLevel");
            Main.instance.player.researchTime = (float)info.GetDouble("researchTime");

            int num;
            num = info.GetInt32("miscInventorySize");
            //miscInventory = new List<ItemStack>();
            for (int o = 0; o < num; o++)
            {
                Main.instance.player.miscInventory.Add((ItemStack)info.GetValue("miscInventory_" + o, typeof(ItemStack)));
            }
            num = info.GetInt32("unidentifiedRelicsSize");
            //unidentifiedRelics = new List<ItemStack>();
            for (int o = 0; o < num; o++)
            {
                Main.instance.player.unidentifiedRelics.Add((ItemStack)info.GetValue("unidentifiedRelics_" + o, typeof(ItemStack)));
            }
            num = info.GetInt32("builtItemsSize");
            for (int o = 0; o < num; o++)
            {
                Industry temp;
                if (Main.saveVersionFromDisk >= 14)
                {
                    string id = info.GetString("buildItemID_" + o);
                    temp = (Industry)info.GetValue("builtItems_" + o, typeof(Industry));
                    Main.instance.player.industriesFromDisk.Add(new IndustryLoadWrapper(temp, id));
                }
                else
                {
                    int id = info.GetInt32("buildItemID_" + o);
                    temp = (Industry)info.GetValue("builtItems_" + o, typeof(Industry));
                    Main.instance.player.industriesFromDisk.Add(new IndustryLoadWrapper(temp, id));
                }
            }

            if (Main.saveVersionFromDisk >= 13)
            {
                FieldInfo[] fields = typeof(Industries).GetFields();
                num = info.GetInt32("allIndustries");
                for (int o = 0; o < num; o++)
                {
                    if (Main.saveVersionFromDisk >= 14)
                    {
                        Industry item = GameRegistry.GetIndustryByID(info.GetString("allIndustriesID_" + o));
                        item.setGridPos(new Vector3((float)info.GetDouble("allIndustriesX_" + o), (float)info.GetDouble("allIndustriesY_" + o), 0));
                        if (Main.saveVersionFromDisk >= 17)
                        {
                            item.doAutobuild        = info.GetBoolean("allIndustriesAB_" + o);
                            item.autoBuildLevel     = info.GetInt32("allIndustriesABLvl_" + o);
                            item.autoBuildMagnitude = info.GetInt32("allIndustriesABMag_" + o);
                            if (Main.saveVersionFromDisk >= 19)
                            {
                                item.startingVendors = info.GetInt32("allIndustriesABVend_" + o);
                            }
                        }
                    }
                    else
                    {
                        FieldInfo field = fields[o];
                        Industry  item  = (Industry)field.GetValue(null);
                        item.setGridPos(new Vector3((float)info.GetDouble("allIndustriesX_" + o), (float)info.GetDouble("allIndustriesY_" + o), 0));
                    }
                }
            }

            num = info.GetInt32("activeQuestsSize");
            //Debug.Log("Reading " + num + " active quests");
            for (int o = 0; o < num; o++)
            {
                Quest temp = (Quest)info.GetValue("activeQuests_" + o, typeof(Quest));
                //quest obstacle type data from disk isn't actually available yet
                Main.instance.player.activeQuestsFromDisk.Add(new QuestLoadWrapper(temp));
            }
            num = info.GetInt32("availableQuestsSize");
            //Debug.Log("Reading " + num + " available quests");
            for (int o = 0; o < num; o++)
            {
                Quest temp = (Quest)info.GetValue("availableQuests_" + o, typeof(Quest));
                //quest obstacle type data from disk isn't actually available yet
                Main.instance.player.questsFromDisk.Add(new QuestLoadWrapper(temp));
            }
            num = info.GetInt32("availableRelicsSize");
            for (int o = 0; o < num; o++)
            {
                QuestManager.availableRelics.Add((ItemStack)info.GetValue("availableRelics_" + o, typeof(ItemStack)));
            }
            if (Main.saveVersionFromDisk >= 10)
            {
                Main.instance.player._questTypeCompletion = (Dictionary <string, long>)info.GetValue("questTypeCompletion", typeof(Dictionary <string, long>));
            }
            float f = (float)info.GetDouble("newQuestTimer");
            QuestManager.LoadTimerFromSave(f);
            if (Main.saveVersionFromDisk >= 11)
            {
                QuestManager.setEquipTimer((float)info.GetDouble("questEquipTimer"));
            }

            if (Main.saveVersionFromDisk >= 2)
            {
                GuildManager.readSaveData(ref info, ref context);
            }
            if (Main.saveVersionFromDisk >= 7)
            {
                StatisticsTracker.deserializeAllStats(ref info, ref context);
            }
            if (Main.saveVersionFromDisk >= 8)
            {
                Main.instance.player.currentGuildmaster = (Master)info.GetValue("currentGuildmaster", typeof(Master));
            }
            else
            {
                Main.instance.player.currentGuildmaster = new Master();
            }
            if (Main.saveVersionFromDisk >= 12)
            {
                DeepGoalsTypes.deserialize(ref info, ref context);
            }
            if (Main.saveVersionFromDisk >= 22)
            {
                ResearchManager.lastViewDate = DateTime.Parse(info.GetString("ResearchManager.lastViewDate"));
            }
            TutorialManager.deserialize(ref info, ref context);
        }
コード例 #5
0
        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("SaveVersion", 24);
            info.AddValue("money", money.ToString());
            info.AddValue("moneyFloor", moneyFloor.ToString());
            //info.AddValue("lifetimeMoney", StatisticsTracker.lifetimeMoney.ToString());
            info.AddValue("renown", renown.ToString());
            info.AddValue("totalRenown", totalRenown.ToString());
            info.AddValue("maxVendors", maxVendors);
            info.AddValue("currentVendors", currentVendors);
            info.AddValue("maxApprentices", maxApprentices);
            info.AddValue("journeymen", journeymen);
            info.AddValue("currentApprentices", currentApprentices);
            info.AddValue("totalQuestsCompleted", totalQuestsCompletedRenown);
            info.AddValue("questsCompleted", questsCompletedRenown);
            info.AddValue("skillPoints", skillPoints.ToString());
            info.AddValue("totalSkillPoints", totalSkillPoints.ToString());
            info.AddValue("resetLevel", resetLevel);
            info.AddValue("researchTime", researchTime);
            info.AddValue("miscInventorySize", miscInventory.Count);
            for (int i = 0; i < miscInventory.Count; i++)
            {
                info.AddValue("miscInventory_" + i, miscInventory[i], typeof(ItemStack));
            }
            info.AddValue("unidentifiedRelicsSize", unidentifiedRelics.Count);
            for (int i = 0; i < unidentifiedRelics.Count; i++)
            {
                info.AddValue("unidentifiedRelics_" + i, unidentifiedRelics[i], typeof(ItemStack));
            }
            info.AddValue("builtItemsSize", builtItems.Count);
            for (int i = 0; i < builtItems.Count; i++)
            {
                info.AddValue("buildItemID_" + i, builtItems[i].saveName);
                info.AddValue("builtItems_" + i, builtItems[i], typeof(Industry));
            }

            FieldInfo[] fields = typeof(Industries).GetFields();
            info.AddValue("allIndustries", fields.Length);
            for (int i = 0; i < fields.Length; i++)
            {
                FieldInfo field = fields[i];
                Industry  item  = (Industry)field.GetValue(null);

                info.AddValue("allIndustriesID_" + i, item.saveName);
                info.AddValue("allIndustriesX_" + i, item.getGridPos().x);
                info.AddValue("allIndustriesY_" + i, item.getGridPos().y);
                info.AddValue("allIndustriesAB_" + i, item.doAutobuild);
                info.AddValue("allIndustriesABLvl_" + i, item.autoBuildLevel);
                info.AddValue("allIndustriesABMag_" + i, item.autoBuildMagnitude);
                info.AddValue("allIndustriesABVend_" + i, item.startingVendors);
            }

            //Debug.Log("Saving " + QuestManager.activeQuests.Count + " active quests");
            info.AddValue("activeQuestsSize", QuestManager.activeQuests.Count);
            for (int i = 0; i < QuestManager.activeQuests.Count; i++)
            {
                info.AddValue("activeQuests_" + i, QuestManager.activeQuests[i], typeof(Quest));
            }
            //Debug.Log("Saving " + QuestManager.availableQuests.Count + " available quests");
            info.AddValue("availableQuestsSize", QuestManager.availableQuests.Count);
            for (int i = 0; i < QuestManager.availableQuests.Count; i++)
            {
                info.AddValue("availableQuests_" + i, QuestManager.availableQuests[i], typeof(Quest));
            }
            info.AddValue("availableRelicsSize", QuestManager.availableRelics.Count);
            for (int i = 0; i < QuestManager.availableRelics.Count; i++)
            {
                info.AddValue("availableRelics_" + i, QuestManager.availableRelics[i], typeof(ItemStack));
            }
            info.AddValue("questTypeCompletion", questTypeCompletion, typeof(Dictionary <string, long>));
            info.AddValue("newQuestTimer", QuestManager.getNewQuestTimer());
            info.AddValue("questEquipTimer", QuestManager.getEquipTimer());
            GuildManager.writeSaveData(ref info, ref context);
            StatisticsTracker.serializeAllStats(ref info, ref context);
            info.AddValue("currentGuildmaster", currentGuildmaster, typeof(Master));
            DeepGoalsTypes.serialize(ref info, ref context);
            info.AddValue("ResearchManager.lastViewDate", ResearchManager.lastViewDate.ToLongTimeString());
            TutorialManager.serialize(ref info, ref context);
        }