diff --git a/annotations/src/io/anuke/annotations/Annotations.java b/annotations/src/io/anuke/annotations/Annotations.java
index 4f8381d177..feb4dc0ec9 100644
--- a/annotations/src/io/anuke/annotations/Annotations.java
+++ b/annotations/src/io/anuke/annotations/Annotations.java
@@ -5,10 +5,6 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-/**
- * Goal: To create a system to send events to the server from the client and vice versa, without creating a new packet type each time.
- * These events may optionally also trigger on the caller client/server as well.
- */
public class Annotations{
/** Marks a class as serializable.*/
diff --git a/core/src/io/anuke/mindustry/maps/TutorialSector.java b/core/src/io/anuke/mindustry/maps/TutorialSector.java
index ec9f59e778..6206865b6c 100644
--- a/core/src/io/anuke/mindustry/maps/TutorialSector.java
+++ b/core/src/io/anuke/mindustry/maps/TutorialSector.java
@@ -4,8 +4,14 @@ import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.content.UnitTypes;
import io.anuke.mindustry.content.blocks.*;
+import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.maps.generation.Generation;
+import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
import io.anuke.mindustry.maps.missions.*;
+import io.anuke.mindustry.type.Item;
+import io.anuke.mindustry.world.Tile;
+import io.anuke.mindustry.world.blocks.Floor;
+import io.anuke.ucore.core.Events;
import static io.anuke.mindustry.Vars.*;
@@ -13,52 +19,68 @@ import static io.anuke.mindustry.Vars.*;
public class TutorialSector{
public static Array getMissions(){
- int x = sectorSize/2, y = sectorSize/2;
+ //int x = sectorSize/2, y = sectorSize/2;
return Array.with(
- new ItemMission(Items.copper, 30).setMessage("$tutorial.begin"),
+ new ItemMission(Items.copper, 30).setMessage("$tutorial.begin"),
- new BlockLocMission(ProductionBlocks.mechanicalDrill, 55, 62).setMessage("$tutorial.drill"),
+ new BlockLocMission(ProductionBlocks.mechanicalDrill, 55, 62).setMessage("$tutorial.drill"),
- new BlockLocMission(DistributionBlocks.conveyor, 57, 62, 0).setShowComplete(false).setMessage("$tutorial.conveyor"),
- new BlockLocMission(DistributionBlocks.conveyor, 58, 62, 0).setShowComplete(false),
- new BlockLocMission(DistributionBlocks.conveyor, 59, 62, 0).setShowComplete(false),
- new BlockLocMission(DistributionBlocks.conveyor, 60, 62, 3).setShowComplete(false),
+ new BlockLocMission(DistributionBlocks.conveyor, 57, 62, 0).setShowComplete(false).setMessage("$tutorial.conveyor"),
+ new BlockLocMission(DistributionBlocks.conveyor, 58, 62, 0).setShowComplete(false),
+ new BlockLocMission(DistributionBlocks.conveyor, 59, 62, 0).setShowComplete(false),
+ new BlockLocMission(DistributionBlocks.conveyor, 60, 62, 3).setShowComplete(false),
- new ItemMission(Items.copper, 50).setMessage("$tutorial.morecopper"),
+ new ItemMission(Items.copper, 50).setMessage("$tutorial.morecopper"),
- new BlockLocMission(TurretBlocks.duo, 56, 59).setMessage("$tutorial.turret"),
- new BlockLocMission(ProductionBlocks.mechanicalDrill, 55, 60).setMessage("$tutorial.drillturret"),
+ new BlockLocMission(TurretBlocks.duo, 56, 59).setMessage("$tutorial.turret"),
+ new BlockLocMission(ProductionBlocks.mechanicalDrill, 55, 60).setMessage("$tutorial.drillturret"),
- new WaveMission(5).setMessage("$tutorial.waves"),
- new ExpandMission(1, 0),
- new ItemMission(Items.lead, 30).setMessage("$tutorial.lead"),
- new ItemMission(Items.copper, 150).setMessage("$tutorial.morecopper"),
+ new WaveMission(5).setMessage("$tutorial.waves"),
- new BlockMission(CraftingBlocks.smelter).setMessage("$tutorial.smelter"),
- new ItemMission(Items.densealloy, 30).setMessage("$tutorial.densealloy"),
- new BlockMission(CraftingBlocks.siliconsmelter).setMessage("$tutorial.siliconsmelter"),
- new BlockMission(PowerBlocks.combustionGenerator).setMessage("$tutorial.generator"),
- new BlockMission(PowerBlocks.powerNode).setMessage("$tutorial.node"),
-
- new ItemMission(Items.silicon, 30).setMessage("$tutorial.silicon"),
-
- new BlockMission(UnitBlocks.daggerFactory).setMessage("$tutorial.daggerfactory"),
- new UnitMission(UnitTypes.dagger).setMessage("$tutorial.dagger"),
- new ExpandMission(-1, 0),
- new BattleMission(){
- public void generate(Generation gen){}
-
- @Override
- public boolean isComplete(){
- return false;
+ new ActionMission(() -> {
+ Array- ores = Array.with(Items.copper, Items.coal, Items.lead);
+ GenResult res = new GenResult();
+ for(int x = 0; x < world.width(); x++){
+ for(int y = 0; y < world.height(); y++){
+ Tile tile = world.tile(x, y);
+ world.generator().generateTile(res, 0, 0, x, y, true, null, ores);
+ if(!tile.hasCliffs()){
+ tile.setFloor((Floor) res.floor);
+ }
}
+ }
+ Events.fire(new WorldLoadEvent());
+ }),
- public void onBegin(){
- super.onBegin();
- generateBase();
- }
- }.setMessage("$tutorial.battle")
+ new ItemMission(Items.lead, 30).setMessage("$tutorial.lead"),
+ new ItemMission(Items.copper, 150).setMessage("$tutorial.morecopper"),
+
+ new BlockMission(CraftingBlocks.smelter).setMessage("$tutorial.smelter"),
+ new ItemMission(Items.densealloy, 30).setMessage("$tutorial.densealloy"),
+ new BlockMission(CraftingBlocks.siliconsmelter).setMessage("$tutorial.siliconsmelter"),
+ new BlockMission(PowerBlocks.combustionGenerator).setMessage("$tutorial.generator"),
+ new BlockMission(PowerBlocks.powerNode).setMessage("$tutorial.node"),
+
+ new ItemMission(Items.silicon, 30).setMessage("$tutorial.silicon"),
+
+ new BlockMission(UnitBlocks.daggerFactory).setMessage("$tutorial.daggerfactory"),
+ new UnitMission(UnitTypes.dagger).setMessage("$tutorial.dagger"),
+ new ExpandMission(1, 0),
+ new BattleMission(){
+ public void generate(Generation gen){
+ }
+
+ @Override
+ public boolean isComplete(){
+ return false;
+ }
+
+ public void onBegin(){
+ super.onBegin();
+ generateBase();
+ }
+ }.setMessage("$tutorial.battle")
);
}
@@ -67,7 +89,7 @@ public class TutorialSector{
}
private static void generateBase(){
- int x = sectorSize/2, y = sectorSize/2;
+ int x = sectorSize/2, y = sectorSize + sectorSize/2;
world.setBlock(world.tile(x, y), StorageBlocks.core, waveTeam);
// world.setBlock(world.tile(x + 1, y + 2), TurretBlocks.duo, waveTeam);
//world.setBlock(world.tile(x + 1, y - 2), TurretBlocks.duo, waveTeam);
diff --git a/core/src/io/anuke/mindustry/maps/missions/ActionMission.java b/core/src/io/anuke/mindustry/maps/missions/ActionMission.java
index 99a0cc5a8f..5f45a4e3d5 100644
--- a/core/src/io/anuke/mindustry/maps/missions/ActionMission.java
+++ b/core/src/io/anuke/mindustry/maps/missions/ActionMission.java
@@ -6,7 +6,7 @@ import io.anuke.mindustry.game.GameMode;
import static io.anuke.mindustry.Vars.threads;
/**A mission which simply runs a single action and is completed instantly.*/
-public abstract class ActionMission extends Mission{
+public class ActionMission extends Mission{
protected Runnable runner;
public ActionMission(Runnable runner){