예제 #1
0
        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());
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }