Beispiel #1
0
    public void LoadRulesIntoRulePanel(Weapon weapon)
    {
        Debug.Log("Loading Weapon Rules into Rules Panel.");
        setter.WeaponRules = new List <string>();
        foreach (string weaponRule in weapon.Rules)
        {
            RuleV20200106 ruleToLoad = new RuleV20200106 {
                Name = "Missing Rule"
            };
            foreach (RuleV20200106 rule in instance.Rules)
            {
                if (rule.Name == weaponRule)
                {
                    ruleToLoad = rule;
                    setter.WeaponRules.Add(rule.Name);
                    Debug.Log("Loading " + rule.Name + " from Weapon.");
                }
            }

            GameObject ruleButton = Instantiate(buttonWeaponRule);
            ruleButton.transform.SetParent(panelRulesAdded.transform);
            ruleButton.GetComponent <ButtonWeaponRule>().Rule      = ruleToLoad;
            ruleButton.GetComponent <ButtonWeaponRule>().RuleAdded = true;
            ruleButton.GetComponent <RectTransform>().localScale   = Vector3.one;
            ruleButton.GetComponentInChildren <Text>().text        = ruleToLoad.Name;
            ManageRulePanel();
        }
    }
Beispiel #2
0
    public void Save(bool overwrite)
    {
        Debug.Log("Attempting to save Rule.");
        rule = new RuleV20200106();
        bool datacheckPassed = true;

        datacheckPassed = Datacheck();

        if (datacheckPassed)
        {
            //instance.ActiveRule = rule;
            Debug.Log("Rule is valid.");
            Debug.Log("Checking if a rule with this name exists.");
            bool nameCheck = true;
            for (int i = 0; i < instance.Rules.Count; i++)
            {
                if (rule.Name == instance.Rules[i].Name)
                {
                    nameCheck         = false;
                    loader.RuleToLoad = i;
                }
            }

            if (nameCheck)
            {
                Debug.Log("Saving rule.");
                instance.Rules.Add(rule);
                instance.SaveRules();
                StartCoroutine(messenger.SaveMessage());
            }
            else if (overwrite)
            {
                Debug.Log("Saving rule.");
                instance.Rules[loader.RuleToLoad] = rule;
                instance.SaveRules();
                ui.panelNameCheck.SetActive(false);
                StartCoroutine(messenger.SaveMessage());
            }
            else
            {
                Debug.Log("A rule with that name exists. Opening Name Check Panel.");
                ui.panelNameCheck.SetActive(true);
            }

            ui.buttonLoad.interactable = true;
        }
    }
 // Start is called before the first frame update
 void Start()
 {
     CurrentRule = new RuleV20200106();
     InputName   = "";
 }
Beispiel #4
0
    public void ResetLoad(RuleV20200106 rule)
    {
        setter.InputName  = rule.Name;
        ui.inputName.text = setter.InputName;
        Debug.Log("Rule name is " + setter.InputName);

        Debug.Log("Resetting toggles.");
        ui.SwitchUseToggles(false);

        for (int i = 0; i < rule.UseTimes.Count; i++)
        {
            if (rule.UseTimes[i] == RuleV20200106.Uses.Deployment)
            {
                setter.UseDeployment = true;
                Debug.Log("Rule can be used during deployment.");
                ui.useToggles[0].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.StartOfGame)
            {
                setter.UseStartOfGame = true;
                Debug.Log("Rule can be used at the start of the game.");
                ui.useToggles[1].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.YourTurn)
            {
                setter.UseYourTurn = true;
                Debug.Log("Rule can be used during your turn.");
                ui.useToggles[2].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.OpponentsTurn)
            {
                setter.UseOpponentsTurn = true;
                Debug.Log("Rule can be used during your opponents turn.");
                ui.useToggles[3].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.StartOfTurn)
            {
                setter.UseStartOfTurn = true;
                Debug.Log("Rule can be used at the start of the turn.");
                ui.useToggles[4].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.Move)
            {
                setter.UseMove = true;
                Debug.Log("Rule can be used during the movement phase.");
                ui.useToggles[5].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.Psychic)
            {
                setter.UsePsychic = true;
                Debug.Log("Rule can be used during the psychic phase.");
                ui.useToggles[6].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.Shooting)
            {
                setter.UseShooting = true;
                Debug.Log("Rule can be used during the shooting phase.");
                ui.useToggles[7].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.Charge)
            {
                setter.UseCharge = true;
                Debug.Log("Rule can be used during the charge phase.");
                ui.useToggles[8].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.Fight)
            {
                setter.UseFight = true;
                Debug.Log("Rule can be used during the fight phase.");
                ui.useToggles[9].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.Morale)
            {
                setter.UseMorale = true;
                Debug.Log("Rule can be used during the morale phase.");
                ui.useToggles[10].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.EndOfTurn)
            {
                setter.UseEndOfTurn = true;
                Debug.Log("Rule can be used at the end of the turn.");
                ui.useToggles[11].isOn = true;
            }
            if (rule.UseTimes[i] == RuleV20200106.Uses.EndOfGame)
            {
                setter.UseEndOfGame = true;
                Debug.Log("Rule can be used at the end of the game.");
                ui.useToggles[12].isOn = true;
            }
        }

        ui.ToggleActivationPanel();
        setter.ActivationType = (int)rule.ActivationType;
        ui.panelActivation.GetComponentInChildren <Dropdown>().value = setter.ActivationType;
        Debug.Log("Rule has an activation type of " + (RuleV20200106.ActivationTypes)setter.ActivationType);

        if (setter.ActivationType == 3)
        {
            if (rule.MoveTrigger != 0)
            {
                setter.MoveTriggers   = (int)rule.MoveTrigger;
                ui.dropdownMove.value = setter.MoveTriggers;
                Debug.Log("Rule has a movement trigger of ." + (RuleV20200106.MoveTriggers)setter.MoveTriggers);
            }
            if (rule.PsychicTrigger != 0)
            {
                setter.PsychicTriggers   = (int)rule.PsychicTrigger;
                ui.dropdownPsychic.value = setter.PsychicTriggers;
                Debug.Log("Rule has a psychic trigger of ." + (RuleV20200106.PsychicTriggers)setter.PsychicTriggers);
            }
            if (rule.ShootingTrigger != 0)
            {
                setter.ShootingTriggers   = (int)rule.ShootingTrigger;
                ui.dropdownShooting.value = setter.ShootingTriggers;
                Debug.Log("Rule has a shooting trigger of ." + (RuleV20200106.ShootingTriggers)setter.ShootingTriggers);
            }
            if (rule.ChargeTrigger != 0)
            {
                setter.ChargeTriggers   = (int)rule.ChargeTrigger;
                ui.dropdownCharge.value = setter.ChargeTriggers;
                Debug.Log("Rule has a charge trigger of ." + (RuleV20200106.ChargeTriggers)setter.ChargeTriggers);
            }
            if (rule.FightTrigger != 0)
            {
                setter.FightTriggers            = (int)rule.FightTrigger;
                ui.dropdownFightsTriggers.value = setter.FightTriggers;
                Debug.Log("Rule has a fight trigger of ." + (RuleV20200106.FightTriggers)setter.FightTriggers);
            }
            if (rule.MoraleTrigger != 0)
            {
                setter.MoraleTriggers   = (int)rule.MoraleTrigger;
                ui.dropdownMorale.value = setter.MoraleTriggers;
                Debug.Log("Rule has a morale trigger of ." + (RuleV20200106.MoraleTriggers)setter.MoraleTriggers);
            }
            ui.ToggleSpecificTriggers();
            if (rule.AttackTrigger != 0)
            {
                setter.AttackTriggers           = (int)rule.AttackTrigger;
                ui.dropdownAttackTriggers.value = setter.AttackTriggers;
                Debug.Log("Rule has a movement attack of ." + (RuleV20200106.AttackTriggers)setter.AttackTriggers);
            }
            if (rule.WoundTrigger != 0)
            {
                setter.WoundTriggers           = (int)rule.WoundTrigger;
                ui.dropdownWoundTriggers.value = setter.WoundTriggers;
                Debug.Log("Rule has a wound trigger of ." + (RuleV20200106.WoundTriggers)setter.WoundTriggers);
            }
            if (rule.PowerTrigger != 0)
            {
                setter.PowerTriggers           = (int)rule.PowerTrigger;
                ui.dropdownPowerTriggers.value = setter.PowerTriggers;
                Debug.Log("Rule has a power trigger of ." + (RuleV20200106.PowerTriggers)setter.PowerTriggers);
            }
            if (rule.DenyTrigger != 0)
            {
                setter.DenyTriggers           = (int)rule.DenyTrigger;
                ui.dropdownDenyTriggers.value = setter.DenyTriggers;
                Debug.Log("Rule has a Deny the Witch trigger of ." + (RuleV20200106.DenyTriggers)setter.DenyTriggers);
            }
            if (rule.ChargeTrigger != 0)
            {
                setter.SpecificChargeTriggers   = (int)rule.SpecificChargeTrigger;
                ui.dropdownChargeTriggers.value = setter.SpecificChargeTriggers;
                Debug.Log("Rule has a specific charge trigger of ." + (RuleV20200106.SpecificChargeTriggers)setter.SpecificChargeTriggers);
            }
            if (rule.SpecificFightsTrigger != 0)
            {
                setter.SpecificFightsTriggers   = (int)rule.SpecificFightsTrigger;
                ui.dropdownFightsTriggers.value = setter.SpecificFightsTriggers;
                Debug.Log("Rule has a specific fight trigger of ." + (RuleV20200106.SpecificFightsTriggers)setter.SpecificFightsTriggers);
            }
        }

        ui.ToggleRuleTarget();
        setter.RuleTarget       = (int)rule.Target;
        ui.dropdownTarget.value = setter.RuleTarget;
        Debug.Log("Rule has a target of " + (RuleV20200106.Targets)setter.RuleTarget);
        if (setter.RuleTarget != 9 &&
            setter.RuleTarget != 10)
        {
            setter.Range       = rule.Range;
            ui.inputRange.text = setter.Range.ToString();
            Debug.Log("rule has a range of " + setter.Range);

            if (setter.RuleTarget == 11)
            {
                ui.ToggleKeyword();
                setter.InputKeyword            = rule.Keyword;
                ui.inputKeyword.text           = setter.InputKeyword;
                setter.KeywordTarget           = (int)rule.KeywordTarget;
                ui.dropdownKeywordTarget.value = setter.KeywordTarget;
                Debug.Log("Rule has the '" + setter.InputKeyword + "' keyword and targets " + (RuleV20200106.KeywordTargets)setter.KeywordTarget);
            }
        }

        ui.ToggleRuleType();
        setter.RuleType = (int)rule.RuleType;
        ui.panelRuleType.GetComponentInChildren <Dropdown>().value = setter.RuleType;
        Debug.Log("Rule type is " + (RuleV20200106.RuleTypes)setter.RuleType);
        ui.ToggleProperties();
        ui.ToggleRuleProperties(-1);
        switch (setter.RuleType)
        {
        case 1:
            setter.Range               = rule.Range;
            ui.inputRange.text         = setter.Range.ToString();
            setter.ReserveOutsideEnemy = rule.ReserveOutsideEnemy;
            ui.toggleOutsideEnemy.isOn = setter.ReserveOutsideEnemy;
            if (setter.ReserveOutsideEnemy)
            {
                Debug.Log("Reserves are setup away from the enemy.");
            }
            setter.ReserveFromObject = rule.ReserveFromObject;
            ui.toggleFromObject.isOn = setter.ReserveFromObject;
            if (setter.ReserveFromObject)
            {
                Debug.Log("Reserves are setup near an object.");
            }
            setter.ReserveRerollCharges = rule.RerollCharges;
            ui.toggleRerollCharges.isOn = setter.ReserveRerollCharges;
            if (setter.ReserveRerollCharges)
            {
                Debug.Log("Reserves may reroll charges.");
            }
            setter.ReserveDealsMortal   = rule.ReserveMortalWounds;
            ui.toggleReserveMortal.isOn = setter.ReserveDealsMortal;
            if (setter.ReserveDealsMortal)
            {
                Debug.Log("Reserves deal mortal wounds to nearby enemies.");
            }

            if (setter.ReserveDealsMortal)
            {
                ui.ToggleReserveRange();
                setter.ReserveDamageRange = rule.ReserveDamageRange;
                ui.inputReserveRange.text = setter.ReserveDamageRange.ToString();
                Debug.Log("Reserves deal damage within " + setter.ReserveDamageRange + " inches.");
                if (rule.Damage == 0)
                {
                    setter.Damage = (int)rule.DamageDice + 7;
                    Debug.Log("Rule deals " + (RuleV20200106.Dice)(setter.Damage - 7) + " damage.");
                }
                else
                {
                    Debug.Log("Rule deals " + setter.Damage + " damage.");
                }
                ui.dropdownDamage.value = setter.Damage;
                setter.Roll             = rule.Roll;
                ui.dropdownRoll.value   = setter.Roll;
                Debug.Log("Rule succeeds on a roll of " + setter.Roll);
            }
            break;

        case 2:
        case 3:
            setter.Roll           = rule.Roll;
            ui.dropdownRoll.value = setter.Roll;
            Debug.Log("Rule succeeds on a " + setter.Roll + "+");
            break;

        case 4:
            setter.StatProfile       = (int)rule.StatProfile;
            ui.dropdownProfile.value = setter.StatProfile;
            Debug.Log("Rule effects " + setter.StatProfile);
            setter.Modifier = (int)rule.Modify;
            ui.dropdownProfileModifier.value = setter.Modifier;
            Debug.Log("Profile modifier " + (RuleV20200106.Modifiers)setter.Modifier);
            if (rule.ProfileChange == 0)
            {
                setter.Change = (int)rule.ChangeDice + 7;
                Debug.Log("Modify by " + (RuleV20200106.Dice)(setter.Change - 7));
            }
            else
            {
                setter.Change = rule.ProfileChange;
                Debug.Log("Modify by " + setter.Change);
            }
            ui.dropdownProfileChange.value = setter.Change;
            break;

        case 5:
            setter.RollModified           = (int)rule.RollModified;
            ui.dropdownModifiedRoll.value = setter.RollModified;
            setter.ModifiedBy             = (int)rule.RollModifiedBy;
            ui.dropdownModifiedBy.value   = setter.ModifiedBy;
            setter.RollModifier           = rule.RollModifierAmount;
            ui.ToggleModifiers();
            ui.dropdownModifier.value = setter.RollModifier;
            setter.RerollType         = (int)rule.RerollType;
            ui.dropdownRerolls.value  = setter.RerollType;
            setter.RerollTypeOrLower  = rule.RerollTypeOrLower;
            ui.toggleOrLower.isOn     = setter.RerollTypeOrLower;
            setter.RerollTypeOrHigher = rule.RerollTypeOrHigher;
            ui.toggleOrHigher.isOn    = setter.RerollTypeOrHigher;
            ui.ToggleRerollGroup();

            //Debug
            if (setter.ModifiedBy == 0)
            {
                if (setter.RerollTypeOrLower)
                {
                    Debug.Log("Rule allows rerolls for " + (RuleV20200106.Rolls)setter.RollModified +
                              " on rolls of " + setter.RerollType + " or lower.");
                }
                else if (setter.RerollTypeOrHigher)
                {
                    Debug.Log("Rule allows rerolls for " + (RuleV20200106.Rolls)setter.RollModified +
                              " on rolls of " + setter.RerollType + " or higher.");
                }
                else
                {
                    Debug.Log("Rule allows rerolls for " + (RuleV20200106.Rolls)setter.RollModified +
                              " on rolls of " + setter.RerollType);
                }
            }
            else
            {
                Debug.Log("Rule modifies " + (RuleV20200106.Rolls)setter.RollModified +
                          " rolls with a " + setter.RollModifier +
                          " " + (RuleV20200106.RollModifiers)setter.ModifiedBy);
            }
            break;

        case 6:
            setter.PenaltyIgnored = (int)rule.IgnoreProfile;
            ui.panelIgnore.GetComponentInChildren <Dropdown>().value = setter.PenaltyIgnored;
            Debug.Log("Rule ignores penalty for " + (RuleV20200106.IgnoreProfiles)setter.PenaltyIgnored);
            break;

        case 9:
            setter.OnlyAdditionalAttack = rule.AdditionalAttackOnly;
            ui.toggleOnlyAttack.isOn    = setter.OnlyAdditionalAttack;
            if (setter.OnlyAdditionalAttack)
            {
                Debug.Log("Additional attacks only with this weapon.");
            }
            setter.CanExplode        = rule.AdditionalAttacksCanExplode;
            ui.toggleCanExplode.isOn = setter.CanExplode;
            if (setter.CanExplode)
            {
                Debug.Log("Additional attacks can explode.");
            }
            break;

        case 10:
            if (rule.Damage == 0)
            {
                setter.Damage = (int)rule.DamageDice + 7;
                Debug.Log("The rule deals " + (RuleV20200106.Dice)(setter.Damage - 7) + " damage.");
            }
            else
            {
                Debug.Log("The rule deals " + setter.Damage + " damage.");
            }
            ui.dropdownDamage.value = setter.Damage;
            setter.Roll             = rule.Roll;
            ui.dropdownRoll.value   = setter.Roll;
            Debug.Log("Rule deals damge on a roll of " + setter.Roll);
            setter.SlayTheModel = rule.SlayTheModel;
            ui.panelMortalWounds.GetComponentInChildren <Toggle>().isOn = setter.SlayTheModel;
            if (setter.SlayTheModel)
            {
                Debug.Log("Model dies when the rule is triggered.");
            }
            break;
        }
    }