1
0
mirror of https://github.com/Anuken/Mindustry.git synced 2024-11-13 07:15:28 +03:00

Better lighting

This commit is contained in:
Anuken 2020-02-28 13:44:03 -05:00
commit 04f8282821
10 changed files with 27 additions and 12 deletions

View File

@ -3,6 +3,7 @@
package="io.anuke.mindustry">
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<uses-feature android:name="android.hardware.type.pc" android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

View File

@ -21,7 +21,7 @@ public class SerializeProcess extends BaseProcessor{
/** Target class name. */
private static final String className = "Serialization";
/** Name of the base package to put all the generated classes. */
private static final String data = "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";
private static final String data = "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";
@Override
public void process(RoundEnvironment env) throws Exception{

View File

@ -801,7 +801,7 @@ item.coal.name = Carbón
item.graphite.name = Grafito
item.titanium.name = Titanio
item.thorium.name = Torio
item.silicon.name = Silicona
item.silicon.name = Silicio
item.plastanium.name = Plastanio
item.phase-fabric.name = Tejido de fase
item.surge-alloy.name = Aleación Eléctrica
@ -955,7 +955,7 @@ block.illuminator.name = Iluminador
block.illuminator.description = Una fuente de luz pequeña, compacta y configurable. Requiere poder para funcionar.
block.overflow-gate.name = Compuerta de Desborde
block.underflow-gate.name = Compuerta de Subdesbordamiento
block.silicon-smelter.name = Horno para Silicona
block.silicon-smelter.name = Horno para Silicio
block.phase-weaver.name = Tejedor de Fase
block.pulverizer.name = Pulverizador
block.cryofluidmixer.name = Mezclador de Criogénicos
@ -1136,11 +1136,11 @@ unit.revenant.description = Una unidad aérea pesada con misiles.
block.message.description = Almacena un mensaje. Se utiliza para comunicarse entre aliados.
block.graphite-press.description = Comprime carbón en piezas de grafito puro.
block.multi-press.description = Una versión mejorada de la prensa de grafito. Utiliza agua y energía para procesar carbón rápida y eficientemente.
block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicona.
block.silicon-smelter.description = Reduce la arena con carbón puro. Produce silicio.
block.kiln.description = Funde arena y plomo en metacristal. Requiere cantidades pequeñas de energía.
block.plastanium-compressor.description = Produce plastanio con aceite y titanio.
block.phase-weaver.description = Produce tejido de fase del torio radioactivo y altas cantidades de arena.
block.alloy-smelter.description = Produce aleación eléctrica con titanio, plomo, silicona y cobre.
block.alloy-smelter.description = Produce aleación eléctrica con titanio, plomo, silicio y cobre.
block.cryofluidmixer.description = Combina agua y titanio en líquido criogénico, que es mucho más eficiente para enfriar.
block.blast-mixer.description = Usa aceite para transformar pirotita en un objeto menos inflamable pero más explosivo: compuesto explosivo.
block.pyratite-mixer.description = Mezcla carbón, plomo y arena en pirotita altamente inflamable.
@ -1170,7 +1170,7 @@ block.surge-wall.description = El bloque defensivo más fuerte.\nTiene una peque
block.surge-wall-large.description = El bloque defensivo más fuerte.\nTiene una pequeña probabilidad de disparar rayos al atacante.\nOcupa múltiplies casillas.
block.door.description = Una puerta pequeña que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.
block.door-large.description = Una puerta grande que puede ser abierta y cerrada tocándola.\nSi está abirta, los enemigos pueden moverse y disparar a través de ella.\nOcupa múltiples casillas.
block.mender.description = Repara bloques cercanos periódicamente. Mantiene a las defensas reparadas entre oleadas. Puede usar silicona opcionalmente para mejorar el alcance y la eficiencia.
block.mender.description = Repara bloques cercanos periódicamente. Mantiene a las defensas reparadas entre oleadas. Puede usar silicio opcionalmente para mejorar el alcance y la eficiencia.
block.mend-projector.description = Regenera edificios cercanos periódcamente.
block.overdrive-projector.description = Aumenta la velocidad de edificios cercanos como taladros y transportadores.
block.force-projector.description = Crea un área de fuerza hexagonal alrededor de él, protegiendo edificios y unidades dentro de él del daño de las balas.

View File

@ -39,7 +39,6 @@ be.check = 檢查是否有新的更新
schematic = 藍圖
schematic.add = 儲存藍圖...
schematics = 藍圖
schematic.replace = 具有該名稱的藍圖已經存在。是否要取代它?
schematic.import = 匯入藍圖...
schematic.exportfile = 匯出檔案
schematic.importfile = 匯入檔案
@ -508,7 +507,7 @@ zone.saltFlats.description = 鹽沼毗連著沙漠。在這裡幾乎找不到多
zone.craters.description = 這個殞坑中心積蓄著水。這是一場舊戰爭的遺跡。奪回該地區。收集沙子。燒製玻璃。抽水來冷卻砲塔和鑽頭。
zone.ruinousShores.description = 穿過荒地,就是海岸線。這個地點曾經駐紮了海防陣線。現在它們已經所剩無幾。只有最基本的防禦結構沒有被破壞,其他的一切都成了殘骸。\n繼續向外擴張。重新發現那些科技。
zone.stainedMountains.description = 內陸的更深處是群山,還未被孢子所污染。\n提取在該區域蘊藏豐富的鈦並學習如何使用它們。\n\n這裡的存在著更為強大的敵人。不要給他們時間派出最強的部隊。
zone.overgrowth.description = 這個地區更靠近孢子的來源,因此已經生長過度了。\n敵人在這裡建立了哨所。建立泰坦機甲。破壞它並取回失去的東西
zone.overgrowth.description = 這個地區更靠近孢子的來源,因此已經生長過度了。\n敵人在這裡建立了哨所。建立泰坦機甲。破壞它並取回失落的事物
zone.tarFields.description = 位於山脈和沙漠之間的產油區外緣是少數幾個有可用焦油儲量的地區之一。\n雖然被遺棄了該地區附近還是有著一些危險的敵人。不要低估它們。\n\n[lightgray]如果可能的話,研究原油加工技術。
zone.desolateRift.description = 一個非常危險的區域。資源豐富,但空間很小。毀滅的風險很高。請盡快離開。不要被敵人攻擊之間的長時間間隔所欺騙。
zone.nuclearComplex.description = 以前生產和加工釷的設施已變成廢墟。\n[lightgray]研究釷及其多種用途。\n\n敵人在這裡的數量眾多不斷的偵查入侵者。
@ -530,7 +529,7 @@ settings.clear.confirm = 您確定要清除數據嗎?\n此操作無法撤回
settings.clearall.confirm = [scarlet]警告![]\n這將清除所有數據包括存檔、地圖、解鎖和熱鍵綁定。\n按「是」後遊戲將刪除所有數據並自動退出。
paused = [accent]〈已暫停〉
clear = 清除
banned = [scarlet]Banned
banned = [scarlet]已被封禁
yes =
no =
info.title = 資訊
@ -664,7 +663,7 @@ setting.borderlesswindow.name = 無邊框窗口[lightgray](可能需要重啟
setting.fps.name = 顯示FPS與Ping
setting.blockselectkeys.name = 顯示方塊選擇快捷鍵
setting.vsync.name = 垂直同步
setting.pixelate.name = 像素化[lightgray](會關閉動畫)
setting.pixelate.name = 像素化
setting.minimap.name = 顯示小地圖
setting.position.name = 顯示玩家位置
setting.musicvol.name = 音樂音量
@ -789,6 +788,7 @@ rules.title.unit = 單位
rules.title.experimental = 實驗中
rules.lighting = 光照
rules.ambientlight = 環境光照
rules.solarpowermultiplier = 太陽能倍數
content.item.name = 物品
content.liquid.name = 液體

View File

@ -20,8 +20,11 @@ const extend = function(classType, params){
const run = method => new java.lang.Runnable(){run: method}
const boolf = method => new Boolf(){get: method}
const boolp = method => new Boolp(){get: method}
const floatf = method => new Floatf(){get: method}
const floatp = method => new Floatp(){get: method}
const cons = method => new Cons(){get: method}
const prov = method => new Prov(){get: method}
const func = method => new Func(){get: method}
const newEffect = (lifetime, renderer) => new Effects.Effect(lifetime, new Effects.EffectRenderer({render: renderer}))
Call = Packages.mindustry.gen.Call
const Calls = Call //backwards compat

View File

@ -45,6 +45,8 @@ public class NetServer implements ApplicationListener{
if(state.rules.pvp){
//find team with minimum amount of players and auto-assign player to that.
TeamData re = state.teams.getActive().min(data -> {
if(state.rules.waveTeam == data.team || !data.team.active()) return Integer.MAX_VALUE;
int count = 0;
for(Playerc other : players){
if(other.team() == data.team && other != player){

View File

@ -184,13 +184,14 @@ public class LightRenderer{
Draw.color();
buffer.beginDraw(Color.clear);
Draw.blend(Blending.normal);
Gl.blendEquationSeparate(Gl.funcAdd, Gl.max);
for(Runnable run : lights){
run.run();
}
Draw.reset();
Draw.blend();
buffer.endDraw();
Gl.blendEquationSeparate(Gl.funcAdd, Gl.funcAdd);
Draw.color();
Shaders.light.ambient.set(state.rules.ambientLight);

View File

@ -568,6 +568,7 @@ public class Administration{
player = null;
type = null;
tile = null;
block = null;
}
}

View File

@ -231,6 +231,8 @@ public class ChatFragment extends Table{
fadetime += 1f;
fadetime = Math.min(fadetime, messagesShown) + 1f;
if(scrollPos > 0) scrollPos++;
}
private static class ChatMessage{

View File

@ -53,6 +53,11 @@ public class OverflowGate extends Block{
}
if(entity.lastItem != null){
if(entity.lastInput == null){
entity.lastItem = null;
return;
}
entity.time += 1f / speed * Time.delta();
Tile target = getTileTarget(tile, entity.lastItem, entity.lastInput, false);