using MoonSharp.Interpreter; using Ripple_Data.Base.Actions.Base; using Ripple_Data.Base.Waves; using Ripple_Data.Control; using Ripple_Data.Control.Commands; using Ripple_Data.Quests; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace Ripple_Data.Base.Actors { [MoonSharpUserData] [Serializable] public class Group : Actor, IRelationalData, IIdentifyable { public List<Affinity>? Affinities { get; private set; } public Dictionary<Group, Status> GroupAffiliation { get; private set; } = new Dictionary<Group, Status>(); public Dictionary<ISocial, Status> Opinions { get; private set; } = new Dictionary<ISocial, Status>(); public new int ID { get; private set; } public new IIdentifyable Self { get; private set; } public new List<GameRule> Rules { get; private set; } public new List<Condition> Conditions {get; private set; } public Group(string name, List<Affinity>? affinities, Dictionary<Group, Status> groupAffiliation, Dictionary<ISocial, Status> opinions, int iD, List<GameRule> rules, List<Condition> conditions, string? description = null) : base(name, rules, conditions, description) { Affinities = affinities; GroupAffiliation = groupAffiliation; Opinions = opinions; ID = GiveID(this); Self = this; Rules = rules; Conditions = conditions; GetInstance(this).Objects.Add(this); } public Group() : base() { ID = 0; Rules = new List<GameRule>(); Conditions = new List<Condition>(); Self = this; } public new void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("Name", Name); info.AddValue("ID", ID); info.AddValue("Description", Description); info.AddValue("Opinions", Opinions); info.AddValue("GroupAffiliation", GroupAffiliation); info.AddValue("Affinities", Affinities); info.AddValue("Rules", Rules); info.AddValue("Conditions", Conditions); } } }