using System; using System.Collections.Generic; using System.IO; using wf; namespace MaidStatus.Old { public class Status { public Status(Status status) { this.mainStatus = status; this.relation = Relation.Contact; this.sexual = new Sexual(); this.flags_ = new Dictionary(); this.flags = new ReadOnlyDictionary(this.flags_); } public Relation relation { get { return this.relation_; } set { this.relation_ = value; if ((this.relation_ == Relation.Tonus || this.relation_ == Relation.Contact) && this.mainStatus.relation != Relation.Contact) { this.mainStatus.relation = Relation.Contact; } else if (this.relation_ == Relation.Trust && this.mainStatus.relation != Relation.Trust) { this.mainStatus.relation = Relation.Trust; } else if ((this.relation_ == Relation.Slave || this.relation_ == Relation.Lover) && this.mainStatus.relation != Relation.Lover) { this.mainStatus.relation = Relation.Lover; } this.relation_ = value; } } public int frustration { get { return (int)this.frustration_; } set { this.frustration_ = (short)wf.Math.RoundMinMax(value, 0, 100); } } public ReadOnlyDictionary flags { get; private set; } public void SetFlag(string flagName, int value) { if (!this.flags_.ContainsKey(flagName)) { this.flags_.Add(flagName, value); } else { this.flags_[flagName] = value; } } public void AddFlag(string flagName, int value) { if (!this.flags_.ContainsKey(flagName)) { this.flags_.Add(flagName, value); } else { Dictionary dictionary; (dictionary = this.flags_)[flagName] = dictionary[flagName] + value; } } public int GetFlag(string flagName) { return (!this.flags_.ContainsKey(flagName)) ? 0 : this.flags_[flagName]; } public bool RemoveFlag(string flagName) { return this.flags_.ContainsKey(flagName) && this.flags_.Remove(flagName); } public void Serialize(BinaryWriter binary) { binary.Write(this.employmentElapsedDay); binary.Write((short)this.condition); this.sexual.Serialize(binary); binary.Write((short)this.relation); binary.Write((short)this.frustration); binary.Write(this.isMarriage); binary.Write(this.isNewWife); binary.Write(this.isRentalMaid); binary.Write((short)this.flags_.Count); foreach (KeyValuePair keyValuePair in this.flags_) { binary.Write(keyValuePair.Key); binary.Write(keyValuePair.Value); } } public void Deserialize(BinaryReader binary, int version) { this.employmentElapsedDay = binary.ReadInt32(); this.condition = (Condition)binary.ReadInt16(); this.sexual.Deserialize(binary, version); this.relation = (Relation)binary.ReadInt16(); this.frustration_ = binary.ReadInt16(); this.isMarriage = binary.ReadBoolean(); this.isNewWife = binary.ReadBoolean(); this.isRentalMaid = binary.ReadBoolean(); int num = (int)binary.ReadInt16(); this.flags_.Clear(); for (int i = 0; i < num; i++) { string key = binary.ReadString(); int value = binary.ReadInt32(); this.flags_.Add(key, value); } } public readonly Status mainStatus; public int employmentElapsedDay; public Condition condition; public Sexual sexual; public bool isMarriage; public bool isNewWife; public bool isRentalMaid; private Relation relation_; private short frustration_; private Dictionary flags_; } }