aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollowerCycleButtonWidget.java
blob: 4408dbd54e004137f4a1a4918628e133b80616bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package gregtech.common.gui.modularui.widget;

import java.util.function.Consumer;
import java.util.function.Function;

import gregtech.api.gui.modularui.IDataFollowerWidget;
import gregtech.api.util.ISerializableObject;

/**
 * Determines button state with cover data.
 */
public class CoverDataFollowerCycleButtonWidget<T extends ISerializableObject> extends CoverCycleButtonWidget
    implements IDataFollowerWidget<T, Integer> {

    private Function<T, Integer> dataToStateGetter;

    public CoverDataFollowerCycleButtonWidget() {
        super();
        setGetter(() -> 0); // fake getter; used only for init
        setSynced(false, false);
    }

    @Override
    public CoverDataFollowerCycleButtonWidget<T> setDataToStateGetter(Function<T, Integer> dataToStateGetter) {
        this.dataToStateGetter = dataToStateGetter;
        return this;
    }

    @Override
    public CoverDataFollowerCycleButtonWidget<T> setStateSetter(Consumer<Integer> setter) {
        super.setSetter(setter);
        return this;
    }

    @Override
    public void updateState(T data) {
        setState(dataToStateGetter.apply(data), false, false);
    }
}