superyuuki / yuukomponent

component framework for block game
2 stars 0 forks source link

slot inclusion #9

Closed github-actions[bot] closed 2 years ago

github-actions[bot] commented 2 years ago

slot inclusion

https://github.com/superyuuki/yuukomponent/blob/e52c2e25f5d73623e3e7ae5b4368777a2a62c37b/yuukomponent-core/src/main/java/com/superyuuki/yuukomponent/core/config/component/ConfigComponentLoader.java#L24


package com.superyuuki.yuukomponent.core.config.component;

import com.superyuuki.yuukomponent.api.behavior.Behavior;
import com.superyuuki.yuukomponent.api.component.Component;
import com.superyuuki.yuukomponent.api.component.UUIDProvider;
import com.superyuuki.yuukomponent.api.config.BehaviorLoader;
import com.superyuuki.yuukomponent.api.config.ComponentLoader;
import com.superyuuki.yuukomponent.api.config.data.DataSection;
import com.superyuuki.yuukomponent.core.behavior.CombinantBehavior;
import com.superyuuki.yuukomponent.core.component.MappedComponent;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.UUID;

public class ConfigComponentLoader implements ComponentLoader {

    private final UUIDProvider provider;

    private final DataSection valueDefs;
    private final List<BehaviorLoader> behaviorDefs;

    //TODO slot inclusion
    public ConfigComponentLoader(UUIDProvider provider, DataSection valueDefs, List<BehaviorLoader> behaviorDefs) {
        this.provider = provider;
        this.valueDefs = valueDefs;
        this.behaviorDefs = behaviorDefs;
    }

    @Override
    public Component load() {
        return loadWithChildren(new ArrayList<>());
    }

    @Override
    public Component loadWithChildren(Collection<Component> forcedChildren) {
        UUID uuid = provider.provide();

        List<Behavior> make = new ArrayList<>();

        for (BehaviorLoader behavior : behaviorDefs) {
            make.add(behavior.instantiate(uuid, valueDefs));
        }

        return new MappedComponent(uuid, new CombinantBehavior(make), forcedChildren);
    }
}

536e056c952a790d51310281d3a14eafc486091b