public void ApplyControlTest(BoterkroonSkills skill)
 {
     worstCaseScenario.CreateControlResult(skill);
     bestCaseScenario.CreateControlResult(skill);
     worstCaseScenario.TurnsLeft -= BoterkroonValues.Values.CostControlTest;
     bestCaseScenario.TurnsLeft  -= BoterkroonValues.Values.CostControlTest;
 }
    public void ApplyTraining(BoterkroonSkills skill, TrainingType type)
    {
        switch (type)
        {
        case TrainingType.Slow:
            worstCaseScenario.GetTrainingResultsFor(skill).Add(new BoterkroonTrainingResult(BoterkroonValues.Values.NormalTrainingMinXPGain));
            bestCaseScenario.GetTrainingResultsFor(skill).Add(new BoterkroonTrainingResult(BoterkroonValues.Values.NormalTrainingMaxXPGain));
            worstCaseScenario.TurnsLeft -= BoterkroonValues.Values.CostNormalTraining;
            bestCaseScenario.TurnsLeft  -= BoterkroonValues.Values.CostNormalTraining;
            break;

        case TrainingType.Fast:
            float skillControl          = Mathf.Max(0, GetSkillControl(worstCaseScenario, skill) - BoterkroonValues.Values.StartpointFastTrainingLerp);
            float skillControlLerpPoint = skillControl / (1 - BoterkroonValues.Values.StartpointFastTrainingLerp);
            int   xpGain = Mathf.FloorToInt(Mathf.Lerp(BoterkroonValues.Values.FastTrainingMinXPGain, BoterkroonValues.Values.FastTrainingMaxXPGain, skillControlLerpPoint));
            worstCaseScenario.GetTrainingResultsFor(skill).Add(new BoterkroonTrainingResult(xpGain));
            worstCaseScenario.TurnsLeft -= BoterkroonValues.Values.CostFastTraining;

            skillControl          = Mathf.Max(0, GetSkillControl(bestCaseScenario, skill) - BoterkroonValues.Values.StartpointFastTrainingLerp);
            skillControlLerpPoint = skillControl / (1 - BoterkroonValues.Values.StartpointFastTrainingLerp);
            xpGain = Mathf.FloorToInt(Mathf.Lerp(BoterkroonValues.Values.FastTrainingMinXPGain, BoterkroonValues.Values.FastTrainingMaxXPGain, skillControlLerpPoint));
            bestCaseScenario.GetTrainingResultsFor(skill).Add(new BoterkroonTrainingResult(xpGain));
            bestCaseScenario.TurnsLeft -= BoterkroonValues.Values.CostFastTraining;
            break;
        }
    }
Exemple #3
0
    private bool GetSkillScore(int currentLevel, BoterkroonSkills skill, out float skillScore)
    {
        float maxScore = BoterkroonScoreRequirements.GetMaxScoreFor(currentLevel).Skill(skill);
        float minScore = BoterkroonScoreRequirements.GetMinScoreFor(currentLevel).Skill(skill);

        skillScore = Mathf.Min(maxScore, GetLastScoreFor(skill));
        return(minScore <= skillScore);
    }
Exemple #4
0
    public bool HasNewTrainingFor(BoterkroonSkills skill)
    {
        var results = GetTrainingResultsFor(skill);

        if (results.Count == 0)
        {
            return(false);
        }
        return(results[results.Count - 1].IsNew);
    }
    private float GetSkillControl(ActiveBoterkroonData data, BoterkroonSkills currentskill)
    {
        int currentXPLevel = 0;

        foreach (var trainingResult in data.GetTrainingResultsFor(currentskill))
        {
            currentXPLevel += trainingResult.GainedXP;
        }
        return(currentXPLevel / (float)BoterkroonValues.Values.MaxSkillXP);
    }
Exemple #6
0
    public void CreateControlResult(BoterkroonSkills skill)
    {
        int currentXPLevel = 0;

        foreach (var trainingResult in GetTrainingResultsFor(skill))
        {
            currentXPLevel      += trainingResult.GainedXP;
            trainingResult.IsNew = false;
        }

        BoterkroonControlResult result = new BoterkroonControlResult(currentXPLevel);

        GetControlResultsFor(skill).Add(result);
    }
Exemple #7
0
    private VisualSkillTest GetVisual(BoterkroonSkills result)
    {
        switch (result)
        {
        case BoterkroonSkills.Baking:
            return(visualBaking);

        case BoterkroonSkills.Sword:
            return(visualSword);

        case BoterkroonSkills.Research:
            return(visualNavigating);
        }
        throw new NotImplementedException();
    }
Exemple #8
0
    public List <BoterkroonControlResult> GetControlResultsFor(BoterkroonSkills skill)
    {
        switch (skill)
        {
        case BoterkroonSkills.Baking:
            return(ControlResultsBaking);

        case BoterkroonSkills.Sword:
            return(ControlResultsSword);

        case BoterkroonSkills.Research:
            return(ControlResultsRoyal);
        }
        throw new System.NotImplementedException();
    }
Exemple #9
0
    public bool IsSkillActive(BoterkroonSkills skill)
    {
        switch (skill)
        {
        case BoterkroonSkills.Baking:
            return(!IsBakingLocked);

        case BoterkroonSkills.Sword:
            return(!IsSwordLocked);

        case BoterkroonSkills.Research:
            return(!IsResearchLocked);
        }
        throw new System.NotImplementedException();
    }
Exemple #10
0
    private string GetTrainingText(BoterkroonSkills currentskill)
    {
        switch (currentskill)
        {
        case BoterkroonSkills.Baking:
            return("Bakken");

        case BoterkroonSkills.Sword:
            return("Zwaardvechten");

        case BoterkroonSkills.Research:
            return("Onderzoeken");
        }
        throw new NotImplementedException();
    }
Exemple #11
0
    //[SerializeField] private PlayerCharacterController playerCharacterController = null;
    //[SerializeField] private TMPro.TextMeshProUGUI textMeshTrainingName = null;
    //[SerializeField] private UnityEngine.UI.Image imageTraining = null;
    //[SerializeField] private TrainingGameResult trainingGameResult = null;
    //[SerializeField] private Transform gameControllerContainer = null;
    //[SerializeField] private string uiEventStringGameResult = "";

    //private TrainingGameController activeGameController = null;
    //private ActiveTraining activeTraining;
    //private int gainedXP = 0;

    public void SetResult(BoterkroonSkills result, TrainingType trainingType)
    {
        this.currentskill = result;
        this.currentType  = trainingType;
        //activeTraining = result as ActiveTraining;
        //textMeshTrainingName.text = activeTraining.Training.Name;
        //imageTraining.sprite = activeTraining.Training.Visual;
        //activeGameController = CreateActiveGameController(activeTraining);
        //activeGameController.Setup(activeTraining);
        //activeGameController.OnXPGain += OnXPGain;
        //activeGameController.OnGameFinished += OnGameFinished;
        //gainedXP = 0;
        //Debug.Log(activeTraining.Data.Name);
        //Debug.Log(activeTraining.Training.TargetSkill.Name);
    }
Exemple #12
0
    private int GetLastScoreFor(BoterkroonSkills skill)
    {
        if (HasNewTrainingFor(skill))
        {
            CreateControlResult(skill);
        }
        var controlResults = GetControlResultsFor(skill);

        if (controlResults.Count == 0)
        {
            return(0);
        }
        //foreach (var result in controlResults) {
        //    result.IsNew = false;
        //}
        return(controlResults[controlResults.Count - 1].TotalXP);
    }
Exemple #13
0
    private bool HasDoneControlWithoutTraining(BoterkroonSkills skill)
    {
        var results = SaveController.Instance.GameData.BoterKroon.GetControlResultsFor(skill);

        if (results.Count < 2)
        {
            if (results.Count > 0 && results[results.Count - 1].TotalXP == 0)
            {
                results[results.Count - 1].HasBeenCheckedForDoubleControl = true;
                return(true);
            }
            return(false);
        }
        if (results[results.Count - 1].HasBeenCheckedForDoubleControl == false)
        {
            results[results.Count - 1].HasBeenCheckedForDoubleControl = true;
            if (results[results.Count - 1].TotalXP == results[results.Count - 2].TotalXP)
            {
                return(true);
            }
        }
        return(false);
    }
Exemple #14
0
 public void SetResult(BoterkroonSkills currentSkill)
 {
     this.currentSkill  = currentSkill;
     this.currentVisual = GetVisual(currentSkill);
 }
 private void SetupOption(OptionPointFlipOver option, BoterkroonSkills skill)
 {
     option.gameObject.SetActive(true);
     option.OnObjectClicked += () => PickResult(skill);
     option.ToStartPosition();
 }
 private void PickResult(BoterkroonSkills result)
 {
     resultController.SetResult(result);
     GameEventMessage.SendEvent(uiEventString);
 }
Exemple #17
0
 private void PickResult(BoterkroonSkills skill, TrainingType trainingType)
 {
     resultController.SetResult(skill, trainingType);
     GameEventMessage.SendEvent(uiEventString);
 }