예제 #1
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        reader.ReadArrayStart();

        var tree = new ArtifactTree();

        for (int i = 0; i < tree.slots.Length; i++)
        {
            int numSlots  = Artifact.maxLevel - i;
            var slotLevel = tree.slots[i];
            reader.ReadArrayStart();

            for (int slotIndex = 0; slotIndex < numSlots; slotIndex++)
            {
                var artifactSlot = new ArtifactSlot((byte)i);
                artifactSlot.artifact = Jboy.Json.ReadObject <Artifact>(reader);

                slotLevel[slotIndex] = artifactSlot;
            }

            reader.ReadArrayEnd();
        }

        reader.ReadArrayEnd();
        return(tree);
    }
예제 #2
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        var inv = new T();

        reader.ReadArrayStart();
        for (var i = 0; i < inv.bags.Length; i++)
        {
            inv.bags[i] = GenericSerializer.ReadJSONClassInstance <Bag>(reader);
        }
        reader.ReadArrayEnd();

        return(inv);
    }
예제 #3
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        reader.ReadObjectStart();
        reader.ReadPropertyName("r");
        var r = (float)reader.ReadNumber();

        reader.ReadPropertyName("g");
        var g = (float)reader.ReadNumber();

        reader.ReadPropertyName("b");
        var b = (float)reader.ReadNumber();

        reader.ReadPropertyName("a");
        var a = (float)reader.ReadNumber();

        reader.ReadObjectEnd();

        return(new Color(r, g, b, a));
    }
예제 #4
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        var slot = new ArtifactSlot();

        reader.ReadObjectStart();

        reader.ReadPropertyName("requiredLevel");
        slot.requiredLevel = (byte)reader.ReadNumber();

        reader.ReadPropertyName("artifactId");
        int itemId = (int)reader.ReadNumber();

        if (itemId != -1)
        {
            slot.artifact = new Artifact(itemId);
        }

        reader.ReadObjectEnd();

        return(slot);
    }
예제 #5
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        reader.TryReadPropertyName("serverType");
        switch (reader.ReadString())
        {
        case "Arena":
            return(ServerType.Arena);

        case "FFA":
            return(ServerType.FFA);

        case "Town":
            return(ServerType.Town);

        case "World":
            return(ServerType.World);

        default:
            throw new System.ArgumentException("Unknown server type");
        }
    }
예제 #6
0
    static void ReadConfig(string configFile)
    {
        string configData = File.ReadAllText(configFile);

        Jboy.JsonReader reader = new Jboy.JsonReader(configData);
        reader.ReadObjectStart();

        reader.ReadPropertyName("LobbyIP");
        LobbyIP = Jboy.Json.ReadObject <string>(reader);

        reader.ReadPropertyName("LobbyPort");
        LobbyPort = Jboy.Json.ReadObject <int>(reader);

        reader.ReadPropertyName("ProxyIP");
        ProxyIP = Jboy.Json.ReadObject <string>(reader);

        reader.ReadPropertyName("ProxyPort");
        ProxyPort = Jboy.Json.ReadObject <int>(reader);

        reader.ReadObjectEnd();
        reader.Close();
    }
예제 #7
0
    // Read a new class instance from JSON
    public static T ReadJSONClassInstance <T>(Jboy.JsonReader reader) where T : new()
    {
        T instance = new T();

        reader.ReadObjectStart();

        string propName;
        bool   success  = true;
        var    typeInfo = typeof(T);

        while (true)
        {
            success = reader.TryReadPropertyName(out propName);

            if (success)
            {
                var field = typeInfo.GetField(propName);

                if (field == null)
                {
                    LogManager.DB.LogError("Field does not exist: '" + propName + "'");
                    continue;
                }

                if (!field.IsStatic)
                {
                    field.SetValue(instance, GenericSerializer.ReadJSONValue(reader, field));
                }
            }
            else
            {
                break;
            }
        }

        reader.ReadObjectEnd();

        return(instance);
    }
예제 #8
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        if (reader.TryReadNull())
        {
            return(null);
        }

        var itemSlot = new ItemSlot();

        reader.ReadObjectStart();

        // ID
        reader.ReadPropertyName("item");
        itemSlot.item = Jboy.Json.ReadObject <Item>(reader);

        // Count
        reader.ReadPropertyName("count");
        itemSlot.count = (ulong)reader.ReadNumber();

        reader.ReadObjectEnd();

        return(itemSlot);
    }
예제 #9
0
    // Reader
    public static object JsonDeserializer(Jboy.JsonReader reader)
    {
        if (reader.TryReadNull())
        {
            return(null);
        }

        reader.ReadObjectStart();

        // ID
        reader.ReadPropertyName("id");
        var itemId = (int)reader.ReadNumber();
        var item   = ItemFactory.CreateFromId(itemId);

        // Meta data
        if (item != null)
        {
            item.ReadItemMetaData(reader);
        }

        reader.ReadObjectEnd();

        return(item);
    }
예제 #10
0
 // Reader
 public static object JsonDeserializer(Jboy.JsonReader reader)
 {
     return(GenericSerializer.ReadJSONClassInstance <T>(reader));
 }
예제 #11
0
 // Reader
 public static object JsonDeserializer(Jboy.JsonReader reader)
 {
     return(GenericSerializer.ReadJSONClassInstance <CharacterCustomization>(reader));
 }
예제 #12
0
    // Read a single value from JSON
    public static object ReadJSONValue(Jboy.JsonReader reader, FieldInfo field)
    {
        var fieldType = field.FieldType;

        if (fieldType == typeof(int))
        {
            return((int)(reader.ReadNumber()));
        }
        else if (fieldType == typeof(uint))
        {
            return((uint)(reader.ReadNumber()));
        }
        else if (fieldType == typeof(long))
        {
            return((long)(reader.ReadNumber()));
        }
        else if (fieldType == typeof(byte))
        {
            return((byte)(reader.ReadNumber()));
        }
        else if (fieldType == typeof(double))
        {
            return(reader.ReadNumber());
        }
        else if (fieldType == typeof(float))
        {
            return((float)reader.ReadNumber());
        }
        else if (fieldType == typeof(KeyCode))
        {
            return((KeyCode)(reader.ReadNumber()));
        }
        else if (fieldType == typeof(string))
        {
            string stringObject;

            if (reader.TryReadString(out stringObject))
            {
                return(stringObject);
            }
            else
            {
                reader.ReadNull();
                return(null);
            }
        }
        else if (fieldType == typeof(int[]))
        {
            return(Jboy.Json.ReadObject <int[]>(reader));
        }
        else if (fieldType == typeof(Color))
        {
            return(ColorSerializer.JsonDeserializer(reader));
        }
        else if (fieldType == typeof(ServerType))
        {
            return(ServerTypeSerializer.JsonDeserializer(reader));
        }
        else if (fieldType == typeof(PlayerQueueStats))
        {
            return(GenericSerializer.ReadJSONClassInstance <PlayerQueueStats>(reader));
        }
        else if (fieldType == typeof(PlayerQueueStats[]))
        {
            reader.ReadArrayStart();

            PlayerQueueStats[] valArray = new PlayerQueueStats[QueueSettings.queueCount];
            for (int i = 0; i < QueueSettings.queueCount; i++)
            {
                valArray[i] = GenericSerializer.ReadJSONClassInstance <PlayerQueueStats>(reader);
            }

            reader.ReadArrayEnd();

            return(valArray);
        }
        else if (fieldType == typeof(InputControl[]))
        {
            reader.ReadArrayStart();

            List <InputControl> valList = new List <InputControl>();
            while (true)
            {
                try {
                    valList.Add(GenericSerializer.ReadJSONClassInstance <InputControl>(reader));
                } catch {
                    break;
                }
            }

            reader.ReadArrayEnd();

            return(valList.ToArray());
        }
        else if (fieldType == typeof(Artifact))
        {
            return(Jboy.Json.ReadObject <Artifact>(reader));
        }
        else if (fieldType == typeof(ArtifactSlot))
        {
            return(Jboy.Json.ReadObject <ArtifactSlot>(reader));
        }
        else if (fieldType == typeof(ArtifactTree))
        {
            return(Jboy.Json.ReadObject <ArtifactTree>(reader));
        }
        else if (fieldType == typeof(ArtifactInventory))
        {
            return(Jboy.Json.ReadObject <ArtifactInventory>(reader));
        }
        else if (fieldType == typeof(List <ItemSlot>))
        {
            return(Jboy.Json.ReadObject <List <ItemSlot> >(reader));
        }
        else if (fieldType == typeof(TimeStamp))
        {
            return(Jboy.Json.ReadObject <TimeStamp>(reader));
        }
        else if (fieldType == typeof(SkillBuild))
        {
            return(Jboy.Json.ReadObject <SkillBuild>(reader));
            //} else if(fieldType == typeof(WeaponBuild)) {
            //	return Jboy.Json.ReadObject<WeaponBuild>(reader);
            //} else if(fieldType == typeof(AttunementBuild)) {
            //	return Jboy.Json.ReadObject<AttunementBuild>(reader);
        }
        else if (fieldType == typeof(WeaponBuild[]))
        {
            return(Jboy.Json.ReadObject <WeaponBuild[]>(reader));
        }
        else if (fieldType == typeof(AttunementBuild[]))
        {
            return(Jboy.Json.ReadObject <AttunementBuild[]>(reader));
        }
        else if (fieldType == typeof(Guild))
        {
            return(GenericSerializer.ReadJSONClassInstance <Guild>(reader));
        }
        else if (fieldType == typeof(GuildMember))
        {
            return(GenericSerializer.ReadJSONClassInstance <GuildMember>(reader));
        }
        else if (fieldType == typeof(GuildMember[]))
        {
            return(Jboy.Json.ReadObject <GuildMember[]>(reader));
        }
        else if (fieldType == typeof(List <string>))
        {
            return(Jboy.Json.ReadObject <List <string> >(reader));
        }
        else if (fieldType == typeof(List <Friend>))
        {
            return(Jboy.Json.ReadObject <List <Friend> >(reader));
        }
        else if (fieldType == typeof(List <FriendsGroup>))
        {
            return(Jboy.Json.ReadObject <List <FriendsGroup> >(reader));
        }
        else if (fieldType == typeof(Texture2D))
        {
            return(Texture2DSerializer.JsonDeserializer(reader));
        }
        else
        {
            LogManager.General.LogError("Unknown field type for GenericSerializer.ReadJSONValue: " + fieldType);
            return((int)(reader.ReadNumber()));
        }
    }
예제 #13
0
 // Reader
 public static object JsonDeserializer(Jboy.JsonReader reader)
 {
     reader.ReadNull();
     return(null);        //new Texture2D(64, 64);
 }
예제 #14
0
 // Reader
 public static object JsonDeserializer(Jboy.JsonReader reader)
 {
     return(ItemSerializer.JsonDeserializer(reader));
 }
예제 #15
0
 // ReadItemMetaData
 public void ReadItemMetaData(Jboy.JsonReader reader)
 {
     // TODO: Enchantments
 }
예제 #16
0
    public void Read(string configFile)
    {
        string configData = System.IO.File.ReadAllText(configFile);

        Jboy.JsonReader reader = new Jboy.JsonReader(configData);

        try
        {
            object         propertyName;
            Jboy.JsonToken token = Jboy.JsonToken.None;
            if (Jboy.JsonToken.ObjectStart == (token = reader.Read(out propertyName)))
            {
                while (Jboy.JsonToken.ObjectEnd != (token = reader.Read(out propertyName)))
                {
                    if (token != Jboy.JsonToken.PropertyName)
                    {
                        continue;
                    }

                    if (propertyName.Equals("ServerName"))
                    {
                        gameName = Jboy.Json.ReadObject <string>(reader);
                        continue;
                    }

                    if (propertyName.Equals("MasterRoleName"))
                    {
                        masterRoleName = Jboy.Json.ReadObject <string>(reader);
                        continue;
                    }

                    if (propertyName.Equals("Password"))
                    {
                        gamePassword = Jboy.Json.ReadObject <string>(reader);
                        continue;
                    }

                    if (propertyName.Equals("MapName"))
                    {
                        mapName = Jboy.Json.ReadObject <string>(reader);
                        continue;
                    }

                    if (propertyName.Equals("GameMode"))
                    {
                        gameMode = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("GameType"))
                    {
                        gameType = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("MapSeed"))
                    {
                        seedStr = Jboy.Json.ReadObject <string>(reader);
                        continue;
                    }

                    if (propertyName.Equals("TeamNum"))
                    {
                        teamNum = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("NumPerTeam"))
                    {
                        numPerTeam = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("TerrainType"))
                    {
                        terrainType = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("VegetationType"))
                    {
                        vegetationId = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("ClimateType"))
                    {
                        sceneClimate = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("MonsterYes"))
                    {
                        monsterYes = Jboy.Json.ReadObject <bool>(reader);
                        continue;
                    }

                    if (propertyName.Equals("IsPrivate"))
                    {
                        isPrivate = Jboy.Json.ReadObject <bool>(reader);
                        continue;
                    }

                    if (propertyName.Equals("ProxyServer"))
                    {
                        proxyServer = Jboy.Json.ReadObject <bool>(reader);
                        continue;
                    }

                    if (propertyName.Equals("UnlimitedRes"))
                    {
                        unlimitedRes = Jboy.Json.ReadObject <bool>(reader);
                        continue;
                    }

                    if (propertyName.Equals("TerrainHeight"))
                    {
                        terrainHeight = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("MapSize"))
                    {
                        mapSize = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("RiverDensity"))
                    {
                        riverDensity = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("RiverWidth"))
                    {
                        riverWidth = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    //a0.95
                    if (propertyName.Equals("PlainHeight"))
                    {
                        plainHeight = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }
                    if (propertyName.Equals("Flatness"))
                    {
                        flatness = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }
                    if (propertyName.Equals("BridgeMaxHeight"))
                    {
                        bridgeMaxHeight = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("AICount"))
                    {
                        AICount = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("UseSkillTree"))
                    {
                        useSkillTree = Jboy.Json.ReadObject <bool>(reader);
                        continue;
                    }

                    if (propertyName.Equals("DropDeadPercent"))
                    {
                        dropDeadPercent = Jboy.Json.ReadObject <int>(reader);
                        continue;
                    }

                    if (propertyName.Equals("UID"))
                    {
                        uid = Jboy.Json.ReadObject <string>(reader);
                        continue;
                    }

                    if (propertyName.Equals("ScriptsAvailable"))
                    {
                        scriptsAvailable = Jboy.Json.ReadObject <bool>(reader);
                        continue;
                    }
                }
            }
        }
        catch (Exception e)
        {
            if (LogFilter.logError)
            {
                Debug.LogErrorFormat("Read config file failed.\r\n{0}\r\n{1}\r\n{2}", configFile, e.Message, e.StackTrace);
            }
        }
        finally
        {
            reader.Close();
        }
    }