void InstantiateSubactionVarDataCard(SubactionVarData varData, SubactionData subaction) { GameObject go = NGUITools.AddChild(gameObject, varDataCardPrefab); SubactionVarDataPanel panel = go.GetComponent <SubactionVarDataPanel>(); panel.varData = varData; panel.BroadcastMessage("OnSubactionChanged", subaction, SendMessageOptions.DontRequireReceiver); children.Add(go); }
public void changedValue(string newVal) { //Because this window will only ever be visible when a create hitbox subaction is selected, we just need to get the current subaction. SubactionData createHitboxSubaction = editor.currentSubaction; SubactionVarData varData = createHitboxSubaction.arguments[varDataName]; //Convert this to a LegacyAction ChangeSubactionVarDataInput legacyAction = ScriptableObject.CreateInstance <ChangeSubactionVarDataInput>(); legacyAction.init(varData, newVal); LegacyEditorData.instance.DoAction(legacyAction); input.value = varData.data; }
void OnSubactionChanged(SubactionData subaction) { //Since this is fired even when the panel is deactivated, we need to check if it's a createHitboxAction if (editor?.currentSubaction?.SubactionName == "CreateHitbox") { SubactionData createHitboxSubaction = editor.currentSubaction; SubactionVarData varData = createHitboxSubaction.arguments[varDataName]; //We need to change the text without firing another update, so unready then re-ready after setting ready = false; input.value = varData.data; ready = true; } }
public override void Execute(BattleObject actor, GameAction action) { base.Execute(actor, action); SubactionVarData variable = arg_dict["variable"]; SubactionVarData data = arg_dict["value"]; if (variable.source == SubactionSource.OWNER) { //Only set the variable if there isn't already one present if (!actor.HasVar(variable.data)) { variable.SetVariableInTarget(actor, action, data.GetData(actor, action)); } } else if (variable.source == SubactionSource.ACTION) { //Only set the variable if there isn't already one present if (!action.HasVar(variable.data)) { variable.SetVariableInTarget(actor, action, data.GetData(actor, action)); } } }
public void init(SubactionVarData varData, SubactionSource source) { varDataToEdit = varData; sourceToSet = source; }
/// <summary> /// Given a line containing the definition of a SubactionData, return that SubactionData as an object. /// This uses reflection to get the Subactions, so the spelling of the SubName is key. /// </summary> /// <param name="line">The line being parsed</param> /// <returns>A proper SubactionData object, ready for injecting into a Dynamic Action</returns> private static SubactionData processSubactionLine(string line, int lineNumber) { string[] startParenSplit = line.Split('('); //This string should contain EXACTLY one parenthesis pair. Any more or less and you f****d up your script, dawg if (startParenSplit.Length != 2 || !line.EndsWith(")")) { //Debug.Log(startParenSplit.Length); //Debug.Log(line.EndsWith(")")); throwException("Incorrect parenthesis in subDataLine: " + line, lineNumber); return(null); } string subDataName = startParenSplit[0]; string argList = startParenSplit[1].Substring(0, startParenSplit[1].Length - 1); //Debug.Log(string.Format("PARSING SUBACTION {0}\n\tArguments: {1}",subDataName,argList)); SubactionDataDefault subDataDef = Resources.Load <SubactionDataDefault>("SubactionData/" + subDataName); if (subDataDef != null) { SubactionData subData = subDataDef.CreateSubactionData(); string[] splitArgs = new string[0]; if (argList.Length > 0) { splitArgs = argList.Split(','); } if (subDataDef.scriptArgNames.Count != splitArgs.Length) { throwException(string.Format("Subaction {0} has {1} arguments, expecting {2}", subDataName, splitArgs.Length, subDataDef.scriptArgNames.Count), lineNumber); return(null); } for (int i = 0; i < splitArgs.Length; i++) { string argumentName = subDataDef.scriptArgNames[i]; SubactionSource source = SubactionSource.CONSTANT; if (splitArgs[i].StartsWith("owner.")) { source = SubactionSource.OWNER; splitArgs[i] = splitArgs[i].Substring("owner.".Length); } else if (splitArgs[i].StartsWith("action.")) { source = SubactionSource.ACTION; splitArgs[i] = splitArgs[i].Substring("action.".Length); } SubactionVarType varType = subDataDef.arguments[argumentName].type; SubactionVarData argVarData = new SubactionVarData(argumentName, source, varType, splitArgs[i]); subData.arguments[argumentName] = argVarData; } return(subData); } else { throwException("No Subaction found with name " + subDataName, lineNumber); } return(null); }
public override void Execute(BattleObject obj, GameAction action) { SubactionVarData var1 = arg_dict["var1"]; SubactionVarData var2 = arg_dict["var2"]; string cond = (string)GetArgument("cond", obj, action, "=="); bool value = false; //If the cond isn't set right, this subaction will always return false if (cond == "==") { value = (var1.GetData(obj, action) == var2.GetData(obj, action)); } if (cond == "!=") { value = (var1.GetData(obj, action) != var2.GetData(obj, action)); } if (var1.IsNumeric() && var2.IsNumeric()) //If they're both numeric, we can compare them { float var1data = (float)var1.GetData(obj, action); float var2data = (float)var2.GetData(obj, action); if (cond == "<") { value = (var1data < var2data); } if (cond == ">") { value = (var1data > var2data); } if (cond == "<=") { value = (var1data <= var2data); } if (cond == ">=") { value = (var1data >= var2data); } } if (var1.type == SubactionVarType.BOOL && var2.type == SubactionVarType.BOOL) { bool var1data = (bool)var1.GetData(obj, action); bool var2data = (bool)var2.GetData(obj, action); if (cond == "&&") { value = var1data && var2data; } if (cond == "||") { value = var1data || var2data; } if (cond == "^") { value = var1data ^ var2data; } if (cond == "!&") { value = !(var1data && var2data); } if (cond == "!|") { value = !(var1data || var2data); } if (cond == "!^") { value = !(var1data ^ var2data); } } action.cond_list.Add(value); action.cond_depth++; }
public void init(SubactionVarData varData, string data) { varDataToEdit = varData; dataToSet = data; }