public void SendThing(User user, Thing thing) { this.SendPacket(new SendThingPacket { userTo = user, realmThing = realmData.ToRealmThing(thing) }); thing.Destroy(); }
// Token: 0x0600001A RID: 26 RVA: 0x00002690 File Offset: 0x00000890 public bool SendThings(User user, Dictionary <List <Thing>, int> chosenThings) { if (!CheckCanStartTransaction(user)) { return(false); } var list = new List <KeyValuePair <RealmThing, int> >(); foreach (var keyValuePair in chosenThings) { var key = realmData.ToRealmThing(keyValuePair.Key[0]); list.Add(new KeyValuePair <RealmThing, int>(key, keyValuePair.Value)); } var user2 = currentUser; var num = user2.lastTransactionId + 1; user2.lastTransactionId = num; var itemTransaction = new ItemTransaction(num, currentUser, user, chosenThings, list); realmData.transactions.Add(itemTransaction); SendPacket(new StartTransactionPacket { transaction = itemTransaction }); Messages.Message("Offer sent, waiting for confirmation", MessageTypeDefOf.SilentInput); return(true); }
public bool SendThings(User user, Dictionary <List <Thing>, int> chosenThings) { if (!CheckCanStartTransaction(user)) { return(false); } List <KeyValuePair <RealmThing, int> > realmThings = new List <KeyValuePair <RealmThing, int> >(); foreach (KeyValuePair <List <Thing>, int> entry in chosenThings) { RealmThing realmThing = realmData.ToRealmThing(entry.Key[0]); realmThings.Add(new KeyValuePair <RealmThing, int>(realmThing, entry.Value)); } int id = ++this.currentUser.lastTransactionId; ItemTransaction transaction = new ItemTransaction(id, currentUser, user, chosenThings, realmThings); realmData.transactions.Add(transaction); this.SendPacket(new StartTransactionPacket { transaction = transaction }); Messages.Message("Offer sent, waiting for confirmation", MessageSound.Silent); return(true); }
public static RealmPawn ToRealmPawn(Pawn pawn, RealmData realmData) { List <RealmSkillRecord> skills = new List <RealmSkillRecord>(); foreach (SkillRecord rec in pawn.skills.skills) { skills.Add(new RealmSkillRecord { skillDefLabel = rec.def.label, level = rec.Level, passion = rec.passion }); } List <RealmTrait> traits = new List <RealmTrait>(); foreach (Trait trait in pawn.story.traits.allTraits) { traits.Add(new RealmTrait { traitDefName = trait.def.defName, degree = trait.Degree }); } Color hairColor = pawn.story.hairColor; string[] name = pawn.Name.ToStringFull.Split(' '); // Rimworld adds ' before and after the second name if (name.Count() == 3) { name[1] = name[1].Replace("'", ""); } List <RealmThing> equipments = new List <RealmThing>(); foreach (ThingWithComps thing in pawn.equipment.AllEquipmentListForReading) { equipments.Add(realmData.ToRealmThing(thing)); } List <RealmThing> apparels = new List <RealmThing>(); foreach (Apparel apparel in pawn.apparel.WornApparel) { apparels.Add(realmData.ToRealmThing(apparel)); } List <RealmThing> inventory = new List <RealmThing>(); foreach (Thing thing in pawn.inventory.innerContainer) { inventory.Add(realmData.ToRealmThing(thing)); } return(new RealmPawn { name = name, kindDefName = pawn.kindDef.defName, ageBiologicalTicks = pawn.ageTracker.AgeBiologicalTicks, ageChronologicalTicks = pawn.ageTracker.AgeChronologicalTicks, crownType = pawn.story.crownType, hairDefName = pawn.story.hairDef.defName, gender = pawn.gender, skills = skills, traits = traits, childhoodKey = pawn.story.childhood.identifier, adulthoodKey = pawn.story.adulthood.identifier, melanin = pawn.story.melanin, hairColor = new float[] { hairColor.r, hairColor.g, hairColor.b, hairColor.a }, equipments = equipments, apparels = apparels, inventory = inventory }); }
// Token: 0x06000037 RID: 55 RVA: 0x000029D0 File Offset: 0x00000BD0 public static RealmPawn ToRealmPawn(Pawn pawn, RealmData realmData) { var realmPawn = new RealmPawn(); var array = pawn.Name.ToString().Split(' '); if (array.Length == 3) { array[1] = array[1].Replace("'", ""); } realmPawn.name = array; realmPawn.kindDefName = pawn.kindDef.defName; realmPawn.ageBiologicalTicks = pawn.ageTracker.AgeBiologicalTicks; realmPawn.ageChronologicalTicks = pawn.ageTracker.AgeChronologicalTicks; realmPawn.gender = pawn.gender; if (!pawn.health.hediffSet.HasHediff(PhiHediffDefOf.Phi_Key)) { pawn.health.AddHediff(PhiHediffDefOf.Phi_Key); pawn.health.hediffSet.GetFirstHediffOfDef(PhiHediffDefOf.Phi_Key).Severity = Rand.Range(0f, float.MaxValue); } if (pawn.skills != null) { var list = new List <RealmSkillRecord>(); foreach (var skillRecord in pawn.skills.skills) { list.Add(new RealmSkillRecord { skillDefLabel = skillRecord.def.label, level = skillRecord.Level, passion = skillRecord.passion }); } realmPawn.skills = list; } if (pawn.story != null) { var list2 = new List <RealmTrait>(); foreach (var trait in pawn.story.traits.allTraits) { list2.Add(new RealmTrait { traitDefName = trait.def.defName, degree = trait.Degree }); } realmPawn.traits = list2; var color = pawn.story.hairColor; realmPawn.hairColor = new[] { color.r, color.g, color.b, color.a }; realmPawn.bodyTypeDefName = pawn.story.bodyType.defName; realmPawn.crownType = pawn.story.crownType; realmPawn.hairDefName = pawn.story.hairDef.defName; realmPawn.childhoodKey = pawn.story.childhood.identifier; var realmPawn2 = realmPawn; var adulthood = pawn.story.adulthood; realmPawn2.adulthoodKey = adulthood?.identifier; realmPawn.melanin = pawn.story.melanin; } if (pawn.equipment != null) { var list3 = new List <RealmThing>(); foreach (var thing in pawn.equipment.AllEquipmentListForReading) { list3.Add(realmData.ToRealmThing(thing)); } realmPawn.equipments = list3; } if (pawn.apparel != null) { var list4 = new List <RealmThing>(); foreach (var thing2 in pawn.apparel.WornApparel) { list4.Add(realmData.ToRealmThing(thing2)); } realmPawn.apparels = list4; } if (pawn.inventory != null) { var list5 = new List <RealmThing>(); foreach (var thing3 in pawn.inventory.innerContainer) { list5.Add(realmData.ToRealmThing(thing3)); } realmPawn.inventory = list5; } var list6 = new List <RealmHediff>(); foreach (var hediff in pawn.health.hediffSet.hediffs) { var immunityRecord = pawn.health.immunity.GetImmunityRecord(hediff.def); var bodyPartIndex = -1; var part = hediff.Part; if (part?.def != null) { if (!pawn.RaceProps.body.AllParts.Contains(hediff.Part)) { var format = "Skipping bodypart {0}, not found in body."; var part2 = hediff.Part; object arg; if (part2 == null) { arg = null; } else { var def = part2.def; arg = def?.defName; } Log.Error(string.Format(format, arg)); continue; } bodyPartIndex = pawn.RaceProps.body.GetIndexOfPart(hediff.Part); } var list7 = list6; var realmHediff = new RealmHediff { hediffDefName = hediff.def.defName, bodyPartIndex = bodyPartIndex, immunity = immunityRecord?.immunity ?? float.NaN }; var source = hediff.source; realmHediff.sourceDefName = source?.defName; realmHediff.ageTicks = hediff.ageTicks; realmHediff.severity = hediff.Severity; list7.Add(realmHediff); realmPawn.hediffs = list6; } var unused = pawn.health.State; var dictionary = new Dictionary <string, int>(); if (pawn.training != null) { var list8 = new List <RealmTrainingRecord>(); foreach (var trainableDef in TrainableUtility.TrainableDefsInListOrder) { list8.Add(new RealmTrainingRecord { trainingDefLabel = trainableDef.defName, learned = pawn.training.HasLearned(trainableDef), wanted = pawn.training.GetWanted(trainableDef) }); } realmPawn.training = list8; } if (pawn.workSettings == null) { return(realmPawn); } foreach (var workTypeDef in DefDatabase <WorkTypeDef> .AllDefs) { dictionary.Add(workTypeDef.defName, pawn.workSettings.GetPriority(workTypeDef)); } return(realmPawn); }
public static RealmPawn ToRealmPawn(Pawn pawn, RealmData realmData) { List <RealmSkillRecord> skills = new List <RealmSkillRecord>(); foreach (SkillRecord rec in pawn.skills.skills) { skills.Add(new RealmSkillRecord { skillDefLabel = rec.def.label, level = rec.Level, passion = rec.passion }); } List <RealmTrait> traits = new List <RealmTrait>(); foreach (Trait trait in pawn.story.traits.allTraits) { traits.Add(new RealmTrait { traitDefName = trait.def.defName, degree = trait.Degree }); } Color hairColor = pawn.story.hairColor; string[] name = pawn.Name.ToStringFull.Split(' '); // Rimworld adds ' before and after the second name if (name.Count() == 3) { name[1] = name[1].Replace("'", ""); } List <RealmThing> equipments = new List <RealmThing>(); foreach (ThingWithComps thing in pawn.equipment.AllEquipmentListForReading) { equipments.Add(realmData.ToRealmThing(thing)); } List <RealmThing> apparels = new List <RealmThing>(); foreach (Apparel apparel in pawn.apparel.WornApparel) { apparels.Add(realmData.ToRealmThing(apparel)); } List <RealmThing> inventory = new List <RealmThing>(); foreach (Thing thing in pawn.inventory.innerContainer) { inventory.Add(realmData.ToRealmThing(thing)); } List <RealmHediff> hediffs = new List <RealmHediff>(); foreach (Hediff hediff in pawn.health.hediffSet.hediffs) { var immunity = pawn.health.immunity.GetImmunityRecord(hediff.def); var partId = -1; if (hediff.Part?.def != null) { if (!pawn.RaceProps.body.AllParts.Contains(hediff.Part)) { Log.Error(String.Format("Skipping bodypart {0}, not found in body.", hediff.Part?.def?.defName)); continue; } partId = pawn.RaceProps.body.GetIndexOfPart(hediff.Part); } hediffs.Add(new RealmHediff() { hediffDefName = hediff.def.defName, bodyPartIndex = partId, immunity = (immunity == null ? float.NaN : immunity.immunity), sourceDefName = hediff.source?.defName, ageTicks = hediff.ageTicks, severity = hediff.Severity }); } var healthState = (byte)pawn.health.State; var workPriorities = new Dictionary <string, int>(); foreach (var def in DefDatabase <WorkTypeDef> .AllDefs) { workPriorities.Add(def.defName, pawn.workSettings.GetPriority(def)); } return(new RealmPawn { name = name, kindDefName = pawn.kindDef.defName, ageBiologicalTicks = pawn.ageTracker.AgeBiologicalTicks, ageChronologicalTicks = pawn.ageTracker.AgeChronologicalTicks, crownType = pawn.story.crownType, hairDefName = pawn.story.hairDef.defName, gender = pawn.gender, skills = skills, traits = traits, childhoodKey = pawn.story.childhood.identifier, adulthoodKey = pawn.story.adulthood?.identifier, melanin = pawn.story.melanin, hairColor = new float[] { hairColor.r, hairColor.g, hairColor.b, hairColor.a }, equipments = equipments, apparels = apparels, inventory = inventory, hediffs = hediffs, healthState = healthState, workPriorities = workPriorities, }); }