public static string VariableValueToString(IntPtr value, JassType type) { switch (type) { case JassType.Real: return(BitConverter.ToSingle(BitConverter.GetBytes((int)value), 0).ToString()); case JassType.String: return($"\"{GameFunctions.JassStringHandleToString(GameFunctions.JassStringIndexToJassStringHandle((int)value))}\""); case JassType.Handle: return(value.ToString("X6")); case JassType.Boolean: switch ((int)value) { case 0: return("false"); case 1: return("true"); default: return("(boolean)" + (int)value); } default: return(value.ToString()); } }
public unsafe static string VariableToString(Variable *variable, string split) { VirtualMachine *ptr = *GameFunctions.GetThreadLocalStorage()->Jass.AsUnsafe()->VirtualMachine; string text = $"{variable->Type}{split}{variable->Type2}{split}{variable->Name.AsString()}"; string text2; switch (variable->Type) { case JassType.IntegerArray: case JassType.RealArray: case JassType.StringArray: case JassType.HandleArray: case JassType.BooleanArray: { JassArray *ptr2 = (JassArray *)(void *)variable->Value; JassType jassType = (JassType)(variable->Type - JassType.Real); text = $"{text}{split}{jassType}"; if (ptr2 == null) { text += "[null]"; } else { try { text2 = "["; for (int i = 0; i < ptr2->Length; i++) { text2 += VariableValueToString(ptr2->Data[i * sizeof(IntPtr) / sizeof(IntPtr)], jassType); if (i < ptr2->Length - 1) { text2 += ", "; } } text += text2 + "]"; } catch { text += "[null]"; } } break; } default: text = $"{text}{split}{VariableValueToString(variable->Value, variable->Type)}"; break; } return(text); }
public static string JassTypeToString(JassType type) { string result; switch (type) { case JassType.Nothing: result = "nothing"; break; case JassType.Type01: result = "type1"; break; case JassType.Null: result = "null"; break; case JassType.Code: result = "code"; break; case JassType.Integer: result = "integer"; break; case JassType.Real: result = "real"; break; case JassType.String: result = "string"; break; case JassType.Handle: result = "handle"; break; case JassType.Boolean: result = "boolean"; break; case JassType.IntegerArray: result = "integer array"; break; case JassType.RealArray: result = "real array"; break; case JassType.StringArray: result = "string array"; break; case JassType.HandleArray: result = "handle array"; break; case JassType.BooleanArray: result = "boolean array"; break; default: result = "invalid"; break; } return(result); }