Initial upload

This commit is contained in:
Anuken
2017-04-29 21:25:59 -04:00
commit 74e0680841
200 changed files with 5268 additions and 0 deletions

View File

@@ -0,0 +1,194 @@
package io.anuke.moment;
import static io.anuke.moment.world.TileType.tilesize;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.utils.Align;
import io.anuke.moment.entities.Enemy;
import io.anuke.moment.resource.Item;
import io.anuke.moment.resource.ItemStack;
import io.anuke.moment.resource.Recipe;
import io.anuke.moment.world.Tile;
import io.anuke.moment.world.TileType;
import io.anuke.ucore.core.Draw;
import io.anuke.ucore.core.UGraphics;
import io.anuke.ucore.modules.SceneModule;
import io.anuke.ucore.scene.builders.*;
import io.anuke.ucore.scene.style.Styles;
import io.anuke.ucore.scene.ui.*;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Mathf;
public class UI extends SceneModule<Moment>{
Table itemtable;
public UI(){
Styles.styles.font().setUseIntegerPositions(false);
TooltipManager.getInstance().animations = false;
}
@Override
public void update(){
scene.getBatch().setProjectionMatrix(get(Control.class).camera.combined);
scene.getBatch().begin();
Tile tile = main.tiles[tilex()][tiley()];
if(tile.block() != TileType.air){
String error = tile.block().error(tile);
if(error != null){
Draw.tcolor(Color.SCARLET);
Draw.tscl(1/8f);
Draw.text(error, tile.worldx(), tile.worldy()+tilesize);
}else if(tile.block().name().contains("turret")){
Draw.tscl(1/8f);
Draw.tcolor(Color.GREEN);
Draw.text("Ammo: " + tile.entity.shots, tile.worldx(), tile.worldy()-tilesize);
}
Draw.tscl(0.5f);
Draw.clear();
}
scene.getBatch().end();
super.update();
}
@Override
public void init(){
build.begin(scene);
new table(){{
abottom();
aright();
new table(){{
get().background("button");
for(Recipe r : Recipe.values()){
Image image = new Image(Draw.region(r.result.name()));
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(8f);
Tooltip tip = new Tooltip(tiptable);
tip.setInstant(true);
get().addListener(tip);
Recipe current = r;
get().update(()->{
get().setDisabled(!main.hasItems(current.requirements));
//get().setTouchable(!main.hasItems(current.requirements) ? Touchable.disabled : Touchable.enabled);
});
}}.width(220f);
row();
}
get().pad(20f);
}}.right().bottom();
}}.end();
new table(){{
atop();
aleft();
itemtable = new table().top().left().get();
itemtable.background("button");
}}.end();
//wave table...
new table(){{
atop();
aright();
new table(){{
get().background("button");
new label("Wave 1"){{
get().setFontScale(1f);
get().update(()->{
get().setText("[YELLOW]Wave " + Moment.i.wave);
});
}}.left();
row();
new label("Time"){{
get().update(()->{
get().setText(Enemy.amount > 0 ?
Enemy.amount+" Enemies remaining" : "New wave in " + (int)(main.wavetime/60f));
});
}}.minWidth(150);
get().pad(8);
}};
}}.end();
updateItems();
build.end();
}
public void updateItems(){
itemtable.clear();
for(Item stack : main.items.keys()){
Image image = new Image(Draw.region("icon-" + stack.name()));
Label label = new Label(""+ main.items.get(stack));
label.setFontScale(1f);
itemtable.add(image).size(32);
itemtable.add(label);
itemtable.row();
}
}
float roundx(){
return Mathf.round2(UGraphics.mouseWorldPos().x, TileType.tilesize);
}
float roundy(){
return Mathf.round2(UGraphics.mouseWorldPos().y, TileType.tilesize);
}
int tilex(){
return Mathf.scl2(UGraphics.mouseWorldPos().x, TileType.tilesize);
}
int tiley(){
return Mathf.scl2(UGraphics.mouseWorldPos().y, TileType.tilesize);
}
}