private void Complication(ProppStoryData story)
 {
     story.functions.Add(new ProppFunctionData(8, "villainy"));
     story.functions.Add(new ProppFunctionData(9));
     story.functions.Add(new ProppFunctionData(10));
     AddRandom(story, 11);
 }
    public ProppStory FillContext(ProppStoryData storyData)
    {
        int key = 0;

        foreach (var f in storyData.functions)
        {
            key |= (1 << f.functionNumber);
        }

        RenameBackground(storyData);

        // Interdiction
        ReplaceActionData(ref storyData.interdiction, GetRandomPairFunction(_interdictionPairs).functionData[0].actions[0]);

        // Villainy
        var randomVillainyPair = GetRandomPairFunction(_villainyPairs);

        ReplaceActionData(ref storyData.villainy.villainyActionData, randomVillainyPair.functionData[0].actions[0]);
        ReplaceActionData(ref storyData.villainy.liquidationActionData, randomVillainyPair.functionData[1].actions[0]);

        ModifyWithPairFunction(storyData, GetRandomPairFunction(_complicationPairs));
        ModifyWithPairFunction(storyData, GetRandomPairFunction(_donorPairs));
        ModifyWithPairFunction(storyData, GetRandomPairFunction(_agentPairs));
        ModifyWithPairFunction(storyData, GetRandomPairFunction(_strugglePairs));
        ModifyWithPairFunction(storyData, GetRandomPairFunction(_pursuePairs));
        ModifyWithPairFunction(storyData, GetRandomPairFunction(_endPairs));
        return(new ProppStory(storyData));
    }
 private void AddIf(ProppStoryData story, int a, bool flag)
 {
     if (flag)
     {
         story.functions.Add(new ProppFunctionData(a));
     }
 }
    private void Donor(ProppStoryData story)
    {
        int rand = Random.Range(0, 3);

        switch (rand)
        {
        case 0:
            story.functions.Add(new ProppFunctionData(12));
            story.functions.Add(new ProppFunctionData(13));
            story.functions.Add(new ProppFunctionData(14));
            break;

        case 1:
            story.functions.Add(new ProppFunctionData(12));
            story.functions.Add(new ProppFunctionData(13));
            story.functions.Add(new ProppFunctionData(14));
            story.functions.Add(new ProppFunctionData(15));
            break;

        case 2:
            story.functions.Add(new ProppFunctionData(12));
            story.functions.Add(new ProppFunctionData(13));
            story.functions.Add(new ProppFunctionData(15));
            story.functions.Add(new ProppFunctionData(14));
            break;
        }
    }
Beispiel #5
0
    protected void RenameBackground(ProppStoryData storyData)
    {
        var bg = GetRandomBackgroundData();

        storyData.characters = bg.characterData;
        storyData.locations  = bg.locationData;
    }
    private ProppStory ReuseReviseStory(ProppStoryData storyData)
    {
        ProppStoryData cloneData = new ProppStoryData(storyData);

        // Background
        RenameBackground(cloneData);

        // Interdiction
        ReplaceActionData(ref cloneData.interdiction, GetRandomPairFunction(_interdictionPairs).functionData[0].actions[0]);

        // Villainy
        var randomVillainyPair = GetRandomPairFunction(_villainyPairs);

        ReplaceActionData(ref cloneData.villainy.villainyActionData, randomVillainyPair.functionData[0].actions[0]);
        ReplaceActionData(ref cloneData.villainy.liquidationActionData, randomVillainyPair.functionData[1].actions[0]);

        // Others
        ModifyWithPairFunction(cloneData, GetRandomPairFunction(_donorPairs));
        ModifyWithPairFunction(cloneData, GetRandomPairFunction(_agentPairs));
        ModifyWithPairFunction(cloneData, GetRandomPairFunction(_strugglePairs));
        ModifyWithPairFunction(cloneData, GetRandomPairFunction(_pursuePairs));
        ModifyWithPairFunction(cloneData, GetRandomPairFunction(_endPairs));

        return(new ProppStory(cloneData));
    }
    public override ProppStory GenerateStory(out ProppStoryData storyData)
    {
        storyData = RetrieveStoryData();
        ProppStory story = ReuseReviseStory(storyData);

        return(story);
    }
Beispiel #8
0
 public ProppStoryDataContainer(ProppStoryData data)
 {
     interdiction = data.interdiction;
     villainy     = data.villainy;
     functions    = data.functions;
     characters   = data.characters;
     locations    = data.locations;
 }
    private void AddRandom(ProppStoryData story, int a)
    {
        int rand = Random.Range(0, 2);

        if (rand == 1)
        {
            story.functions.Add(new ProppFunctionData(a));
        }
    }
    private void Premary(ProppStoryData story)
    {
        int rand = Random.Range(0, 2);

        if (rand == 1)
        {
            story.functions.Add(new ProppFunctionData(2, "talk", "family", "princess", "interdiction"));
            story.functions.Add(new ProppFunctionData(3, "violate", "family"));
        }
    }
Beispiel #11
0
 protected void ModifyWithPairFunction(ProppStoryData storyData, ProppPairFunctionData pair)
 {
     foreach (var f in pair.functionData)
     {
         var targetFunc = storyData.FindFunction(f.functionNumber);
         if (targetFunc != null)
         {
             targetFunc.ReplaceWith(f);
         }
     }
 }
 public ProppStory(ProppStoryData data)
 {
     ProppActionFactory.Instance.SetStory(this);
     characters = data.characters;
     locations  = data.locations;
     characters.SetDict();
     locations.SetDict();
     interdiction = ProppActionFactory.Instance.CreateAction(data.interdiction);
     villainy     = new ProppVillainy(data.villainy);
     foreach (var f in data.functions)
     {
         AddFunction(new ProppFunction(f));
     }
 }
    private void Ending(ProppStoryData story)
    {
        int rand = Random.Range(0, 3);

        switch (rand)
        {
        case 0:
            story.functions.Add(new ProppFunctionData(31));
            break;

        case 1:
            story.functions.Add(new ProppFunctionData(30));
            story.functions.Add(new ProppFunctionData(31));
            break;
        }
    }
 public void GeneratePlot(ProppStoryData story)
 {
     Premary(story);
     Complication(story);
     Donor(story);
     Course(story);
     if (_canEnd)
     {
         int rand = Random.Range(0, 2);
         if (rand == 1)
         {
             return;
         }
     }
     Ending(story);
 }
    private void Course(ProppStoryData story)
    {
        int rand = Random.Range(0, 5);

        switch (rand)
        {
        case 0:
            Struggle(story);
            story.functions.Add(new ProppFunctionData(19, "liquidate"));
            break;

        case 1:
            story.functions.Add(new ProppFunctionData(19, "liquidate"));
            AddIf(story, 20, _leaveHome);
            Pursuit(story);
            break;

        case 2:
            Struggle(story);
            story.functions.Add(new ProppFunctionData(19, "liquidate"));
            AddIf(story, 20, _leaveHome);
            break;

        case 3:
            Struggle(story);
            story.functions.Add(new ProppFunctionData(19, "liquidate"));
            AddIf(story, 20, _leaveHome);
            Pursuit(story);
            break;

        case 4:
            story.functions.Add(new ProppFunctionData(19, "liquidate"));
            AddIf(story, 20, _leaveHome);
            break;
        }
    }
Beispiel #16
0
 public abstract ProppStory GenerateStory(out ProppStoryData storyData);
 private void Pursuit(ProppStoryData story)
 {
     story.functions.Add(new ProppFunctionData(21));
     story.functions.Add(new ProppFunctionData(22));
 }
 private void Struggle(ProppStoryData story)
 {
     story.functions.Add(new ProppFunctionData(16));
     story.functions.Add(new ProppFunctionData(18));
 }
Beispiel #19
0
 public static void AddStory(ProppStoryData story)
 {
     storyDatabase.storyData.Add(story);
     SaveData();
 }
Beispiel #20
0
 public void SetStoryData(ProppStoryData data)
 {
     _storyData    = data;
     idText.text   = $"왕국 {data.id}년";
     nameText.text = data.name;
 }
 public override ProppStory GenerateStory(out ProppStoryData storyData)
 {
     storyData = new ProppStoryData();
     GeneratePlot(storyData);
     return(FillContext(storyData));
 }