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