示例#1
0
 public void Link(ClassWorkshopInitializerComponent initializer)
 {
     if (Instance.Extends != null)
     {
         Extending = initializer.RelationFromClassType((ClassType)Instance.Extends);
         Extending._extendedBy.Add(this);
     }
 }
示例#2
0
 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();
 }
示例#3
0
        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));
            }
        }