Example #1
0
    private static void PlagueOutbreak(SituationContainer sc = null)
    {
        var plagueFaction = PickFaction();

        var infected = Random.Range(1, (int)(plagueFaction.Population * .05)) * -1;

        plagueFaction.ChangePopulation(infected);

        var nextSituations = new List <string>
        {
            "plague continues",
            "plague ends naturally",
            "plague cured"
        };

        var id = Guid.NewGuid();

        while (HistoryGenerator.SituationIdExists(id))
        {
            id = Guid.NewGuid();
        }

        var situationContainer = new SituationContainer
        {
            SituationId    = id,
            NextSituations = nextSituations,
            Factions       = new List <Faction> {
                plagueFaction
            },
            TurnsTilNextSituation = HistoryGenerator.TurnsPerTime["week"]
        };

        HistoryGenerator.AddToActiveSituations(situationContainer);
    }
Example #2
0
    private static void FactionLeaderDisappears(SituationContainer sc = null)
    {
        var faction = PickFaction();

        faction.CreateLeader();

        //TODO: Write fluff
    }
Example #3
0
 public Situation(SituationContainer sc)
 {
     _situationContainer = new SituationContainer
     {
         SituationId           = sc.SituationId,
         NextSituations        = sc.NextSituations,
         Factions              = sc.Factions,
         NamedCharacters       = sc.NamedCharacters,
         TurnsTilNextSituation = sc.TurnsTilNextSituation
     };
 }
Example #4
0
    private static void PlagueCured(SituationContainer sc)
    {
        var plagueFaction = sc.Factions.SingleOrDefault();

        if (plagueFaction == null)
        {
            return;
        }

        //TODO: Write fluff

        HistoryGenerator.RemoveFromActiveSituations(sc);
    }
Example #5
0
    public void RunSituation(string situation, SituationContainer sc = null)
    {
        if (!_allSituations.ContainsKey(situation))
        {
            return;
        }

        try
        {
            _allSituations[situation](sc);
        }
        catch (KeyNotFoundException e)
        {
            Debug.Log(
                $"Error running situation: {situation}\n {e.Message}");
            throw;
        }
    }
Example #6
0
    private static void FactionLeaderAssassination(SituationContainer sc)
    {
        var faction = PickFaction();

        sc = new SituationContainer
        {
            Factions = new List <Faction> {
                faction
            },
            NamedCharacters = new List <Entity> {
                faction.Leader
            }
        };

        faction.CreateLeader();

        sc.NamedCharacters.Add(faction.Leader);

        StoryGenerator.Instance.Write("faction leader assassination", sc);
    }
Example #7
0
    private static void FactionLeaderAssassination(SituationContainer details)
    {
        const string file             = "faction_leader_assassination.json";
        const string oldFactionLeader = "oldfactionleader";
        const string newFactionLeader = "newfactionleader";

        WorldData.Instance.FactionLeaders.Remove(details.NamedCharacters[0]);

        WorldData.Instance.FactionLeaders.Add(details.NamedCharacters[1]);

        var story = GenerateText(file);

        story = story.Replace(oldFactionLeader, details.NamedCharacters[0].Fluff.Name);

        story = story.Replace(newFactionLeader, details.NamedCharacters[1].Fluff.Name);

        details.NamedCharacters[1].Fluff.AddToBackground(story);

        //DisplayText(story);
    }
Example #8
0
    private static void PlagueContinues(SituationContainer sc)
    {
        var plagueFaction = sc.Factions.SingleOrDefault();

        if (plagueFaction == null)
        {
            return;
        }

        var infected = Random.Range(1, (int)(plagueFaction.Population * .1)) * -1;

        plagueFaction.ChangePopulation(infected);

        const int chanceOfLeaderDeath = 5;
        var       roll = Random.Range(0, 100);

        if (roll < chanceOfLeaderDeath)
        {
            FactionLeaderDiesFromPlague(plagueFaction);
        }

        sc.TurnsTilNextSituation = HistoryGenerator.TurnsPerTime["week"];
    }
Example #9
0
 public GameController(SituationContainer situations, ItemContainer items)
 {
     this.situations  = situations;
     this.items       = items;
     currentSituation = situations.GetSituation(MAIN_SITUATION_NAME);
 }
Example #10
0
 public void UnloadData()
 {
     TagsetSet = false;
     TaggedIds.Clear();
     SituationContainer.Clear();
 }
Example #11
0
 public static void RemoveFromActiveSituations(SituationContainer sc)
 {
     ActiveSituations.Remove(sc.SituationId);
 }
Example #12
0
 public static void AddToActiveSituations(SituationContainer sc)
 {
     ActiveSituations.Add(sc.SituationId, new Situation(sc));
 }
Example #13
0
 public void Write(string storyTitle, SituationContainer details)
 {
     _stories[storyTitle].Invoke(details);
 }