// 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); }
// 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; } }