More balancing, made door interacting sync properly

This commit is contained in:
Anuken
2018-01-09 11:36:35 -05:00
parent 5cac11b3fe
commit 4c16011480
13 changed files with 56 additions and 17 deletions
@@ -261,6 +261,11 @@ public class NetClient extends Module {
player.weaponLeft = (Weapon)Upgrade.getByID(packet.left);
player.weaponRight = (Weapon)Upgrade.getByID(packet.right);
});
Net.handle(BlockTapPacket.class, packet -> {
Tile tile = Vars.world.tile(packet.position);
tile.block().tapped(tile);
});
}
@Override
@@ -274,6 +279,12 @@ public class NetClient extends Module {
}
}
public void handleBlockTap(Tile tile){
BlockTapPacket packet = new BlockTapPacket();
packet.position = tile.packedPosition();
Net.send(packet, SendMode.tcp);
}
public void handleWeaponSwitch(){
WeaponSwitchPacket packet = new WeaponSwitchPacket();
packet.left = Vars.player.weaponLeft.id;
@@ -174,6 +174,13 @@ public class NetServer extends Module{
Net.sendExcept(player.clientid, packet, SendMode.tcp);
});
Net.handleServer(BlockTapPacket.class, packet -> {
Tile tile = Vars.world.tile(packet.position);
tile.block().tapped(tile);
Net.sendExcept(Net.getLastConnection(), packet, SendMode.tcp);
});
}
public void sendMessage(String message){
@@ -101,6 +101,10 @@ public class World extends Module{
public int height(){
return currentMap.getHeight();
}
public Tile tile(int packed){
return tile(packed % width(), packed / width());
}
public Tile tile(int x, int y){
if(tiles == null){
@@ -124,7 +124,7 @@ public abstract class BulletType extends BaseBulletType<Bullet>{
DamageArea.damage(!(b.owner instanceof Enemy), b.x, b.y, 25f, (int)(damage * 2f/3f));
}
},
flak = new BulletType(3f, 8) {
flak = new BulletType(2.9f, 8) {
public void init(Bullet b) {
b.velocity.scl(Mathf.random(0.6f, 1f));
@@ -6,6 +6,7 @@ import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.resource.ItemStack;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Configurable;
@@ -79,6 +80,11 @@ public class AndroidInput extends InputHandler{
}else if(!ui.configfrag.hasConfigMouse()){
ui.configfrag.hideConfig();
}
if(linked != null) {
linked.block().tapped(linked);
if(Net.active()) netClient.handleBlockTap(linked);
}
}
}
return false;
@@ -5,6 +5,7 @@ import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.core.GameState;
import io.anuke.mindustry.core.GameState.State;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.resource.Weapon;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Configurable;
@@ -96,6 +97,11 @@ public class DesktopInput extends InputHandler{
}else if(!ui.configfrag.hasConfigMouse()){
ui.configfrag.hideConfig();
}
if(linked != null) {
linked.block().tapped(linked);
if(Net.active()) netClient.handleBlockTap(linked);
}
}
if(Inputs.keyTap("break")){
@@ -123,4 +123,8 @@ public class Packets {
public int playerid;
public byte left, right;
}
public static class BlockTapPacket{
public int position;
}
}
@@ -36,6 +36,7 @@ public class Registrator {
KickPacket.class,
UpgradePacket.class,
WeaponSwitchPacket.class,
BlockTapPacket.class,
Class.class,
byte[].class,
@@ -49,7 +49,7 @@ public class Recipes {
new Recipe(weapon, WeaponBlocks.titanturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
new Recipe(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)),
new Recipe(crafting, ProductionBlocks.crucible, stack(Item.titanium, 40), stack(Item.steel, 40)),
new Recipe(crafting, ProductionBlocks.crucible, stack(Item.titanium, 50), stack(Item.steel, 50)),
new Recipe(crafting, ProductionBlocks.coalpurifier, stack(Item.steel, 10), stack(Item.iron, 10)),
new Recipe(crafting, ProductionBlocks.titaniumpurifier, stack(Item.steel, 30), stack(Item.iron, 30)),
new Recipe(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)),
@@ -60,9 +60,9 @@ public class Recipes {
new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)),
new Recipe(production, ProductionBlocks.irondrill, stack(Item.stone, 25)),
new Recipe(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)),
new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 40), stack(Item.steel, 50)),
new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)),
new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)),
new Recipe(production, ProductionBlocks.omnidrill, stack(Item.titanium, 30), stack(Item.dirium, 40)),
new Recipe(production, ProductionBlocks.omnidrill, stack(Item.titanium, 40), stack(Item.dirium, 40)),
new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30), stack(Item.iron, 30)),
@@ -106,6 +106,7 @@ public class Block{
public void drawPlace(int x, int y, int rotation, boolean valid){}
public void postInit(){}
public void placed(Tile tile){}
public void tapped(Tile tile){}
public void getStats(Array<String> list){
list.add("[gray]size: " + width + "x" + height);
@@ -203,6 +203,7 @@ public class ProductionBlocks{
weaponFactory = new WeaponFactory("weaponfactory"){
{
width = height = 2;
health = 250;
}
};
}
@@ -102,10 +102,10 @@ public class WeaponBlocks{
shootsound = "bigshot";
rotatespeed = 0.2f;
range = 120;
reload = 65f;
reload = 70f;
bullet = BulletType.flak;
shots = 3;
inaccuracy = 8f;
inaccuracy = 9f;
ammo = Item.coal;
ammoMultiplier = 5;
health = 110;
@@ -1,30 +1,28 @@
package io.anuke.mindustry.world.blocks.types.defense;
import static io.anuke.mindustry.Vars.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.math.Vector2;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.entities.TileEntity;
import io.anuke.mindustry.graphics.Fx;
import io.anuke.mindustry.world.Block;
import io.anuke.mindustry.world.Tile;
import io.anuke.mindustry.world.blocks.types.Configurable;
import io.anuke.mindustry.world.blocks.types.Wall;
import io.anuke.ucore.core.Draw;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Effects.Effect;
import io.anuke.ucore.entities.Entities;
import io.anuke.ucore.entities.SolidEntity;
import io.anuke.ucore.scene.ui.layout.Table;
import io.anuke.ucore.util.Tmp;
public class Door extends Wall implements Configurable{
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import static io.anuke.mindustry.Vars.player;
import static io.anuke.mindustry.Vars.tilesize;
public class Door extends Wall{
protected Effect openfx = Fx.dooropen;
protected Effect closefx = Fx.doorclose;
@@ -54,7 +52,7 @@ public class Door extends Wall implements Configurable{
}
@Override
public void buildTable(Tile tile, Table table){
public void tapped(Tile tile){
DoorEntity entity = tile.entity();
if(anyEntities(tile) && entity.open){