Example #1
0
        public void RegisterQuest(QuestInstance quest, FactionInstance faction)
        {
            m_FactionTable[quest]  = faction;
            m_QuestStatuses[quest] = new QuestStatus(quest);

            m_QuestStatuses[quest].OnQuestExpired += OnQuestExpired;
            m_QuestStatuses[quest].OnStatusUpdate += QuestStatusUpdateWrapper;

            OnQuestsUpdate(quest, QuestUpdateAction.ADDED);
            OnQuestStatusUpdate(m_QuestStatuses[quest].AssignedHeroes, m_QuestStatuses[quest]);
        }
Example #2
0
        public void SetHeroAllegiance(HeroInstance hero, FactionInstance faction)
        {
            FactionInstance previousFaction = m_HeroAllegianceDict.ContainsKey(hero) ? m_HeroAllegianceDict[hero] : null;

            m_HeroAllegianceDict[hero] = faction;

            RefreshCache();

            OnHeroRemovedFromFaction(previousFaction, hero);
            OnHeroAddedToFaction(faction, hero);
            OnAllegiancesUpdate();
        }
        private void GenerateFaction()
        {
            FactionInstance faction = FactionGenerator.GenerateFaction();

            for (int h = 0; h < Random.Range(2, 6); h++)
            {
                HeroInstance hero = HeroGenerator.GenerateHero(Random.Range(1, 16));
                hero.Experience = Random.Range(0, 1000);

                ServiceLocator.AllegianceService.SetHeroAllegiance(hero, faction);
            }
        }
Example #4
0
        private void OnQuestEventTimerComplete()
        {
            m_QuestEventTimeTracker.OnTimerCompleted -= OnQuestEventTimerComplete;

            QuestEventData eventData  = m_QuestEventDataList[m_CurrentQuestEventData];
            bool           spawnQuest = UnityEngine.Random.Range(0, 101) < eventData.chance;

            if (spawnQuest)
            {
                for (int i = 0; i < eventData.questCount; i++)
                {
                    QuestInstance   quest   = QuestGenerator.GenerateQuest(1, m_QuestMakeupRandom.GetRandomValue());
                    FactionInstance faction = ServiceLocator.AllegianceService.Factions.GetRandom();
                    ServiceLocator.QuestService.RegisterQuest(quest, faction);
                }
                m_CurrentQuestEventData = -1;
            }

            StartNextQuestEvent();
        }
Example #5
0
    public void Init(FactionInstance factionInstance, World world, Level level)
    {
        this.factionInstance = factionInstance;

        buildButtonText.text = factionInstance.faction.legend;
        buildButton.onClick.AddListener(() =>
        {
            FindObjectOfType <SelectionDrawer>().CurrentFaction = factionInstance.faction;
            Cursor.SetCursor(factionInstance.faction.cursor_texture, cursorHitspot, CursorMode.Auto);
        });
        factionInstance.faction.likesBeingNextTo
        .Where(level.factions.Contains)
        .ForAll(AddLike);
        factionInstance.faction.dislikesBeingNextTo
        .Union(factionInstance.faction.dislikesHavingAccessTo)
        .Where(level.factions.Contains)
        .ForAll(AddDislike);
        factionInstance.faction.likesHavingAccessTo
        .Union(factionInstance.faction.likesHavingAccessTo)
        .Where(level.factions.Contains)
        .ForAll(AddValuable);
    }
Example #6
0
        public static void InitializeServices(GameSetupData data)
        {
            //Factions and heroes
            for (int i = 0; i < data.factionCount; i++)
            {
                FactionInstance faction = FactionGenerator.GenerateFaction();
                foreach (HeroType heroType in Enum.GetValues(typeof(HeroType)))
                {
                    HeroInstance hero = HeroGenerator.GenerateHero(1, heroType);
                    ServiceLocator.AllegianceService.SetHeroAllegiance(hero, faction);
                }

                /*for (int h = 0; h < Random.Range(data.heroesPerFactionMin, data.heroesPerFactionMax + 1); h++) {
                 *      HeroInstance hero = HeroGenerator.GenerateHero(1);
                 *      ServiceLocator.AllegianceService.SetHeroAllegiance(hero, faction);
                 * }*/

                for (int q = 0; q < data.startQuests; q++)
                {
                    QuestInstance quest = QuestGenerator.GenerateQuest(1, QuestMakeupType.SOLO);
                    ServiceLocator.QuestService.RegisterQuest(quest, faction);
                }
            }
        }