public static object ReadFloat(SQLiteDataReader reader, int idx) { try { if (reader.IsDBNull(idx)) return 0; else return reader.GetFloat(idx); } catch (Exception) { return 0; } }
private static Item createItem(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Item item = new Item(); item.permanent = true; item.id = reader.GetInt32(0); item.displayname = reader.GetString(1); item.actual_value = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetInt64(2); item.vendor_value = reader.IsDBNull(3) ? DATABASE_NULL : reader.GetInt64(3); item.stackable = reader.GetBoolean(4); item.capacity = reader.IsDBNull(5) ? DATABASE_NULL : reader.GetFloat(5); item.category = reader.IsDBNull(6) ? "Unknown" : reader.GetString(6); item.discard = reader.GetBoolean(7); item.convert_to_gold = reader.GetBoolean(8); item.look_text = reader.IsDBNull(9) ? String.Format("You see a {0}.", item.displayname) : reader.GetString(9); item.title = reader.GetString(10); item.currency = reader.IsDBNull(11) ? DATABASE_NULL : reader.GetInt32(11); item.image = Image.FromStream(reader.GetStream(12)); if (item.image.RawFormat.Guid == ImageFormat.Gif.Guid) { int frames = item.image.GetFrameCount(FrameDimension.Time); if (frames == 1) { Bitmap new_bitmap = new Bitmap(item.image); new_bitmap.MakeTransparent(); item.image.Dispose(); item.image = new_bitmap; } } command = new SQLiteCommand(String.Format("SELECT vendorid, value FROM SellItems WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemSold sellItem = new ItemSold(); sellItem.itemid = item.id; sellItem.npcid = reader.GetInt32(0); sellItem.price = reader.GetInt32(1); item.sellItems.Add(sellItem); } command = new SQLiteCommand(String.Format("SELECT vendorid, value FROM BuyItems WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemSold buyItem = new ItemSold(); buyItem.itemid = item.id; buyItem.npcid = reader.GetInt32(0); buyItem.price = reader.GetInt32(1); item.buyItems.Add(buyItem); } command = new SQLiteCommand(String.Format("SELECT creatureid, percentage, min, max FROM CreatureDrops WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemDrop itemDrop = new ItemDrop(); itemDrop.itemid = item.id; itemDrop.creatureid = reader.GetInt32(0); itemDrop.percentage = reader.IsDBNull(1) ? DATABASE_NULL : reader.GetFloat(1); if (itemDrop.percentage > 100) { itemDrop.min = 1; itemDrop.max = (int)(itemDrop.percentage / 100.0 * 2.0); itemDrop.percentage = 100; } else { itemDrop.min = Math.Max(reader.GetInt32(2), 1); itemDrop.max = Math.Max(reader.GetInt32(3), itemDrop.min); } item.itemdrops.Add(itemDrop); } command = new SQLiteCommand(String.Format("SELECT questid FROM QuestRewards WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { item.rewardedBy.Add(getQuest(reader.GetInt32(0))); } command = new SQLiteCommand(String.Format("SELECT property, value FROM ItemProperties WHERE itemid={0}", item.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { string property = reader.GetString(0); switch(property) { case "Voc": item.vocation = reader.GetString(1); break; case "Level": item.level = reader.GetInt32(1); break; case "Def": item.defensestr = reader["value"].ToString(); if (!int.TryParse(item.defensestr, out item.defense)) { item.defense = int.Parse(item.defensestr.Split(' ')[0]); } break; case "Attrib": item.attrib = reader.GetString(1); break; case "Atk": item.attack = reader.GetInt32(1); break; case "Atk+": item.atkmod = reader.GetInt32(1); break; case "Hit+": string str = reader["value"].ToString(); int.TryParse(str, out item.hitmod); break; case "Arm": item.armor = reader.GetInt32(1); break; case "Range": item.range = reader.GetInt32(1); break; case "Type": item.type = reader.GetString(1); break; } } return item; }
private static Creature createCreature(SQLiteDataReader reader) { SQLiteCommand command; if (!reader.Read()) { return null; } Creature cr = new Creature(); cr.permanent = true; cr.id = reader.GetInt32(0); cr.displayname = reader["name"].ToString(); cr.health = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetInt32(2); cr.experience = reader.IsDBNull(3) ? DATABASE_NULL : reader.GetInt32(3); cr.maxdamage = reader.IsDBNull(4) ? DATABASE_NULL : reader.GetInt32(4); cr.summoncost = reader.IsDBNull(5) ? DATABASE_NULL : reader.GetInt32(5); cr.illusionable = reader.GetBoolean(6); cr.pushable = reader.GetBoolean(7); cr.pushes = reader.GetBoolean(8); cr.res_phys = reader.IsDBNull(9) ? 100 : reader.GetInt32(9); cr.res_holy = reader.IsDBNull(10) ? 100 : reader.GetInt32(10); cr.res_death = reader.IsDBNull(11) ? 100 : reader.GetInt32(11); cr.res_fire = reader.IsDBNull(12) ? 100 : reader.GetInt32(12); cr.res_energy = reader.IsDBNull(13) ? 100 : reader.GetInt32(13); cr.res_ice = reader.IsDBNull(14) ? 100 : reader.GetInt32(14); cr.res_earth = reader.IsDBNull(15) ? 100 : reader.GetInt32(15); cr.res_drown = reader.IsDBNull(16) ? 100 : reader.GetInt32(16); cr.res_lifedrain = reader.IsDBNull(17) ? 100 : reader.GetInt32(17); cr.paralysable = reader.GetBoolean(18); cr.senseinvis = reader.GetBoolean(19); cr.abilities = reader.IsDBNull(20) ? DATABASE_STRING_NULL : reader["abilities"].ToString(); cr.title = reader[21].ToString(); cr.speed = reader.IsDBNull(22) ? DATABASE_NULL : reader.GetInt32(22); cr.armor = reader.IsDBNull(23) ? DATABASE_NULL : reader.GetInt32(23); cr.boss = reader.GetInt32(24) > 0; if (reader.IsDBNull(25)) { return null; } cr.image = Image.FromStream(reader.GetStream(25)); command = new SQLiteCommand(String.Format("SELECT skinitemid, knifeitemid, percentage FROM Skins WHERE creatureid={0}", cr.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { Skin skin = new Skin(); skin.dropitemid = reader.GetInt32(0); skin.skinitemid = reader.GetInt32(1); skin.percentage = reader.IsDBNull(2) ? DATABASE_NULL : reader.GetFloat(2); cr.skin = skin; } command = new SQLiteCommand(String.Format("SELECT itemid, percentage, min, max FROM CreatureDrops WHERE creatureid={0}", cr.id), mainForm.conn); reader = command.ExecuteReader(); while (reader.Read()) { ItemDrop itemDrop = new ItemDrop(); itemDrop.creatureid = cr.id; itemDrop.itemid = reader.GetInt32(0); itemDrop.percentage = reader.IsDBNull(1) ? DATABASE_NULL : reader.GetFloat(1); if (itemDrop.percentage > 100) { itemDrop.min = 1; itemDrop.max = (int)(itemDrop.percentage / 100.0 * 2.0); itemDrop.percentage = 100; } else { itemDrop.min = Math.Max(reader.GetInt32(2), 1); itemDrop.max = Math.Max(reader.GetInt32(3), itemDrop.min); } cr.itemdrops.Add(itemDrop); } return cr; }
private float GetFloat(SQLiteDataReader reader, int col) { return reader.IsDBNull(col) ? 0 : reader.GetFloat(col); }