Refactoring
This commit is contained in:
@@ -12,6 +12,7 @@ import arc.util.Log.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.ai.*;
|
||||
import mindustry.async.*;
|
||||
import mindustry.audio.LoopControl;
|
||||
import mindustry.core.*;
|
||||
import mindustry.entities.*;
|
||||
import mindustry.game.*;
|
||||
@@ -167,7 +168,7 @@ public class Vars implements Loadable{
|
||||
public static GlobalData data;
|
||||
public static EntityCollisions collisions;
|
||||
public static DefaultWaves defaultWaves;
|
||||
public static LoopControl loops;
|
||||
public static mindustry.audio.LoopControl loops;
|
||||
public static Platform platform = new Platform(){};
|
||||
public static Mods mods;
|
||||
public static Schematics schematics;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package mindustry.game;
|
||||
package mindustry.audio;
|
||||
|
||||
import arc.*;
|
||||
import arc.audio.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package mindustry.game;
|
||||
package mindustry.audio;
|
||||
|
||||
import arc.*;
|
||||
import arc.audio.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package mindustry.game;
|
||||
package mindustry.audio;
|
||||
|
||||
import arc.audio.*;
|
||||
import arc.math.*;
|
||||
@@ -9,6 +9,7 @@ import arc.math.*;
|
||||
import arc.scene.ui.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.audio.MusicControl;
|
||||
import mindustry.content.*;
|
||||
import mindustry.core.GameState.*;
|
||||
import mindustry.entities.*;
|
||||
@@ -39,7 +40,7 @@ import static mindustry.Vars.*;
|
||||
*/
|
||||
public class Control implements ApplicationListener, Loadable{
|
||||
public Saves saves;
|
||||
public MusicControl music;
|
||||
public mindustry.audio.MusicControl music;
|
||||
public Tutorial tutorial;
|
||||
public InputHandler input;
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ public class GameState{
|
||||
|
||||
/** Note that being in a campaign does not necessarily mean having a sector. */
|
||||
public boolean isCampaign(){
|
||||
return rules.sector != null || rules.region != null;
|
||||
return rules.sector != null;
|
||||
}
|
||||
|
||||
public boolean hasSector(){
|
||||
|
||||
@@ -15,6 +15,7 @@ import arc.util.*;
|
||||
import arc.util.ArcAnnotate.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.annotations.Annotations.*;
|
||||
import mindustry.audio.SoundLoop;
|
||||
import mindustry.content.*;
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.entities.*;
|
||||
@@ -59,7 +60,7 @@ abstract class TileComp implements Posc, Teamc, Healthc, Tilec, Timerc, QuadTree
|
||||
|
||||
private transient float timeScale = 1f, timeScaleDuration;
|
||||
|
||||
private transient @Nullable SoundLoop sound;
|
||||
private transient @Nullable mindustry.audio.SoundLoop sound;
|
||||
|
||||
private transient boolean sleeping;
|
||||
private transient float sleepTime;
|
||||
|
||||
@@ -90,9 +90,9 @@ public class EventType{
|
||||
/** Called when a zone's requirements are met. */
|
||||
public static class ZoneRequireCompleteEvent{
|
||||
public final SectorPreset zoneMet, zoneForMet;
|
||||
public final Objective objective;
|
||||
public final Objectives.Objective objective;
|
||||
|
||||
public ZoneRequireCompleteEvent(SectorPreset zoneMet, SectorPreset zoneForMet, Objective objective){
|
||||
public ZoneRequireCompleteEvent(SectorPreset zoneMet, SectorPreset zoneForMet, Objectives.Objective objective){
|
||||
this.zoneMet = zoneMet;
|
||||
this.zoneForMet = zoneForMet;
|
||||
this.objective = objective;
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package mindustry.game;
|
||||
|
||||
import arc.*;
|
||||
import arc.files.*;
|
||||
import arc.math.*;
|
||||
import arc.struct.*;
|
||||
import arc.files.*;
|
||||
import arc.util.ArcAnnotate.*;
|
||||
import arc.util.io.*;
|
||||
import mindustry.*;
|
||||
import mindustry.content.*;
|
||||
@@ -22,7 +21,6 @@ public class GlobalData{
|
||||
private ObjectMap<ContentType, ObjectSet<String>> unlocked = new ObjectMap<>();
|
||||
private ObjectIntMap<Item> items = new ObjectIntMap<>();
|
||||
private Array<Satellite> satellites = new Array<>();
|
||||
private ObjectMap<String, MapRegion> regions = new ObjectMap<>();
|
||||
private boolean modified;
|
||||
|
||||
public GlobalData(){
|
||||
@@ -39,10 +37,6 @@ public class GlobalData{
|
||||
});
|
||||
}
|
||||
|
||||
public @Nullable MapRegion getRegion(String name){
|
||||
return regions.get(name);
|
||||
}
|
||||
|
||||
public void exportData(Fi file) throws IOException{
|
||||
Array<Fi> files = new Array<>();
|
||||
files.add(Core.settings.getSettingsFile());
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package mindustry.game;
|
||||
|
||||
/** Defines a special map that can be visited, loaded, and saved. */
|
||||
public abstract class MapRegion{
|
||||
|
||||
/** Name of the region. Used for lookup and save names. */
|
||||
public abstract String name();
|
||||
|
||||
public void load(){
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package mindustry.game;
|
||||
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.ArcAnnotate.*;
|
||||
import mindustry.game.Objectives.*;
|
||||
import mindustry.type.*;
|
||||
|
||||
/** Defines a specific objective for a game. */
|
||||
public interface Objective{
|
||||
|
||||
/** @return whether this objective is met. */
|
||||
boolean complete();
|
||||
|
||||
/** @return the string displayed when this objective is completed, in imperative form.
|
||||
* e.g. when the objective is 'complete 10 waves', this would display "complete 10 waves".
|
||||
* If this objective should not be displayed, should return null.*/
|
||||
@Nullable String display();
|
||||
|
||||
/** Build a display for this zone requirement.*/
|
||||
default void build(Table table){
|
||||
|
||||
}
|
||||
|
||||
default SectorPreset zone(){
|
||||
return this instanceof ZoneObjective ? ((ZoneObjective)this).zone : null;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package mindustry.game;
|
||||
|
||||
import arc.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.ArcAnnotate.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
@@ -93,4 +94,25 @@ public class Objectives{
|
||||
public abstract static class ZoneObjective implements Objective{
|
||||
public @NonNull SectorPreset zone;
|
||||
}
|
||||
|
||||
/** Defines a specific objective for a game. */
|
||||
public static interface Objective{
|
||||
|
||||
/** @return whether this objective is met. */
|
||||
boolean complete();
|
||||
|
||||
/** @return the string displayed when this objective is completed, in imperative form.
|
||||
* e.g. when the objective is 'complete 10 waves', this would display "complete 10 waves".
|
||||
* If this objective should not be displayed, should return null.*/
|
||||
@Nullable String display();
|
||||
|
||||
/** Build a display for this zone requirement.*/
|
||||
default void build(Table table){
|
||||
|
||||
}
|
||||
|
||||
default SectorPreset zone(){
|
||||
return this instanceof ZoneObjective ? ((ZoneObjective)this).zone : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,8 +62,6 @@ public class Rules{
|
||||
public int unitCap = 0;
|
||||
/** Sector for saves that have them.*/
|
||||
public @Nullable Sector sector;
|
||||
/** Region that save is on. Indicates campaign. TODO not implemented. */
|
||||
public @Nullable MapRegion region;
|
||||
/** Spawn layout. */
|
||||
public Array<SpawnGroup> spawns = new Array<>();
|
||||
/** Determines if there should be limited respawns. */
|
||||
|
||||
@@ -16,8 +16,7 @@ public class Schematic implements Publishable, Comparable<Schematic>{
|
||||
public final Array<Stile> tiles;
|
||||
public StringMap tags;
|
||||
public int width, height;
|
||||
public @Nullable
|
||||
Fi file;
|
||||
public @Nullable Fi file;
|
||||
/** Associated mod. If null, no mod is associated with this schematic. */
|
||||
public @Nullable LoadedMod mod;
|
||||
|
||||
|
||||
4
core/src/mindustry/game/Turns.java
Normal file
4
core/src/mindustry/game/Turns.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package mindustry.game;
|
||||
|
||||
public class Turns{
|
||||
}
|
||||
@@ -69,8 +69,7 @@ public class Universe{
|
||||
}
|
||||
|
||||
private void save(){
|
||||
Core.settings.put("utime", seconds);
|
||||
Core.settings.save();
|
||||
Core.settings.putSave("utime", seconds);
|
||||
}
|
||||
|
||||
private void load(){
|
||||
|
||||
@@ -86,10 +86,10 @@ public class ContentParser{
|
||||
desc.errored = Throwable::printStackTrace;
|
||||
return sound;
|
||||
});
|
||||
put(Objective.class, (type, data) -> {
|
||||
Class<? extends Objective> oc = data.has("type") ? resolve(data.getString("type"), "mindustry.game.Objectives") : ZoneWave.class;
|
||||
put(Objectives.Objective.class, (type, data) -> {
|
||||
Class<? extends Objectives.Objective> oc = data.has("type") ? resolve(data.getString("type"), "mindustry.game.Objectives") : ZoneWave.class;
|
||||
data.remove("type");
|
||||
Objective obj = make(oc);
|
||||
Objectives.Objective obj = make(oc);
|
||||
readFields(obj, data);
|
||||
return obj;
|
||||
});
|
||||
|
||||
@@ -17,9 +17,9 @@ import static mindustry.Vars.*;
|
||||
//TODO ? remove ?
|
||||
public class SectorPreset extends UnlockableContent{
|
||||
public @NonNull WorldGenerator generator;
|
||||
public @NonNull Objective configureObjective = new ZoneWave(this, 15);
|
||||
public @NonNull Objectives.Objective configureObjective = new ZoneWave(this, 15);
|
||||
public @NonNull Planet planet;
|
||||
public Array<Objective> requirements = new Array<>();
|
||||
public Array<Objectives.Objective> requirements = new Array<>();
|
||||
//TODO autogenerate
|
||||
public Array<Item> resources = new Array<>();
|
||||
|
||||
|
||||
@@ -273,7 +273,11 @@ public class PlanetDialog extends FloatingDialog{
|
||||
}
|
||||
|
||||
if(sec.hostility >= 0.02f){
|
||||
drawSelection(sec, Color.scarlet, 0.11f * sec.hostility);
|
||||
drawSelection(sec, Color.scarlet, 0.11f * sec.hostility, 0.0001f);
|
||||
}
|
||||
|
||||
if(sec.save != null){
|
||||
drawSelection(sec, Color.lime, 0.03f, 0.0009f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,11 +406,11 @@ public class PlanetDialog extends FloatingDialog{
|
||||
}
|
||||
|
||||
private void drawSelection(Sector sector){
|
||||
drawSelection(sector, Pal.accent, 0.04f);
|
||||
drawSelection(sector, Pal.accent, 0.04f, 0.001f);
|
||||
}
|
||||
|
||||
private void drawSelection(Sector sector, Color color, float length){
|
||||
float arad = outlineRad + 0.0001f;
|
||||
private void drawSelection(Sector sector, Color color, float stroke, float length){
|
||||
float arad = outlineRad + length;
|
||||
|
||||
for(int i = 0; i < sector.tile.corners.length; i++){
|
||||
Corner next = sector.tile.corners[(i + 1) % sector.tile.corners.length];
|
||||
@@ -416,8 +420,8 @@ public class PlanetDialog extends FloatingDialog{
|
||||
curr.v.scl(arad);
|
||||
sector.tile.v.scl(arad);
|
||||
|
||||
Tmp.v31.set(curr.v).sub(sector.tile.v).setLength(curr.v.dst(sector.tile.v) - length).add(sector.tile.v);
|
||||
Tmp.v32.set(next.v).sub(sector.tile.v).setLength(next.v.dst(sector.tile.v) - length).add(sector.tile.v);
|
||||
Tmp.v31.set(curr.v).sub(sector.tile.v).setLength(curr.v.dst(sector.tile.v) - stroke).add(sector.tile.v);
|
||||
Tmp.v32.set(next.v).sub(sector.tile.v).setLength(next.v.dst(sector.tile.v) - stroke).add(sector.tile.v);
|
||||
|
||||
batch.tri(curr.v, next.v, Tmp.v31, color);
|
||||
batch.tri(Tmp.v31, next.v, Tmp.v32, color);
|
||||
|
||||
@@ -63,13 +63,13 @@ public class ZoneInfoDialog extends FloatingDialog{
|
||||
cont.table(req -> {
|
||||
req.defaults().left();
|
||||
|
||||
Array<Objective> zones = zone.requirements.select(o -> !(o instanceof Unlock));
|
||||
Array<Objectives.Objective> zones = zone.requirements.select(o -> !(o instanceof Unlock));
|
||||
|
||||
if(!zones.isEmpty()){
|
||||
req.table(r -> {
|
||||
r.add("$complete").colspan(2).left();
|
||||
r.row();
|
||||
for(Objective o : zones){
|
||||
for(Objectives.Objective o : zones){
|
||||
r.image(Icon.terrain).padRight(4);
|
||||
r.add(o.display()).color(Color.lightGray);
|
||||
r.image(o.complete() ? Icon.ok : Icon.cancel, o.complete() ? Color.lightGray : Color.scarlet).padLeft(3);
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package mindustry.world.blocks.experimental;
|
||||
|
||||
import arc.math.*;
|
||||
import mindustry.gen.*;
|
||||
|
||||
import java.nio.*;
|
||||
|
||||
public class LogicExecutor{
|
||||
Instruction[] instructions;
|
||||
int[] registers = new int[256];
|
||||
ByteBuffer memory = ByteBuffer.allocate(1024 * 512);
|
||||
int counter;
|
||||
|
||||
void step(){
|
||||
@@ -29,16 +30,16 @@ public class LogicExecutor{
|
||||
class RegisterI implements Instruction{
|
||||
/** operation to perform */
|
||||
Op op;
|
||||
/** destination register */
|
||||
short dest;
|
||||
/** registers to take data from. -1 for no register. */
|
||||
short left, right;
|
||||
/** destination memory */
|
||||
int dest;
|
||||
/** memory to take data from. -1 for immediate values. */
|
||||
int left, right;
|
||||
/** left/right immediate values, only used if no registers are present. */
|
||||
int ileft, iright;
|
||||
double ileft, iright;
|
||||
|
||||
@Override
|
||||
public void exec(){
|
||||
registers[dest] = op.function.get(left == -1 ? ileft : registers[left], right == -1 ? iright : registers[right]);
|
||||
//memory.putDouble(dest, op.function.get(left == -1 ? ileft : registers[left], right == -1 ? iright : registers[right]));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +55,7 @@ public class LogicExecutor{
|
||||
|
||||
@Override
|
||||
public void exec(){
|
||||
registers[dest] = op.function.get(device(device), parameter);
|
||||
//registers[dest] = op.function.get(device(device), parameter);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,12 +90,12 @@ public class LogicExecutor{
|
||||
mul("*", (a, b) -> a * b),
|
||||
div("/", (a, b) -> a / b),
|
||||
mod("%", (a, b) -> a % b),
|
||||
pow("^", Mathf::pow),
|
||||
shl(">>", (a, b) -> a >> b),
|
||||
shr("<<", (a, b) -> a << b),
|
||||
or("or", (a, b) -> a | b),
|
||||
and("and", (a, b) -> a & b),
|
||||
xor("xor", (a, b) -> a ^ b);
|
||||
pow("^", Math::pow),
|
||||
shl(">>", (a, b) -> (int)a >> (int)b),
|
||||
shr("<<", (a, b) -> (int)a << (int)b),
|
||||
or("or", (a, b) -> (int)a | (int)b),
|
||||
and("and", (a, b) -> (int)a & (int)b),
|
||||
xor("xor", (a, b) -> (int)a ^ (int)b);
|
||||
|
||||
final OpLambda function;
|
||||
final String symbol;
|
||||
@@ -105,7 +106,7 @@ public class LogicExecutor{
|
||||
}
|
||||
|
||||
interface OpLambda{
|
||||
int get(int a, int b);
|
||||
double get(double a, double b);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user