Beispiel #1
0
    // Edit or Create
    public override void DrawEditor(Rect box, bool newItem)
    {
        // Setup the layout
        Rect pos = box;
        pos.x += ImagePack.innerMargin;
        pos.y += ImagePack.innerMargin;
        pos.width -= ImagePack.innerMargin;
        pos.height = ImagePack.fieldHeight;

        if (!linkedTablesLoaded) {
            LoadAbilityOptions();
            LoadCurrencyOptions();
            LoadDamageOptions();
            LoadStatOptions();
            itemTypeOptions = ServerOptionChoices.LoadAtavismChoiceOptions("Item Type", false);
            weaponTypeOptions = ServerOptionChoices.LoadAtavismChoiceOptions("Weapon Type", false);
            armorTypeOptions = ServerOptionChoices.LoadAtavismChoiceOptions("Armor Type", false);
            itemEffectTypeOptions = ServerOptionChoices.LoadAtavismChoiceOptions("Item Effect Type", true);
            linkedTablesLoaded = true;
        }

        // Draw the content database info
        if (newItem) {
            ImagePack.DrawLabel (pos.x, pos.y, "Create a new item");
            pos.y += ImagePack.fieldHeight;
        }

        editingDisplay.name = ImagePack.DrawField (pos, "Name:", editingDisplay.name, 0.8f);
        pos.y += ImagePack.fieldHeight;
        pos.width /= 2;
        editingDisplay.itemType = ImagePack.DrawSelector (pos, "Item Type:", editingDisplay.itemType, itemTypeOptions);
        pos.x += pos.width;
        editingDisplay.icon = ImagePack.DrawTextureAsset (pos, "Icon:", editingDisplay.icon);
        pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;
        if (editingDisplay.itemType == "Weapon")
            editingDisplay.subType = ImagePack.DrawSelector (pos, "Sub-Type:", editingDisplay.subType, weaponTypeOptions);
        else if (editingDisplay.itemType == "Armor")
            editingDisplay.subType = ImagePack.DrawSelector (pos, "Sub-Type:", editingDisplay.subType, armorTypeOptions);
        pos.width *= 2;
        pos.y += 1.3f*ImagePack.fieldHeight;
        if ((editingDisplay.itemType == "Weapon") || (editingDisplay.itemType == "Armor")) {
            pos.width *= 0.7f;
            editingDisplay.display = ImagePack.DrawGameObject(pos, "Equipment Display:", editingDisplay.display, 0.6f);
            pos.width /= 0.7f;
        }
        pos.width /= 2;
        pos.y += 1.5f*ImagePack.fieldHeight;
        /*editingDisplay.category = ImagePack.DrawField (pos, "Category:", editingDisplay.category);
        pos.x += pos.width;
        editingDisplay.subcategory = ImagePack.DrawField (pos, "Sub-category:", editingDisplay.subcategory);
        pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;*/
        if ((editingDisplay.itemType == "Weapon") || (editingDisplay.itemType == "Armor")) {
            if (editingDisplay.itemType == "Weapon")
                editingDisplay.slot = ImagePack.DrawSelector (pos, "Slot:", editingDisplay.slot, editingDisplay.slotWeaponOptions);
            else
                editingDisplay.slot = ImagePack.DrawSelector (pos, "Slot:", editingDisplay.slot, editingDisplay.slotArmorOptions);

            if (editingDisplay.itemType == "Weapon") {
                pos.y += ImagePack.fieldHeight;
                editingDisplay.damageType = ImagePack.DrawSelector (pos, "Damage Type:", editingDisplay.damageType, damageOptions);
                pos.x += pos.width;
                editingDisplay.damage = ImagePack.DrawField (pos, "Damage:", editingDisplay.damage);
                pos.x -= pos.width;
                pos.y += ImagePack.fieldHeight;
                editingDisplay.delay = ImagePack.DrawField (pos, "Delay:", editingDisplay.delay);
            }
        pos.y += ImagePack.fieldHeight;
        }
        editingDisplay.itemQuality = ImagePack.DrawSelector (pos, "Item Quality:", editingDisplay.itemQuality - 1, editingDisplay.itemQualityOptions) + 1;
        pos.x += pos.width;
        editingDisplay.binding = ImagePack.DrawSelector (pos, "Binding:", editingDisplay.binding, editingDisplay.bindingOptions);
        pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;
        editingDisplay.purchaseCost = ImagePack.DrawField (pos, "Purchase Cost:", editingDisplay.purchaseCost);
        pos.x += pos.width;
        int selectedCurrency = GetPositionOfCurrency(editingDisplay.purchaseCurrency);
        selectedCurrency = ImagePack.DrawSelector (pos, "Currency:", selectedCurrency, currencyOptions);
        editingDisplay.purchaseCurrency = currencyIds[selectedCurrency];
        pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;
        editingDisplay.sellable = ImagePack.DrawToggleBox (pos, "Is Item Sellable?", editingDisplay.sellable);
        pos.x += pos.width;
        editingDisplay.isUnique = ImagePack.DrawToggleBox (pos, "Is Item Unique?", editingDisplay.isUnique);
        pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;
        editingDisplay.stackLimit = ImagePack.DrawField (pos, "Stack Limit:", editingDisplay.stackLimit);
        pos.x += pos.width;
        editingDisplay.levelReq = ImagePack.DrawField (pos, "Level Required:", editingDisplay.levelReq);
        pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;
        //editingDisplay.raceReq = ImagePack.DrawField (pos, "Use Rate:", editingDisplay.raceReq);
        //pos.x += pos.width;
        //pos.x -= pos.width;
        pos.y += ImagePack.fieldHeight;
        pos.width *= 2;
        editingDisplay.toolTip = ImagePack.DrawField (pos, "Tool Tip:", editingDisplay.toolTip, 0.75f, 60);

        pos.y += 2.5f*ImagePack.fieldHeight;
        ImagePack.DrawLabel (pos. x, pos.y, "Item Effects");
        pos.y += ImagePack.fieldHeight;

        for (int i = 0; i < editingDisplay.maxEffectEntries; i++) {
            if (editingDisplay.effects.Count > i) {
                pos.width = pos.width / 2;
                editingDisplay.effects[i].itemEffectType = ImagePack.DrawSelector (pos, "Effect " + (i+1)
                    + " Type:", editingDisplay.effects[i].itemEffectType, itemEffectTypeOptions);
                pos.x += pos.width;

                if (editingDisplay.effects[i].itemEffectType == "Stat") {
                    pos.x -= pos.width;
                    pos.y += ImagePack.fieldHeight;
                    editingDisplay.effects[i].itemEffectName = ImagePack.DrawSelector (pos, "Stat:", editingDisplay.effects[i].itemEffectName, statOptions);
                    pos.x += pos.width;
                    if (editingDisplay.effects[i].itemEffectValue == "")
                        editingDisplay.effects[i].itemEffectValue = "0";
                    editingDisplay.effects[i].itemEffectValue = ImagePack.DrawField (pos, "Value:", editingDisplay.effects[i].itemEffectValue);
                } else if (editingDisplay.effects[i].itemEffectType == "UseAbility") {
                    if (editingDisplay.effects[i].itemEffectValue == "")
                        editingDisplay.effects[i].itemEffectValue = "0";
                    int selectedAbility = GetPositionOfAbility(int.Parse(editingDisplay.effects[i].itemEffectValue));
                    selectedAbility = ImagePack.DrawSelector (pos, "Ability:", selectedAbility, abilityOptions);
                    editingDisplay.effects[i].itemEffectValue = abilityIds[selectedAbility].ToString();
                } else if (editingDisplay.effects[i].itemEffectType == "AutoAttack") {
                    if (editingDisplay.effects[i].itemEffectValue == "")
                        editingDisplay.effects[i].itemEffectValue = "0";
                    int selectedAbility = GetPositionOfAbility(int.Parse(editingDisplay.effects[i].itemEffectValue));
                    selectedAbility = ImagePack.DrawSelector (pos, "Ability:", selectedAbility, abilityOptions);
                    editingDisplay.effects[i].itemEffectValue = abilityIds[selectedAbility].ToString();
                } else if (editingDisplay.effects[i].itemEffectType == "Currency") {
                    if (editingDisplay.effects[i].itemEffectValue == "")
                        editingDisplay.effects[i].itemEffectValue = "0";
                    selectedCurrency = GetPositionOfCurrency(int.Parse(editingDisplay.effects[i].itemEffectValue));
                    selectedCurrency = ImagePack.DrawSelector (pos, "Currency:", selectedCurrency, currencyOptions);
                    editingDisplay.effects[i].itemEffectValue = currencyIds[selectedCurrency].ToString();
                } else if (editingDisplay.effects[i].itemEffectType == "ClaimObject") {
                    pos.y += ImagePack.fieldHeight;
                    pos.x -= pos.width;
                    pos.width *= 2;
                    editingDisplay.effects[i].itemEffectValue = ImagePack.DrawGameObject (pos, "Game Object:", editingDisplay.effects[i].itemEffectValue, 1.0f);
                    pos.width /= 2;
                    pos.x += pos.width;
                } else if (editingDisplay.effects[i].itemEffectType == "CreateClaim") {
                    editingDisplay.effects[i].itemEffectValue = ImagePack.DrawField (pos, "Size:", editingDisplay.effects[i].itemEffectValue);
                } else {
                    editingDisplay.effects[i].itemEffectValue = ImagePack.DrawField (pos, "Value:", editingDisplay.effects[i].itemEffectValue);
                }

                pos.y += ImagePack.fieldHeight;
                if (ImagePack.DrawButton (pos.x, pos.y, "Remove Effect")) {
                    editingDisplay.effects.RemoveAt(i);
                }
                pos.x -= pos.width;
                //pos.x -= pos.width;
                pos.y += ImagePack.fieldHeight;
                pos.width = pos.width * 2;
            }
        }
        if (editingDisplay.effects.Count < editingDisplay.maxEffectEntries) {
            if (ImagePack.DrawButton (pos.x, pos.y, "Add Item Effect")) {
                ItemEffectEntry itemEffectEntry = new ItemEffectEntry("", "", "");
                editingDisplay.effects.Add(itemEffectEntry);
            }
        }

        // Save data
        pos.x -= ImagePack.innerMargin;
        pos.y += 3f * ImagePack.fieldHeight;
        pos.width /= 3;
        if (ImagePack.DrawButton (pos.x, pos.y, "Save Data")) {
            if (newItem)
                InsertEntry ();
            else
                UpdateEntry ();

            state = State.Loaded;
        }

        // Delete data
        if (!newItem) {
            pos.x += pos.width;
            if (ImagePack.DrawButton (pos.x, pos.y, "Delete Data")) {
                DeleteEntry ();
                LoadSelectList ();
                newSelectedDisplay = 0;
                // Debug.Log ("(Delete)I:" + newSelectedDisplay);
                state = State.Loaded;
            }
        }

        // Cancel editing
        pos.x += pos.width;
        if (ImagePack.DrawButton (pos.x, pos.y, "Cancel")) {
            editingDisplay = originalDisplay.Clone();
            if (newItem)
                state = State.New;
            else
                state = State.Loaded;
        }

        if (resultTimeout != -1 && resultTimeout > Time.realtimeSinceStartup) {
            pos.y += ImagePack.fieldHeight;
            ImagePack.DrawText(pos, result);
        }

        if (!newItem)
            EnableScrollBar(pos.y - box.y + ImagePack.fieldHeight + 28);
        else
            EnableScrollBar(pos.y - box.y + ImagePack.fieldHeight);
    }
Beispiel #2
0
    // Load Database Data
    public override void Load()
    {
        if (!dataLoaded) {
            // Clean old data
            dataRegister.Clear ();
            displayKeys.Clear ();

            // Read all entries from the table
            string query = "SELECT * FROM " + tableName;

            // If there is a row, clear it.
            if (rows != null)
                rows.Clear ();

            // Load data
            rows = DatabasePack.LoadData (DatabasePack.contentDatabasePrefix, query);
            //Debug.Log("#Rows:"+rows.Count);
            // Read all the data
            if ((rows!=null) && (rows.Count > 0)) {
                foreach (Dictionary<string,string> data in rows) {
                    //foreach(string key in data.Keys)
                    //	Debug.Log("Name[" + key + "]:" + data[key]);
                    //return;
                    ItemData display = new ItemData ();

                    display.id = int.Parse (data ["id"]);
                    display.name = data ["name"];
                    display.icon = data ["icon"];
                    display.category = data ["category"];
                    display.subcategory = data ["subcategory"];
                    display.itemType = data ["itemType"];
                    display.subType = data ["subType"];
                    display.slot = data ["slot"];
                    display.display = data ["display"];
                    display.itemQuality = int.Parse (data ["itemQuality"]);
                    display.binding = int.Parse (data ["binding"]);
                    display.isUnique = bool.Parse (data ["isUnique"]);
                    display.stackLimit = int.Parse (data ["stackLimit"]);
                    display.purchaseCurrency = int.Parse (data ["purchaseCurrency"]);
                    display.purchaseCost = int.Parse (data ["purchaseCost"]);
                    display.sellable = bool.Parse (data ["sellable"]);
                    display.levelReq = int.Parse (data ["levelReq"]);
                    display.raceReq = data ["raceReq"];
                    display.damage = int.Parse (data ["damage"]);
                    display.damageType = data ["damageType"];
                    display.delay = float.Parse (data ["delay"]);
                    display.toolTip = data ["toolTip"];
                    for (int i = 1; i <= display.maxEffectEntries; i++) {
                        string effectType = data ["effect" + i + "type"];
                        if (effectType != null && effectType != "") {
                            string effectName = data ["effect" + i + "name"];
                            string effectValue = data ["effect" + i + "value"];
                            ItemEffectEntry entry = new ItemEffectEntry(effectType, effectName, effectValue);
                            display.effects.Add(entry);
                        }
                    }

                    display.isLoaded = true;
                    //Debug.Log("Name:" + display.name  + "=[" +  display.id  + "]");
                    dataRegister.Add (display.id, display);
                    displayKeys.Add (display.id);
                }
                LoadSelectList ();
            }
            dataLoaded = true;
        }
    }