Added title
This commit is contained in:
@@ -13,7 +13,7 @@ import com.badlogic.gdx.math.Rectangle;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
|
||||
import io.anuke.moment.ai.Pathfind;
|
||||
import io.anuke.moment.entities.BossEnemy;
|
||||
import io.anuke.moment.entities.Enemy;
|
||||
import io.anuke.moment.entities.TileEntity;
|
||||
import io.anuke.moment.resource.ItemStack;
|
||||
import io.anuke.moment.world.Tile;
|
||||
@@ -39,6 +39,10 @@ public class Control extends RendererModule<Moment>{
|
||||
cameraScale = 4f;
|
||||
setPixelation();
|
||||
buffers.add("shadow", (int) (Gdx.graphics.getWidth() / cameraScale), (int) (Gdx.graphics.getHeight() / cameraScale));
|
||||
|
||||
USound.load("shoot.wav", "place.wav", "explosion.wav", "enemyshoot.wav", "corexplode.wav", "break.wav", "spawn.wav", "flame.wav");
|
||||
UMusic.load("1.mp3", "2.mp3", "3.mp3");
|
||||
UMusic.shuffleAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -170,7 +174,7 @@ public class Control extends RendererModule<Moment>{
|
||||
|
||||
//TODO
|
||||
if(UInput.keyUp(Keys.G)){
|
||||
new BossEnemy(0).set(main.player.x, main.player.y).add();
|
||||
new Enemy(0).set(main.player.x, main.player.y).add();
|
||||
}
|
||||
//new FlameEnemy(0).set(main.player.x, main.player.y).add();
|
||||
|
||||
@@ -186,6 +190,7 @@ public class Control extends RendererModule<Moment>{
|
||||
|
||||
Effects.effect("place", roundx(), roundy());
|
||||
Effects.shake(2f, 2f);
|
||||
USound.play("place");
|
||||
|
||||
for(ItemStack stack : main.recipe.requirements){
|
||||
main.removeItem(stack);
|
||||
|
||||
@@ -12,9 +12,7 @@ import io.anuke.moment.resource.Recipe;
|
||||
import io.anuke.moment.world.Generator;
|
||||
import io.anuke.moment.world.Tile;
|
||||
import io.anuke.moment.world.TileType;
|
||||
import io.anuke.ucore.core.KeyBinds;
|
||||
import io.anuke.ucore.core.Settings;
|
||||
import io.anuke.ucore.core.UInput;
|
||||
import io.anuke.ucore.core.*;
|
||||
import io.anuke.ucore.entities.Effects;
|
||||
import io.anuke.ucore.entities.Entities;
|
||||
import io.anuke.ucore.modules.ModuleController;
|
||||
@@ -42,6 +40,7 @@ public class Moment extends ModuleController<Moment>{
|
||||
|
||||
public boolean playing = false;
|
||||
public boolean paused = false;
|
||||
public boolean showedTutorial = false;
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
@@ -82,9 +81,9 @@ public class Moment extends ModuleController<Moment>{
|
||||
@Override
|
||||
public void update(){
|
||||
if(!paused)
|
||||
super.update();
|
||||
super.update();
|
||||
|
||||
if(!playing) return;
|
||||
if(!playing || paused) return;
|
||||
|
||||
if(UInput.keyUp(Keys.Q))
|
||||
System.out.println("Enemies: " + Enemy.amount + " Wavetime: " + wavetime + " Wave: " + wave + " Wavespace: " + wavespace);
|
||||
@@ -99,7 +98,16 @@ public class Moment extends ModuleController<Moment>{
|
||||
|
||||
public void play(){
|
||||
wavetime = waveSpacing();
|
||||
playing = true;
|
||||
|
||||
if(showedTutorial){
|
||||
playing = true;
|
||||
paused = false;
|
||||
}else{
|
||||
playing = true;
|
||||
paused = true;
|
||||
get(UI.class).tutorial.show(get(UI.class).scene);
|
||||
showedTutorial = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void restart(){
|
||||
@@ -127,6 +135,7 @@ public class Moment extends ModuleController<Moment>{
|
||||
|
||||
public void coreDestroyed(){
|
||||
Effects.shake(5, 6);
|
||||
USound.play("corexplode");
|
||||
for(int i = 0; i < 16; i ++){
|
||||
Timers.run(i*2, ()->{
|
||||
Effects.effect("explosion", core.worldx()+Mathf.range(40), core.worldy()+Mathf.range(40));
|
||||
@@ -173,6 +182,7 @@ public class Moment extends ModuleController<Moment>{
|
||||
|
||||
public void runWave(){
|
||||
int amount = wave;
|
||||
USound.play("spawn");
|
||||
|
||||
for(int i = 0; i < amount; i ++){
|
||||
int pos = i;
|
||||
|
||||
@@ -26,7 +26,7 @@ public class UI extends SceneModule<Moment>{
|
||||
Table itemtable;
|
||||
PrefsDialog prefs;
|
||||
KeybindDialog keys;
|
||||
Dialog about, menu, restart;
|
||||
Dialog about, menu, restart, tutorial;
|
||||
|
||||
BooleanSupplier play = () -> {
|
||||
return main.playing;
|
||||
@@ -45,9 +45,16 @@ public class UI extends SceneModule<Moment>{
|
||||
}
|
||||
|
||||
void drawBackground(){
|
||||
//float w = gwidth();
|
||||
//float h = gheight();
|
||||
Draw.rect("player", 0, 0, 100, 100);
|
||||
|
||||
Draw.color();
|
||||
float w = gwidth();
|
||||
float h = gheight();
|
||||
Draw.tscl(1.5f);
|
||||
Draw.text("[DARK_GRAY]-( Mindustry )-", w/2, h-16);
|
||||
Draw.text("[#f1de60]-( Mindustry )-", w/2, h-10);
|
||||
|
||||
Draw.tscl(0.5f);
|
||||
//Draw.rect("conveyor", w/2, h/2, 1000, 1000);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -116,9 +123,39 @@ public class UI extends SceneModule<Moment>{
|
||||
keys = new KeybindDialog();
|
||||
|
||||
about = new Dialog("About");
|
||||
about.getContentTable().add("Made by Anuken for the" + "\nGDL Metal Monstrosity jam." + "\nTools used:");
|
||||
about.getContentTable().add("Made by [ROYAL]Anuken[] for the" + "\nGDL Metal Monstrosity jam.\n"
|
||||
+ "\nSources used:"
|
||||
+ "\n- [YELLOW]bfxr.com[] for sound effects"
|
||||
+ "\n- [RED]freemusicarchive.org[] for music"
|
||||
+ "\n- Music made by [GREEN]RoccoW[]"
|
||||
);
|
||||
about.addCloseButton();
|
||||
|
||||
tutorial = new Dialog("Tutorial", "dialog"){
|
||||
@Override
|
||||
public void hide(){
|
||||
super.hide();
|
||||
main.playing = true;
|
||||
main.paused = false;
|
||||
}
|
||||
};
|
||||
tutorial.addCloseButton();
|
||||
tutorial.getButtonTable().addButton("OK", ()->{
|
||||
tutorial.hide();
|
||||
});
|
||||
|
||||
tutorial.content().add(
|
||||
"[GREEN]Default Controls:[WHITE]\n[YELLOW][[WASD][] to move, [YELLOW][[R][] to rotate blocks."
|
||||
+ "\n[YELLOW][[R-MOUSE][] to destroy blocks, [YELLOW][[L-MOUSE][] to place them."
|
||||
+ "\n[YELLOW][[L-MOUSE][] to shoot."
|
||||
+ "\n\n[GOLD]Every 20 seconds, a new wave will appear."
|
||||
+ "\nBuild turrets to defend the core."
|
||||
+ "\nIf the core is destroyed, you lose the game."
|
||||
+ "\n[LIME]To collect building resources, \nmove them into the core with conveyors."
|
||||
);
|
||||
|
||||
tutorial.content().pad(8);
|
||||
|
||||
restart = new Dialog("The core was destroyed.", "dialog"){
|
||||
public Dialog show(Scene scene){
|
||||
super.show(scene);
|
||||
@@ -269,6 +306,7 @@ public class UI extends SceneModule<Moment>{
|
||||
table.add().size(size);
|
||||
}
|
||||
|
||||
//TODO rows
|
||||
//if((int)((float)recipes.size/rows+1) == 2){
|
||||
// table.row();
|
||||
//}
|
||||
@@ -283,64 +321,6 @@ public class UI extends SceneModule<Moment>{
|
||||
|
||||
row();
|
||||
add(stack).colspan(3);
|
||||
|
||||
/*
|
||||
for(Recipe r : Recipe.values()){
|
||||
Image image = new Image(Draw.region(r.result.name()));
|
||||
|
||||
get().add(image).size(40);
|
||||
|
||||
if(i % rows == rows-1)
|
||||
row();
|
||||
|
||||
i++;
|
||||
/*
|
||||
new button(r.result.name(), () -> {
|
||||
main.recipe = r;
|
||||
}){{
|
||||
get().clearChildren();
|
||||
get().pad(10f);
|
||||
get().add(image).size(42).padRight(4f);
|
||||
Table table = new Table();
|
||||
table.add(get().getLabel()).left();
|
||||
get().add(table);
|
||||
get().left();
|
||||
|
||||
ItemStack[] req = r.requirements;
|
||||
for(ItemStack stack : req){
|
||||
table.row();
|
||||
table.add("[YELLOW]" + stack.amount + "x " + stack.item.name()).left();
|
||||
}
|
||||
get().getLabel().setAlignment(Align.left);
|
||||
|
||||
String description = r.result.description();
|
||||
if(r.result.ammo != null){
|
||||
description += "\n[SALMON]Ammo: " + r.result.ammo.name();
|
||||
}
|
||||
|
||||
Table tiptable = new Table();
|
||||
tiptable.background("button");
|
||||
tiptable.add("[PURPLE]" + r.result.name(), 0.5f).left().padBottom(2f);
|
||||
tiptable.row();
|
||||
tiptable.add("[ORANGE]" + description).left();
|
||||
tiptable.pad(10f);
|
||||
|
||||
Tooltip tip = new Tooltip(tiptable);
|
||||
tip.setInstant(true);
|
||||
|
||||
get().addListener(tip);
|
||||
|
||||
Recipe current = r;
|
||||
get().update(() -> {
|
||||
get().setDisabled(!main.hasItems(current.requirements));
|
||||
});
|
||||
|
||||
}}.width(234f);
|
||||
|
||||
//row();
|
||||
}
|
||||
*/
|
||||
|
||||
get().pad(10f);
|
||||
|
||||
}}.right().bottom();
|
||||
@@ -394,7 +374,30 @@ public class UI extends SceneModule<Moment>{
|
||||
|
||||
get().setVisible(play);
|
||||
}}.end();
|
||||
|
||||
|
||||
|
||||
//+- table
|
||||
new table(){{
|
||||
aleft();
|
||||
abottom();
|
||||
Control c = main.get(Control.class);
|
||||
new button("+", ()->{
|
||||
if(c.cameraScale < 4f){
|
||||
c.cameraScale = 4f;
|
||||
c.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||
}
|
||||
}).size(40);
|
||||
|
||||
new button("-", ()->{
|
||||
if(c.cameraScale > 3f){
|
||||
c.cameraScale = 3f;
|
||||
c.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
|
||||
}
|
||||
}).size(40);
|
||||
|
||||
get().setVisible(play);
|
||||
}}.end();
|
||||
|
||||
//menu table
|
||||
new table(){{
|
||||
float w = 200;
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.anuke.moment.Moment;
|
||||
import io.anuke.moment.ai.Pathfind;
|
||||
import io.anuke.moment.world.TileType;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.USound;
|
||||
import io.anuke.ucore.entities.*;
|
||||
import io.anuke.ucore.util.Timers;
|
||||
|
||||
@@ -24,6 +25,7 @@ public class Enemy extends DestructibleEntity{
|
||||
public BulletType bullet = BulletType.small;
|
||||
public float length = 4;
|
||||
public float rotatespeed = 8f;
|
||||
public String shootsound = "enemyshoot";
|
||||
|
||||
public Enemy(int spawn){
|
||||
this.spawn = spawn;
|
||||
@@ -46,13 +48,16 @@ public class Enemy extends DestructibleEntity{
|
||||
target = TileType.findTileTarget(x, y, null, range, false);
|
||||
|
||||
if(target != null){
|
||||
if(Timers.get(this, reload))
|
||||
if(Timers.get(this, reload)){
|
||||
shoot();
|
||||
USound.play(shootsound);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void shoot(){
|
||||
|
||||
vector.set(length, 0).rotate(direction.angle());
|
||||
new Bullet(bullet, this, x+vector.x, y+vector.y, direction.angle()).add();
|
||||
}
|
||||
@@ -66,6 +71,7 @@ public class Enemy extends DestructibleEntity{
|
||||
public void onDeath(){
|
||||
Effects.effect("explosion", this);
|
||||
Effects.shake(3f, 4f);
|
||||
USound.play("explosion");
|
||||
remove();
|
||||
}
|
||||
|
||||
|
||||
@@ -6,11 +6,13 @@ public class FlameEnemy extends Enemy{
|
||||
|
||||
public FlameEnemy(int spawn) {
|
||||
super(spawn);
|
||||
speed = 0.3f;
|
||||
|
||||
speed = 0.35f;
|
||||
|
||||
maxhealth = 150;
|
||||
reload = 6;
|
||||
bullet = BulletType.flameshot;
|
||||
shootsound = "flame";
|
||||
|
||||
range = 40;
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.anuke.moment.Moment;
|
||||
import io.anuke.moment.UI;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.UInput;
|
||||
import io.anuke.ucore.core.USound;
|
||||
import io.anuke.ucore.entities.DestructibleEntity;
|
||||
import io.anuke.ucore.entities.Effects;
|
||||
import io.anuke.ucore.util.Angles;
|
||||
@@ -72,6 +73,7 @@ public class Player extends DestructibleEntity{
|
||||
|
||||
if(shooting && reload <= 0){
|
||||
weapon.shoot(this);
|
||||
USound.play("shoot");
|
||||
reload = weapon.reload;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.anuke.moment.ai.Pathfind;
|
||||
import io.anuke.moment.resource.Item;
|
||||
import io.anuke.moment.world.Tile;
|
||||
import io.anuke.moment.world.TileType;
|
||||
import io.anuke.ucore.core.USound;
|
||||
import io.anuke.ucore.entities.Effects;
|
||||
import io.anuke.ucore.entities.Entity;
|
||||
|
||||
@@ -40,6 +41,8 @@ public class TileEntity extends Entity{
|
||||
Pathfind.updatePath();
|
||||
Effects.shake(4f, 4f);
|
||||
Effects.effect("explosion", this);
|
||||
|
||||
USound.play("break");
|
||||
}
|
||||
|
||||
public void collision(Bullet other){
|
||||
|
||||
@@ -7,28 +7,28 @@ import com.badlogic.gdx.utils.Array;
|
||||
import io.anuke.moment.world.TileType;
|
||||
|
||||
public enum Recipe{
|
||||
stonewall(distribution, TileType.stonewall, stack(Item.stone, 4)),
|
||||
ironwall(distribution, TileType.ironwall, stack(Item.iron, 4)),
|
||||
steelwall(distribution, TileType.steelwall, stack(Item.steel, 4)),
|
||||
stonewall(distribution, TileType.stonewall, stack(Item.stone, 5)),
|
||||
ironwall(distribution, TileType.ironwall, stack(Item.iron, 5)),
|
||||
steelwall(distribution, TileType.steelwall, stack(Item.steel, 5)),
|
||||
conveyor(distribution, TileType.conveyor, stack(Item.stone, 1)),
|
||||
fastconveyor(distribution, TileType.steelconveyor, stack(Item.steel, 1)),
|
||||
router(distribution, TileType.router, stack(Item.stone, 3)),
|
||||
|
||||
|
||||
turret(defense, TileType.turret, stack(Item.stone, 4)),
|
||||
dturret(defense, TileType.doubleturret, stack(Item.stone, 6)),
|
||||
machineturret(defense, TileType.machineturret, stack(Item.iron, 10), stack(Item.stone, 6)),
|
||||
shotgunturret(defense, TileType.shotgunturret, stack(Item.iron, 10), stack(Item.steel, 8)),
|
||||
flameturret(defense, TileType.flameturret, stack(Item.iron, 12), stack(Item.steel, 12)),
|
||||
sniperturret(defense, TileType.sniperturret, stack(Item.iron, 15), stack(Item.steel, 20)),
|
||||
turret(defense, TileType.turret, stack(Item.stone, 8)),
|
||||
dturret(defense, TileType.doubleturret, stack(Item.stone, 12)),
|
||||
machineturret(defense, TileType.machineturret, stack(Item.iron, 15), stack(Item.stone, 20)),
|
||||
shotgunturret(defense, TileType.shotgunturret, stack(Item.iron, 15), stack(Item.steel, 24)),
|
||||
flameturret(defense, TileType.flameturret, stack(Item.iron, 25), stack(Item.steel, 18)),
|
||||
sniperturret(defense, TileType.sniperturret, stack(Item.iron, 30), stack(Item.steel, 20)),
|
||||
|
||||
healturret(defense, TileType.healturret, stack(Item.iron, 40)),
|
||||
megahealturret(defense, TileType.megahealturret, stack(Item.iron, 30), stack(Item.steel, 40)),
|
||||
|
||||
drill(production, TileType.stonedrill, stack(Item.stone, 5)),
|
||||
irondrill(production, TileType.irondrill, stack(Item.stone, 30)),
|
||||
coaldrill(production, TileType.coaldrill, stack(Item.stone, 30), stack(Item.iron, 30)),
|
||||
smelter(production, TileType.smelter, stack(Item.stone, 40), stack(Item.iron, 40));
|
||||
drill(production, TileType.stonedrill, stack(Item.stone, 6)),
|
||||
irondrill(production, TileType.irondrill, stack(Item.stone, 40)),
|
||||
coaldrill(production, TileType.coaldrill, stack(Item.stone, 40), stack(Item.iron, 40)),
|
||||
smelter(production, TileType.smelter, stack(Item.stone, 80), stack(Item.iron, 80));
|
||||
|
||||
public TileType result;
|
||||
public ItemStack[] requirements;
|
||||
|
||||
@@ -10,6 +10,7 @@ import io.anuke.moment.entities.*;
|
||||
import io.anuke.moment.entities.TileEntity.ItemPos;
|
||||
import io.anuke.moment.resource.Item;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.USound;
|
||||
import io.anuke.ucore.entities.*;
|
||||
import io.anuke.ucore.graphics.Hue;
|
||||
import io.anuke.ucore.util.Angles;
|
||||
@@ -330,11 +331,11 @@ public enum TileType{
|
||||
},
|
||||
flameturret(true, true, false){
|
||||
{
|
||||
range = 30f;
|
||||
reload = 6f;
|
||||
range = 35f;
|
||||
reload = 5f;
|
||||
bullet = BulletType.flame;
|
||||
ammo = Item.coal;
|
||||
health = 75;
|
||||
health = 85;
|
||||
}
|
||||
|
||||
public void update(Tile tile){
|
||||
@@ -380,7 +381,7 @@ public enum TileType{
|
||||
},
|
||||
shotgunturret(true, true, false){
|
||||
{
|
||||
range = 65;
|
||||
range = 50;
|
||||
reload = 40f;
|
||||
bullet = BulletType.iron;
|
||||
ammo = Item.iron;
|
||||
@@ -405,10 +406,11 @@ public enum TileType{
|
||||
|
||||
@Override
|
||||
void shoot(Tile tile){
|
||||
vector.set(0, 4).setAngle(tile.entity.rotation);
|
||||
|
||||
for(int i = 0; i < 6; i ++)
|
||||
Timers.run(i, ()->{
|
||||
bullet(tile, tile.entity.rotation + Mathf.range(6));
|
||||
Timers.run(i/1.5f, ()->{
|
||||
vector.set(4, 0).setAngle(tile.entity.rotation);
|
||||
bullet(tile, tile.entity.rotation + Mathf.range(16));
|
||||
});
|
||||
|
||||
}
|
||||
@@ -470,8 +472,8 @@ public enum TileType{
|
||||
megahealturret(true, true, false){
|
||||
{
|
||||
range = 30;
|
||||
reload = 25f;
|
||||
health = 60;
|
||||
reload = 20f;
|
||||
health = 80;
|
||||
}
|
||||
|
||||
public void update(Tile tile){
|
||||
@@ -562,6 +564,7 @@ public enum TileType{
|
||||
if(enemy != null){
|
||||
tile.entity.rotation = MathUtils.lerpAngleDeg(tile.entity.rotation, Angles.predictAngle(tile.worldx(), tile.worldy(), enemy.x, enemy.y, enemy.xvelocity, enemy.yvelocity, bullet.speed - 0.1f), 0.2f);
|
||||
if(Timers.get(tile, reload)){
|
||||
USound.play("shoot");
|
||||
shoot(tile);
|
||||
tile.entity.shots--;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user