-
-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: constructor and destructor has its own network node
- Loading branch information
1 parent
366a7bb
commit 4cf3962
Showing
7 changed files
with
156 additions
and
86 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
73 changes: 73 additions & 0 deletions
73
...a/com/refinedmods/refinedstorage/common/constructordestructor/ConstructorNetworkNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package com.refinedmods.refinedstorage.common.constructordestructor; | ||
|
||
import com.refinedmods.refinedstorage.api.network.impl.node.SimpleNetworkNode; | ||
import com.refinedmods.refinedstorage.api.network.node.NetworkNodeActor; | ||
import com.refinedmods.refinedstorage.api.network.node.SchedulingMode; | ||
import com.refinedmods.refinedstorage.api.resource.ResourceKey; | ||
import com.refinedmods.refinedstorage.api.storage.Actor; | ||
import com.refinedmods.refinedstorage.common.api.constructordestructor.ConstructorStrategy; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import javax.annotation.Nullable; | ||
|
||
import net.minecraft.world.entity.player.Player; | ||
|
||
public class ConstructorNetworkNode extends SimpleNetworkNode { | ||
private final Actor actor = new NetworkNodeActor(this); | ||
private final List<ConstructorTask> tasks = new ArrayList<>(); | ||
|
||
@Nullable | ||
private Player player; | ||
@Nullable | ||
private ConstructorStrategy strategy; | ||
@Nullable | ||
private SchedulingMode schedulingMode; | ||
|
||
ConstructorNetworkNode(final long energyUsage) { | ||
super(energyUsage); | ||
} | ||
|
||
@Override | ||
public void doWork() { | ||
super.doWork(); | ||
if (network == null || !isActive() || schedulingMode == null) { | ||
return; | ||
} | ||
schedulingMode.execute(tasks); | ||
} | ||
|
||
void setPlayer(@Nullable final Player player) { | ||
this.player = player; | ||
} | ||
|
||
void setSchedulingMode(@Nullable final SchedulingMode schedulingMode) { | ||
this.schedulingMode = schedulingMode; | ||
} | ||
|
||
void setFilters(final List<ResourceKey> filters) { | ||
this.tasks.clear(); | ||
this.tasks.addAll(filters.stream().map(ConstructorTask::new).toList()); | ||
} | ||
|
||
void setStrategy(@Nullable final ConstructorStrategy strategy) { | ||
this.strategy = strategy; | ||
} | ||
|
||
private class ConstructorTask implements SchedulingMode.ScheduledTask { | ||
private final ResourceKey filter; | ||
|
||
private ConstructorTask(final ResourceKey filter) { | ||
this.filter = filter; | ||
} | ||
|
||
@Override | ||
public boolean run() { | ||
if (strategy == null || network == null || player == null) { | ||
return false; | ||
} | ||
strategy.apply(filter, actor, player, network); | ||
return true; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
57 changes: 57 additions & 0 deletions
57
...va/com/refinedmods/refinedstorage/common/constructordestructor/DestructorNetworkNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
package com.refinedmods.refinedstorage.common.constructordestructor; | ||
|
||
import com.refinedmods.refinedstorage.api.network.impl.node.SimpleNetworkNode; | ||
import com.refinedmods.refinedstorage.api.network.node.NetworkNodeActor; | ||
import com.refinedmods.refinedstorage.api.resource.ResourceKey; | ||
import com.refinedmods.refinedstorage.api.resource.filter.Filter; | ||
import com.refinedmods.refinedstorage.api.resource.filter.FilterMode; | ||
import com.refinedmods.refinedstorage.api.storage.Actor; | ||
import com.refinedmods.refinedstorage.common.api.constructordestructor.DestructorStrategy; | ||
|
||
import java.util.Set; | ||
import javax.annotation.Nullable; | ||
|
||
import net.minecraft.world.entity.player.Player; | ||
|
||
public class DestructorNetworkNode extends SimpleNetworkNode { | ||
private final Actor actor = new NetworkNodeActor(this); | ||
private final Filter filter = new Filter(); | ||
|
||
@Nullable | ||
private DestructorStrategy strategy; | ||
@Nullable | ||
private Player player; | ||
|
||
DestructorNetworkNode(final long energyUsage) { | ||
super(energyUsage); | ||
} | ||
|
||
void setStrategy(@Nullable final DestructorStrategy strategy) { | ||
this.strategy = strategy; | ||
} | ||
|
||
void setPlayer(@Nullable final Player player) { | ||
this.player = player; | ||
} | ||
|
||
FilterMode getFilterMode() { | ||
return filter.getMode(); | ||
} | ||
|
||
void setFilterMode(final FilterMode mode) { | ||
filter.setMode(mode); | ||
} | ||
|
||
void setFilters(final Set<ResourceKey> filters) { | ||
filter.setFilters(filters); | ||
} | ||
|
||
@Override | ||
public void doWork() { | ||
super.doWork(); | ||
if (strategy == null || network == null || !isActive() || player == null) { | ||
return; | ||
} | ||
strategy.apply(filter, actor, this::getNetwork, player); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.