You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
2.4 KiB
124 lines
2.4 KiB
using UnityEngine; |
|
using System.Collections; |
|
|
|
namespace Fungus.Script |
|
{ |
|
|
|
public class Set : FungusCommand |
|
{ |
|
public enum SetOperator |
|
{ |
|
Assign, // = |
|
Negate, // ! |
|
Add, // + |
|
Subtract, // - |
|
Multiply, // * |
|
Divide // / |
|
} |
|
|
|
public string variableKey; |
|
|
|
public SetOperator setOperator; |
|
|
|
public BooleanData booleanData; |
|
|
|
public IntegerData integerData; |
|
|
|
public FloatData floatData; |
|
|
|
public StringData stringData; |
|
|
|
public override void OnEnter() |
|
{ |
|
if (variableKey.Length == 0) |
|
{ |
|
Continue(); |
|
return; |
|
} |
|
|
|
Variable v = parentFungusScript.GetVariable(variableKey); |
|
if (v == null) |
|
{ |
|
Debug.LogError("Variable " + variableKey + " not defined."); |
|
} |
|
else |
|
{ |
|
switch (v.type) |
|
{ |
|
case VariableType.Boolean: |
|
switch (setOperator) |
|
{ |
|
default: |
|
case SetOperator.Assign: |
|
v.booleanValue = booleanData.value; |
|
break; |
|
case SetOperator.Negate: |
|
v.booleanValue = !booleanData.value; |
|
break; |
|
} |
|
break; |
|
case VariableType.Integer: |
|
switch (setOperator) |
|
{ |
|
default: |
|
case SetOperator.Assign: |
|
v.integerValue = integerData.value; |
|
break; |
|
case SetOperator.Negate: |
|
v.integerValue = -integerData.value; |
|
break; |
|
case SetOperator.Add: |
|
v.integerValue += integerData.value; |
|
break; |
|
case SetOperator.Subtract: |
|
v.integerValue -= integerData.value; |
|
break; |
|
case SetOperator.Multiply: |
|
v.integerValue *= integerData.value; |
|
break; |
|
case SetOperator.Divide: |
|
v.integerValue /= integerData.value; |
|
break; |
|
} |
|
break; |
|
case VariableType.Float: |
|
switch (setOperator) |
|
{ |
|
default: |
|
case SetOperator.Assign: |
|
v.floatValue = floatData.value; |
|
break; |
|
case SetOperator.Negate: |
|
v.floatValue = -floatData.value; |
|
break; |
|
case SetOperator.Add: |
|
v.floatValue += floatData.value; |
|
break; |
|
case SetOperator.Subtract: |
|
v.floatValue -= floatData.value; |
|
break; |
|
case SetOperator.Multiply: |
|
v.floatValue *= floatData.value; |
|
break; |
|
case SetOperator.Divide: |
|
v.floatValue /= floatData.value; |
|
break; |
|
} |
|
break; |
|
case VariableType.String: |
|
switch (setOperator) |
|
{ |
|
default: |
|
case SetOperator.Assign: |
|
v.stringValue = stringData.value; |
|
break; |
|
} |
|
break; |
|
} |
|
} |
|
|
|
Continue(); |
|
} |
|
} |
|
|
|
}
|
|
|