public void Link(ClassWorkshopInitializerComponent initializer) { if (Instance.Extends != null) { Extending = initializer.RelationFromClassType((ClassType)Instance.Extends); Extending._extendedBy.Add(this); } }
public WorkshopInitializedCombo(ClassWorkshopInitializerComponent initializer, ClassType instance, TypeArgCombo combo, int id) { Combo = combo; ID = id; _initializer = initializer; _instance = instance; // todo // StackLength = _instance.Attributes.StackLength; StackLength = instance.Variables.Select(v => v.GetAssigner().StackDelta()).Sum(); }
public ClassProviderComboCollection(ClassWorkshopInitializerComponent initializer, ClassInitializer provider, IReadOnlyList <TypeArgCombo> combos) { Provider = provider; _initializer = initializer; foreach (var combo in combos) { // Instantiate the combo. var instance = (ClassType)Provider.GetInstance(new GetInstanceInfo(combo.TypeArgs)); // No group was created yet. var group = GetCompatible(combo); if (group == null) { group = new WorkshopInitializedCombo(initializer, instance, combo, initializer.AssignID()); _initializedCombos.Add(group); } // Create the relation. initializer.AddRelation(new ClassWorkshopRelation(group, instance)); } }