/// <summary> /// Modifies a World Variable by name. You can set, add, multiply or subtract the value. /// </summary> /// <param name='modifier'>Modifier.</param> /// <param name='sourceTrans'>Source trans. Optional - this will output in the debug message if the World Variable is not found.</param> public static void ModifyPlayerStat(WorldVariableModifier modifier, Transform sourceTrans = null) { var statName = modifier._statName; if (!InGamePlayerStats.ContainsKey(statName)) { LevelSettings.LogIfNew(string.Format("Transform '{0}' tried to modify a World Variable called '{1}', which was not found in this scene.", sourceTrans == null ? LevelSettings.EmptyValue : sourceTrans.name, statName)); return; } var stat = InGamePlayerStats[statName]; switch (modifier._varTypeToUse) { case VariableType._integer: case VariableType._float: stat.ModifyVariable(modifier); break; default: LevelSettings.LogIfNew("Write code for varType: " + modifier._varTypeToUse.ToString()); break; } }
private void Set() { var trans = ((GameObject)gameObject.Value).transform; var modifier = new WorldVariableModifier(_name.Value, WorldVariableTracker.VariableType._float); modifier._modValueFloatAmt.curModMode = KillerVariable.ModMode.Set; modifier._modValueFloatAmt.Value = value.Value; WorldVariableTracker.ModifyPlayerStat(modifier, trans); }
public void ModifyVariable(WorldVariableModifier mod) { switch (mod._varTypeToUse) { case WorldVariableTracker.VariableType._integer: var modVal = mod._modValueIntAmt.Value; switch (mod._modValueIntAmt.curModMode) { case KillerVariable.ModMode.Add: AddToIntValue(modVal); break; case KillerVariable.ModMode.Set: SetIntValueIfAllowed(modVal); AddToIntValue(0); // need to trigger game over if G.O. value reached break; case KillerVariable.ModMode.Sub: AddToIntValue(-modVal); break; case KillerVariable.ModMode.Mult: MultiplyByIntValue(modVal); break; default: LevelSettings.LogIfNew("Add code for modMode: " + mod._modValueIntAmt.curModMode.ToString()); break; } break; case WorldVariableTracker.VariableType._float: var modFloatVal = mod._modValueFloatAmt.Value; switch (mod._modValueFloatAmt.curModMode) { case KillerVariable.ModMode.Add: AddToFloatValue(modFloatVal); break; case KillerVariable.ModMode.Set: SetFloatValueIfAllowed(modFloatVal); AddToFloatValue(0f); break; case KillerVariable.ModMode.Sub: AddToFloatValue(-modFloatVal); break; case KillerVariable.ModMode.Mult: MultiplyByFloatValue(modFloatVal); break; default: LevelSettings.LogIfNew("Add code for modMode: " + mod._modValueIntAmt.curModMode.ToString()); break; } break; default: LevelSettings.LogIfNew("Add code for varType: " + mod._varTypeToUse.ToString()); break; } }