Added synced server label + effect methods

This commit is contained in:
Anuken
2020-01-27 00:25:32 -05:00
parent cd1ed97e52
commit b9e8694e68
2 changed files with 43 additions and 5 deletions

View File

@@ -13,6 +13,7 @@ import mindustry.*;
import mindustry.core.GameState.*; import mindustry.core.GameState.*;
import mindustry.ctype.ContentType; import mindustry.ctype.ContentType;
import mindustry.entities.*; import mindustry.entities.*;
import mindustry.entities.Effects.*;
import mindustry.entities.traits.BuilderTrait.*; import mindustry.entities.traits.BuilderTrait.*;
import mindustry.entities.traits.*; import mindustry.entities.traits.*;
import mindustry.entities.type.*; import mindustry.entities.type.*;
@@ -271,6 +272,21 @@ public class NetClient implements ApplicationListener{
ui.showInfoPopup(message, duration, align, top, left, bottom, right); ui.showInfoPopup(message, duration, align, top, left, bottom, right);
} }
@Remote(variants = Variant.both)
public static void onLabel(String info, float duration, float worldx, float worldy){
ui.showLabel(info, duration, worldx, worldy);
}
@Remote(variants = Variant.both, unreliable = true)
public static void onEffect(Effect effect, float x, float y, float rotation, Color color){
Effects.effect(effect, color, x, y, rotation);
}
@Remote(variants = Variant.both)
public static void onEffectReliable(Effect effect, float x, float y, float rotation, Color color){
Effects.effect(effect, color, x, y, rotation);
}
@Remote(variants = Variant.both) @Remote(variants = Variant.both)
public static void onInfoToast(String message, float duration){ public static void onInfoToast(String message, float duration){
ui.showInfoToast(message, duration); ui.showInfoToast(message, duration);

View File

@@ -9,6 +9,7 @@ import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.input.*; import arc.input.*;
import arc.math.*; import arc.math.*;
import arc.math.geom.*;
import arc.scene.*; import arc.scene.*;
import arc.scene.actions.*; import arc.scene.actions.*;
import arc.scene.event.*; import arc.scene.event.*;
@@ -289,28 +290,49 @@ public class UI implements ApplicationListener, Loadable{
Core.scene.add(table); Core.scene.add(table);
} }
/** Shows a fading label at the top of the screen. */
public void showInfoToast(String info, float duration){ public void showInfoToast(String info, float duration){
Table table = new Table(); Table table = new Table();
table.setFillParent(true); table.setFillParent(true);
table.touchable(Touchable.disabled);
table.update(() -> { table.update(() -> {
if(state.is(State.menu)){ if(state.is(State.menu)) table.remove();
table.remove();
}
}); });
table.actions(Actions.delay(duration * 0.9f), Actions.fadeOut(duration * 0.1f, Interpolation.fade), Actions.remove()); table.actions(Actions.delay(duration * 0.9f), Actions.fadeOut(duration * 0.1f, Interpolation.fade), Actions.remove());
table.top().table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).padTop(10); table.top().table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).padTop(10);
Core.scene.add(table); Core.scene.add(table);
} }
/** Shows a label at some position on the screen. Does not fade. */
public void showInfoPopup(String info, float duration, int align, int top, int left, int bottom, int right){ public void showInfoPopup(String info, float duration, int align, int top, int left, int bottom, int right){
Table table = new Table(); Table table = new Table();
table.setFillParent(true); table.setFillParent(true);
table.update(() -> { if(state.is(State.menu)) table.remove(); }); table.touchable(Touchable.disabled);
table.update(() -> {
if(state.is(State.menu)) table.remove();
});
table.actions(Actions.delay(duration), Actions.remove()); table.actions(Actions.delay(duration), Actions.remove());
table.align(align).table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).pad(top,left,bottom,right); table.align(align).table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).pad(top, left, bottom, right);
Core.scene.add(table); Core.scene.add(table);
} }
/** Shows a label in the world. This label is behind everything. Does not fade. */
public void showLabel(String info, float duration, float worldx, float worldy){
Table table = new Table();
table.setFillParent(true);
table.touchable(Touchable.disabled);
table.update(() -> {
if(state.is(State.menu)) table.remove();
});
table.actions(Actions.delay(duration), Actions.remove());
table.align(Align.center).table(Styles.black3, t -> t.margin(4).add(info).style(Styles.outlineLabel)).update(t -> {
Vec2 v = Core.camera.project(worldx, worldy);
t.setPosition(v.x, v.y, Align.center);
});
//make sure it's at the back
Core.scene.root.addChildAt(0, table);
}
public void showInfo(String info){ public void showInfo(String info){
new Dialog(""){{ new Dialog(""){{
getCell(cont).growX(); getCell(cont).growX();