private static string GetItemFullName(object itemObj) { float iWeight = 0.0f; MaterialKind iMaterial = MaterialKind.mk_None; string result = ""; if (itemObj is Item) { Item item = (Item)itemObj; iWeight = item.Weight; iMaterial = item.Material; result = item.Name; } else { if (itemObj is ItemEntry) { ItemEntry itemEntry = (ItemEntry)itemObj; iWeight = itemEntry.Weight; iMaterial = itemEntry.Material; result = itemEntry.Name; } } result = result + "\r\n" + BaseLocale.GetStr(RS.rs_Weight) + ": " + Convert.ToString((double)iWeight) + "; " + BaseLocale.GetStr(StaticData.dbMaterialKind[(int)iMaterial].Name); return(result); }
public int CheckForgeIngredients(EntityList ingredients, ref float sum, ref MaterialKind mat) { sum = 0f; mat = MaterialKind.mk_None; if (ingredients.Count < 1) { return(RC_LackIngredients); } int num = ingredients.Count; for (int i = 0; i < num; i++) { Item item = (Item)ingredients.GetItem(i); sum = sum + item.Weight; if (mat == MaterialKind.mk_None) { mat = item.Material; } else { if (mat != item.Material) { return(RC_DifferentMetals); } } } return(RC_Ok); }
public EffecterDef Effect(MaterialKind kind) { EffecterDef res = null; switch (kind) { case MaterialKind.None: res = fallback; break; case MaterialKind.Fabric: res = fabric; break; case MaterialKind.Flesh: res = flesh; break; case MaterialKind.Metal: res = metal; break; case MaterialKind.Soil: res = soil; break; case MaterialKind.Stone: res = stone; break; case MaterialKind.Wood: res = wood; break; } if (res == null) { res = fallback; } return(res); }
static MaterialKindGetter() { foreach (ThingDef thingDef in from def in DefDatabase <ThingDef> .AllDefs where def.building != null select def) { MaterialKind kind = Get(thingDef); if (kind == MaterialKind.None) { continue; } if (thingDef.building.naturalTerrain != null) { map[thingDef.building.naturalTerrain] = kind; if (thingDef.building.naturalTerrain.smoothedTerrain != null) { map[thingDef.building.naturalTerrain.smoothedTerrain] = kind; } } if (thingDef.building.leaveTerrain != null) { map[thingDef.building.leaveTerrain] = kind; if (thingDef.building.leaveTerrain.smoothedTerrain != null) { map[thingDef.building.leaveTerrain.smoothedTerrain] = kind; } } } }
public override void LoadXML(XmlNode element, FileVersion version) { try { base.LoadXML(element, version); ImageName = ReadElement(element, "ImageName"); ItmKind = (ItemKind)Enum.Parse(typeof(ItemKind), ReadElement(element, "Kind")); string signs = ReadElement(element, "Signs"); Flags = new ItemFlags(signs); string newSigns = Flags.Signature; if (!signs.Equals(newSigns)) { throw new Exception("ItemSigns not equals (" + ImageName + ")"); } EqKind = (BodypartType)Enum.Parse(typeof(BodypartType), ReadElement(element, "eqKind")); Frequency = Convert.ToSByte(ReadElement(element, "Frequency")); Satiety = Convert.ToInt16(ReadElement(element, "Satiety")); Price = Convert.ToInt16(ReadElement(element, "Price")); Weight = (float)ConvertHelper.ParseFloat(ReadElement(element, "Weight"), 0.0f, true); XmlNode ael = element.SelectSingleNode("Attributes"); for (int i = ItemAttribute.ia_First; i <= ItemAttribute.ia_Last; i++) { string atSign = dbItemAttributes[i - 1]; Attributes[i - 1] = Convert.ToInt32(ReadElement(ael, atSign)); } XmlNodeList nl = element.SelectSingleNode("Effects").ChildNodes; Effects = new EffectEntry[nl.Count]; for (int i = 0; i < nl.Count; i++) { XmlNode n = nl[i]; Effects[i] = new EffectEntry(); Effects[i].EffID = (EffectID)Enum.Parse(typeof(EffectID), n.Attributes["EffectID"].InnerText); Effects[i].ExtData = Convert.ToInt32(n.Attributes["ExtData"].InnerText); } nl = element.SelectSingleNode("Contents").ChildNodes; Contents = new ContentsEntry[nl.Count]; for (int i = 0; i < nl.Count; i++) { XmlNode n = nl[i]; Contents[i] = new ContentsEntry(); Contents[i].ItemID = n.Attributes["ItemID"].InnerText; Contents[i].Chance = Convert.ToInt32(n.Attributes["Chance"].InnerText); } Material = (MaterialKind)Enum.Parse(typeof(MaterialKind), ReadElement(element, "Material")); FramesCount = Convert.ToSByte(ReadElement(element, "FramesCount")); BonusRange.Min = Convert.ToInt32(ReadElement(element, "BonusRange_Min")); BonusRange.Max = Convert.ToInt32(ReadElement(element, "BonusRange_Max")); } catch (Exception ex) { Logger.Write("ItemEntry.loadXML(): " + ex.Message); throw ex; } }
public void AddForgeItem(int itemID, float weight, MaterialKind material) { Item res = new Item(fPlayer.Space, fPlayer); res.CLSID = itemID; res.Weight = weight; res.Count = 1; //res.Material = material; fPlayer.Items.Add(res, res.Countable); }
public static MaterialKind Get(Thing thing) { MaterialKind kind = Get(thing.Stuff); if (kind != MaterialKind.None) { return(kind); } return(Get(thing.def)); }
public override void LoadXML(XmlNode element, FileVersion version) { try { base.LoadXML(element, version); MatKind = (MaterialKind)(Convert.ToInt32(ReadElement(element, "MatKind"))); } catch (Exception ex) { Logger.Write("MaterialEntry.loadXML(): " + ex.Message); throw ex; } }
static void Prefix(Projectile __instance, Thing hitThing, Vector3 ___origin) { Map map = __instance.Map; if (map == null) { return; } GunPropDef prop = GunplaySetup.GunProp(__instance.EquipmentDef); if (prop == null) { return; } MaterialKind kind = MaterialKind.None; if (hitThing != null) { kind = MaterialKindGetter.Get(hitThing); } if (kind == MaterialKind.None) { TerrainDef terrainDef = map.terrainGrid.TerrainAt(CellIndicesUtility.CellToIndex(__instance.Position, map.Size.x)); kind = MaterialKindGetter.Get(terrainDef); } if (Gunplay.settings.enableSounds) { SoundDef sound = prop.projectileImpactSound == null ? null : prop.projectileImpactSound.Effect(kind); if (sound != null) { sound.PlayOneShot(new TargetInfo(__instance.Position, map, false)); } } if (Gunplay.settings.enableEffects) { EffecterDef effecterDef = prop.projectileImpactEffect == null ? null : prop.projectileImpactEffect.Effect(kind); if (effecterDef != null) { Effecter effecter = new Effecter(effecterDef); effecter.Trigger(__instance, new TargetInfo(___origin.ToIntVec3(), __instance.Map)); effecter.Cleanup(); } } }
static MaterialKind Get(List <ThingDefCountClass> list) { if (list == null) { return(MaterialKind.None); } foreach (ThingDefCountClass td in list) { MaterialKind kind = Get(td.thingDef); if (kind != MaterialKind.None) { return(kind); } } return(MaterialKind.None); }
public int ForgeItem(EntityList ingredients, int itemID) { float sum = 0F; MaterialKind i = MaterialKind.mk_None; int result = CheckForgeIngredients(ingredients, ref sum, ref i); if (result != RC_Ok) { if (result == RC_DifferentMetals) { // dummy } } else { int num = ingredients.Count; for (int j = 0; j < num; j++) { Item item = (Item)ingredients.GetItem(j); fPlayer.DeleteItem(item); } ingredients.Clear(); if (itemID == GlobalVars.iid_Ingot) { AddForgeItem(GlobalVars.iid_Ingot, sum, i); } else { ItemEntry iEntry = (ItemEntry)GlobalVars.nwrDB.GetEntry(itemID); AddForgeItem(itemID, iEntry.Weight, i); float rem = ((sum - iEntry.Weight)); if (rem > 0f) { AddForgeItem(GlobalVars.iid_Ingot, rem, i); } } } return(result); }
private void UpdateView() { fPackList.Items.Clear(); fIngredientsList.Items.Clear(); fResList.Items.Clear(); EntityList items = GlobalVars.nwrGame.Player.Items; MaterialKind mat = MaterialKind.mk_None; int num = items.Count; for (int i = 0; i < num; i++) { Item item = (Item)items.GetItem(i); mat = item.Entry.Material; if (mat != MaterialKind.mk_None && fIngredients.FindByGUID(item.UID_Renamed) == null) { AddListItem(fPackList, GetItemFullName(item), item, true); } } int num2 = fIngredients.Count; for (int i = 0; i < num2; i++) { Item item = (Item)fIngredients.GetItem(i); AddListItem(fIngredientsList, GetItemFullName(item), item, true); } float sum = 0F; int res = GlobalVars.nwrGame.Player.Craft.CheckForgeIngredients(fIngredients, ref sum, ref mat); if (res != Craft.RC_Ok) { if (res == Craft.RC_DifferentMetals) { fResList.Items.Add(BaseLocale.GetStr(RS.rs_DifferentMetals), null); } } else { ItemEntry iEntry = (ItemEntry)GlobalVars.nwrDB.GetEntry(GlobalVars.iid_Ingot); var ikRec = StaticData.dbItemKinds[(int)iEntry.ItmKind]; if (iEntry.Material == mat) { LBItem listItem = fResList.Items.Add(BaseLocale.GetStr(RS.rs_MeltInIngot), null); listItem.ImageIndex = iEntry.ImageIndex; listItem.Color = ikRec.Color; } int num3 = GlobalVars.dbWeapon.Count; for (int i = 0; i < num3; i++) { iEntry = ((ItemEntry)GlobalVars.nwrDB.GetEntry(GlobalVars.dbWeapon[i])); if (iEntry.Material == mat && iEntry.Weight <= sum && !iEntry.Unique && !iEntry.Meta) { LBItem listItem = fResList.Items.Add(GetItemFullName(iEntry), iEntry); listItem.ImageIndex = iEntry.ImageIndex; listItem.Color = ikRec.Color; } } } }
public MaterialEntry(object owner) : base(owner) { MatKind = MaterialKind.mk_None; }