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]); }
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); } }
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(); }
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); }
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); } } }