8
.gitignore
vendored
8
.gitignore
vendored
@@ -19,7 +19,6 @@ logs/
|
|||||||
/annotations/out/
|
/annotations/out/
|
||||||
/net/build/
|
/net/build/
|
||||||
/tools/build/
|
/tools/build/
|
||||||
/core/build/
|
|
||||||
/tests/build/
|
/tests/build/
|
||||||
/server/build/
|
/server/build/
|
||||||
changelog
|
changelog
|
||||||
@@ -143,13 +142,6 @@ nb-configuration.xml
|
|||||||
/local.properties
|
/local.properties
|
||||||
.gradle/
|
.gradle/
|
||||||
gradle-app.setting
|
gradle-app.setting
|
||||||
/build/
|
|
||||||
/android/build/
|
|
||||||
/core/build/
|
|
||||||
/desktop/build/
|
|
||||||
/html/build/
|
|
||||||
/ios/build/
|
|
||||||
/ios-moe/build/
|
|
||||||
|
|
||||||
## OS Specific
|
## OS Specific
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
sourceSets.main.java.srcDirs = ["src/main/java/"]
|
sourceSets.main.java.srcDirs = ["src/main/java/"]
|
||||||
sourceSets.main.resources.srcDirs = ["src/main/resources/"]
|
sourceSets.main.resources.srcDirs = ["src/main/resources/"]
|
||||||
|
|||||||
@@ -115,12 +115,12 @@ public abstract class BaseProcessor extends AbstractProcessor{
|
|||||||
return ClassName.get(c).box();
|
return ClassName.get(c).box();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static TypeVariableName getTVN(TypeParameterElement element) {
|
public static TypeVariableName getTVN(TypeParameterElement element){
|
||||||
String name = element.getSimpleName().toString();
|
String name = element.getSimpleName().toString();
|
||||||
List<? extends TypeMirror> boundsMirrors = element.getBounds();
|
List<? extends TypeMirror> boundsMirrors = element.getBounds();
|
||||||
|
|
||||||
List<TypeName> boundsTypeNames = new ArrayList<>();
|
List<TypeName> boundsTypeNames = new ArrayList<>();
|
||||||
for (TypeMirror typeMirror : boundsMirrors) {
|
for (TypeMirror typeMirror : boundsMirrors){
|
||||||
boundsTypeNames.add(TypeName.get(typeMirror));
|
boundsTypeNames.add(TypeName.get(typeMirror));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,11 +137,11 @@ public abstract class BaseProcessor extends AbstractProcessor{
|
|||||||
if(imports != null){
|
if(imports != null){
|
||||||
String rawSource = file.toString();
|
String rawSource = file.toString();
|
||||||
Seq<String> result = new Seq<>();
|
Seq<String> result = new Seq<>();
|
||||||
for (String s : rawSource.split("\n", -1)) {
|
for(String s : rawSource.split("\n", -1)){
|
||||||
result.add(s);
|
result.add(s);
|
||||||
if (s.startsWith("package ")) {
|
if (s.startsWith("package ")){
|
||||||
result.add("");
|
result.add("");
|
||||||
for (String i : imports) {
|
for (String i : imports){
|
||||||
result.add(i);
|
result.add(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -935,4 +935,4 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ void main(){
|
|||||||
vec4 bloom = texture2D(u_texture1, v_texCoords) * BloomIntensity;
|
vec4 bloom = texture2D(u_texture1, v_texCoords) * BloomIntensity;
|
||||||
original = original * (vec4(1.0) - bloom);
|
original = original * (vec4(1.0) - bloom);
|
||||||
gl_FragColor = original + bloom;
|
gl_FragColor = original + bloom;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ void main(){
|
|||||||
gl_FragColor = vec4(0.0);
|
gl_FragColor = vec4(0.0);
|
||||||
}
|
}
|
||||||
//gl_FragColor = (texture2D(u_texture0, v_texCoords) - vec4(threshold.r)) * threshold.g;
|
//gl_FragColor = (texture2D(u_texture0, v_texCoords) - vec4(threshold.r)) * threshold.g;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ void main(){
|
|||||||
vec4 bloom = texture2D(u_texture1, v_texCoords) * BloomIntensity;
|
vec4 bloom = texture2D(u_texture1, v_texCoords) * BloomIntensity;
|
||||||
original = original * (vec4(1.0) - bloom);
|
original = original * (vec4(1.0) - bloom);
|
||||||
gl_FragColor = original + bloom;
|
gl_FragColor = original + bloom;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,4 +23,4 @@ void main(){
|
|||||||
v_texCoords4 = a_texCoord0 + f;
|
v_texCoords4 = a_texCoord0 + f;
|
||||||
|
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ void main(){
|
|||||||
vec4 tex = texture2D(u_texture0, v_texCoords);
|
vec4 tex = texture2D(u_texture0, v_texCoords);
|
||||||
vec3 colors = (tex.rgb - threshold.r) * threshold.g * tex.a;
|
vec3 colors = (tex.rgb - threshold.r) * threshold.g * tex.a;
|
||||||
gl_FragColor = vec4(colors, tex.a);
|
gl_FragColor = vec4(colors, tex.a);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ varying vec2 v_texCoords;
|
|||||||
void main(){
|
void main(){
|
||||||
v_texCoords = a_texCoord0;
|
v_texCoords = a_texCoord0;
|
||||||
gl_Position = a_position;
|
gl_Position = a_position;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ varying mediump vec2 v_texCoords;
|
|||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
gl_FragColor.rgb = (texture2D(u_texture0, v_texCoords).rgb - vec3(threshold.x)) * threshold.y;
|
gl_FragColor.rgb = (texture2D(u_texture0, v_texCoords).rgb - vec3(threshold.x)) * threshold.y;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1342,4 +1342,4 @@ block.cyclone.description = A large anti-air and anti-ground turret. Fires explo
|
|||||||
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
|
block.spectre.description = A massive dual-barreled cannon. Shoots large armor-piercing bullets at air and ground targets.
|
||||||
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
|
block.meltdown.description = A massive laser cannon. Charges and fires a persistent laser beam at nearby enemies. Requires coolant to operate.
|
||||||
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
|
block.repair-point.description = Continuously heals the closest damaged unit in its vicinity.
|
||||||
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
block.segment.description = Damages and destroys incoming projectiles. Laser projectiles are not targeted.
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ uniform vec3 u_rcampos;
|
|||||||
uniform mat4 u_invproj;
|
uniform mat4 u_invproj;
|
||||||
uniform vec3 u_light;
|
uniform vec3 u_light;
|
||||||
|
|
||||||
vec2 rayIntersection(vec3 p, vec3 dir, float radius) {
|
vec2 rayIntersection(vec3 p, vec3 dir, float radius){
|
||||||
float b = dot(p, dir);
|
float b = dot(p, dir);
|
||||||
float c = dot(p, p) - radius * radius;
|
float c = dot(p, p) - radius * radius;
|
||||||
|
|
||||||
float d = b * b - c;
|
float d = b * b - c;
|
||||||
if (d < 0.0) {
|
if(d < 0.0){
|
||||||
return vec2(MAX, -MAX);
|
return vec2(MAX, -MAX);
|
||||||
}
|
}
|
||||||
d = sqrt(d);
|
d = sqrt(d);
|
||||||
@@ -43,7 +43,7 @@ vec2 rayIntersection(vec3 p, vec3 dir, float radius) {
|
|||||||
return vec2(near, far);
|
return vec2(near, far);
|
||||||
}
|
}
|
||||||
|
|
||||||
float miePhase(float g, float c, float cc) {
|
float miePhase(float g, float c, float cc){
|
||||||
float gg = g * g;
|
float gg = g * g;
|
||||||
|
|
||||||
float a = (1.0 - gg) * (1.0 + cc);
|
float a = (1.0 - gg) * (1.0 + cc);
|
||||||
@@ -55,20 +55,20 @@ float miePhase(float g, float c, float cc) {
|
|||||||
return 1.5 * a / b;
|
return 1.5 * a / b;
|
||||||
}
|
}
|
||||||
|
|
||||||
float rayleighPhase(float cc) {
|
float rayleighPhase(float cc){
|
||||||
return 0.75 * (1.0 + cc);
|
return 0.75 * (1.0 + cc);
|
||||||
}
|
}
|
||||||
|
|
||||||
float density(vec3 p) {
|
float density(vec3 p){
|
||||||
return exp(-(length(p) - u_innerRadius) * (4.0 / (u_outerRadius - u_innerRadius)));
|
return exp(-(length(p) - u_innerRadius) * (4.0 / (u_outerRadius - u_innerRadius)));
|
||||||
}
|
}
|
||||||
|
|
||||||
float optic(vec3 p, vec3 q) {
|
float optic(vec3 p, vec3 q){
|
||||||
vec3 step = (q - p) / fNumOutScatter;
|
vec3 step = (q - p) / fNumOutScatter;
|
||||||
vec3 v = p + step * 0.5;
|
vec3 v = p + step * 0.5;
|
||||||
|
|
||||||
float sum = 0.0;
|
float sum = 0.0;
|
||||||
for (int i = 0; i < numOutScatter; i++) {
|
for(int i = 0; i < numOutScatter; i++){
|
||||||
sum += density(v);
|
sum += density(v);
|
||||||
v += step;
|
v += step;
|
||||||
}
|
}
|
||||||
@@ -76,7 +76,7 @@ float optic(vec3 p, vec3 q) {
|
|||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 inScatter(vec3 o, vec3 dir, vec2 e, vec3 l) {
|
vec3 inScatter(vec3 o, vec3 dir, vec2 e, vec3 l){
|
||||||
float len = (e.y - e.x) / fNumInScatter;
|
float len = (e.y - e.x) / fNumInScatter;
|
||||||
vec3 step = dir * len;
|
vec3 step = dir * len;
|
||||||
vec3 p = o + dir * e.x;
|
vec3 p = o + dir * e.x;
|
||||||
@@ -115,4 +115,4 @@ void main(){
|
|||||||
vec3 result = inScatter(eye, dir, e, l);
|
vec3 result = inScatter(eye, dir, e, l);
|
||||||
|
|
||||||
gl_FragColor = vec4(result, 1.0);
|
gl_FragColor = vec4(result, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,4 @@ void main(){
|
|||||||
v_position = a_position;
|
v_position = a_position;
|
||||||
v_model = u_model;
|
v_model = u_model;
|
||||||
gl_Position = u_projection*u_model*a_position;
|
gl_Position = u_projection*u_model*a_position;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ bool cont(vec2 T, vec2 v){
|
|||||||
id(T + vec2(step, 0) * v, base) || id(T + vec2(-step, 0) * v, base));
|
id(T + vec2(step, 0) * v, base) || id(T + vec2(-step, 0) * v, base));
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main(){
|
||||||
|
|
||||||
vec2 t = v_texCoords.xy;
|
vec2 t = v_texCoords.xy;
|
||||||
|
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ uniform samplerCube u_cubemap;
|
|||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
gl_FragColor = textureCube(u_cubemap, v_texCoords);
|
gl_FragColor = textureCube(u_cubemap, v_texCoords);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ const float SCALE = 50.0;
|
|||||||
void main(){
|
void main(){
|
||||||
v_texCoords = a_position;
|
v_texCoords = a_position;
|
||||||
gl_Position = u_proj * vec4(a_position * SCALE, 1.0);
|
gl_Position = u_proj * vec4(a_position * SCALE, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ uniform sampler2D u_texture;
|
|||||||
void main(){
|
void main(){
|
||||||
vec4 c = texture2D(u_texture, v_texCoords);
|
vec4 c = texture2D(u_texture, v_texCoords);
|
||||||
gl_FragColor = v_color * mix(c, vec4(v_mix_color.rgb, c.a), v_mix_color.a);
|
gl_FragColor = v_color * mix(c, vec4(v_mix_color.rgb, c.a), v_mix_color.a);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ uniform mat4 u_trans;
|
|||||||
varying vec4 v_col;
|
varying vec4 v_col;
|
||||||
varying vec4 v_position;
|
varying vec4 v_position;
|
||||||
|
|
||||||
void main() {
|
void main(){
|
||||||
gl_Position = u_proj * u_trans * a_position;
|
gl_Position = u_proj * u_trans * a_position;
|
||||||
v_col = a_color;
|
v_col = a_color;
|
||||||
v_position = a_position;
|
v_position = a_position;
|
||||||
|
|||||||
@@ -29,4 +29,4 @@ void main(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
gl_FragColor = color;
|
gl_FragColor = color;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,4 +20,4 @@ void main(){
|
|||||||
color.rgb = texture2D(u_stars, coords/NSCALE + vec2(-0.1, -0.1) + u_ccampos / CAMSCALE).rgb;
|
color.rgb = texture2D(u_stars, coords/NSCALE + vec2(-0.1, -0.1) + u_ccampos / CAMSCALE).rgb;
|
||||||
|
|
||||||
gl_FragColor = color;
|
gl_FragColor = color;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,4 +24,4 @@ void main(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
gl_FragColor = color;
|
gl_FragColor = color;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ bool cont(vec2 T, vec2 v){
|
|||||||
id(T + vec2(step, -step) * v, base) || id(T + vec2(-step, step) * v, base));
|
id(T + vec2(step, -step) * v, base) || id(T + vec2(-step, step) * v, base));
|
||||||
}
|
}
|
||||||
|
|
||||||
void main() {
|
void main(){
|
||||||
vec2 coords = (v_texCoords.xy - u_uv) / (u_uv2 - u_uv);
|
vec2 coords = (v_texCoords.xy - u_uv) / (u_uv2 - u_uv);
|
||||||
vec2 t = v_texCoords.xy;
|
vec2 t = v_texCoords.xy;
|
||||||
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
vec2 v = vec2(1.0/u_texsize.x, 1.0/u_texsize.y);
|
||||||
|
|||||||
@@ -34,4 +34,4 @@ void main(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
gl_FragColor = vec4(color.rgb, 1.0);
|
gl_FragColor = vec4(color.rgb, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,4 +209,4 @@ public class Effect{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void hitTile(Bullet b, Building tile, float initialHealth){
|
public void hitTile(Bullet b, Building tile, float initialHealth){
|
||||||
if(makeFire) {
|
if(makeFire){
|
||||||
Fires.create(tile.tile);
|
Fires.create(tile.tile);
|
||||||
}
|
}
|
||||||
hit(b);
|
hit(b);
|
||||||
@@ -249,7 +249,7 @@ public abstract class BulletType extends Content{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void init(Bullet b){
|
public void init(Bullet b){
|
||||||
if(pierceCap >= 1) {
|
if(pierceCap >= 1){
|
||||||
pierce = true;
|
pierce = true;
|
||||||
//pierceBuilding is not enabled by default, because a bullet may want to *not* pierce buildings
|
//pierceBuilding is not enabled by default, because a bullet may want to *not* pierce buildings
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ abstract class BulletComp implements Timedc, Damagec, Hitboxc, Teamc, Posc, Draw
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if(type.pierceCap != -1 && collided.size >= type.pierceCap) {
|
if(type.pierceCap != -1 && collided.size >= type.pierceCap){
|
||||||
remove();
|
remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,4 +73,4 @@ abstract class LaunchCoreComp implements Drawc, Timedc{
|
|||||||
Fx.rocketSmokeLarge.at(cx() + Mathf.range(r), cy() + Mathf.range(r), fin());
|
Fx.rocketSmokeLarge.at(cx() + Mathf.range(r), cy() + Mathf.range(r), fin());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,4 +26,4 @@ public class InverseKinematics{
|
|||||||
return dist > 0 && dist < lengthA;
|
return dist > 0 && dist < lengthA;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -198,4 +198,4 @@ public class LightRenderer{
|
|||||||
|
|
||||||
lights.clear();
|
lights.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ public class LoadRenderer implements Disposable{
|
|||||||
new Bar("s_proc#", OS.cores / 16f, OS.cores < 4),
|
new Bar("s_proc#", OS.cores / 16f, OS.cores < 4),
|
||||||
new Bar("c_aprog", () -> assets != null, () -> assets.getProgress(), () -> false),
|
new Bar("c_aprog", () -> assets != null, () -> assets.getProgress(), () -> false),
|
||||||
new Bar("g_vtype", graphics.getGLVersion().type == Type.GLES ? 0.5f : 1f, graphics.getGLVersion().type == Type.GLES),
|
new Bar("g_vtype", graphics.getGLVersion().type == Type.GLES ? 0.5f : 1f, graphics.getGLVersion().type == Type.GLES),
|
||||||
new Bar("s_mem#", () -> true, () -> Core.app.getJavaHeap() / 1024f / 1024f / 200f, () -> Core.app.getJavaHeap() > 1024*1024*110),
|
new Bar("s_mem#", () -> true, () -> Core.app.getJavaHeap() / 1024f / 1024f / 200f, () -> Core.app.getJavaHeap() > 1024 * 1024 * 110),
|
||||||
new Bar("v_ver#", () -> Version.build != 0, () -> Version.build == -1 ? 0.3f : (Version.build - 103f) / 10f, () -> !Version.modifier.equals("release")),
|
new Bar("v_ver#", () -> Version.build != 0, () -> Version.build == -1 ? 0.3f : (Version.build - 103f) / 10f, () -> !Version.modifier.equals("release")),
|
||||||
new Bar("s_osv", OS.isWindows ? 0.35f : OS.isLinux ? 0.9f : OS.isMac ? 0.5f : 0.2f, OS.isMac),
|
new Bar("s_osv", OS.isWindows ? 0.35f : OS.isLinux ? 0.9f : OS.isMac ? 0.5f : 0.2f, OS.isMac),
|
||||||
new Bar("v_worlds#", () -> Vars.control != null && Vars.control.saves != null, () -> Vars.control.saves.getSaveSlots().size / 30f, () -> Vars.control.saves.getSaveSlots().size > 30),
|
new Bar("v_worlds#", () -> Vars.control != null && Vars.control.saves != null, () -> Vars.control.saves.getSaveSlots().size / 30f, () -> Vars.control.saves.getSaveSlots().size > 30),
|
||||||
|
|||||||
@@ -21,4 +21,4 @@ public enum DataType{
|
|||||||
DataType(Color color){
|
DataType(Color color){
|
||||||
this.color = color;
|
this.color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,4 +15,4 @@ public enum LCategory{
|
|||||||
LCategory(Color color){
|
LCategory(Color color){
|
||||||
this.color = color;
|
this.color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public class DatabaseDialog extends BaseDialog{
|
|||||||
UnlockableContent unlock = (UnlockableContent)array.get(i);
|
UnlockableContent unlock = (UnlockableContent)array.get(i);
|
||||||
|
|
||||||
Image image = unlocked(unlock) ? new Image(unlock.icon(Cicon.medium)).setScaling(Scaling.fit) : new Image(Icon.lock, Pal.gray);
|
Image image = unlocked(unlock) ? new Image(unlock.icon(Cicon.medium)).setScaling(Scaling.fit) : new Image(Icon.lock, Pal.gray);
|
||||||
list.add(image).size(8*4).pad(3);
|
list.add(image).size(8 * 4).pad(3);
|
||||||
ClickListener listener = new ClickListener();
|
ClickListener listener = new ClickListener();
|
||||||
image.addListener(listener);
|
image.addListener(listener);
|
||||||
if(!Vars.mobile && unlocked(unlock)){
|
if(!Vars.mobile && unlocked(unlock)){
|
||||||
|
|||||||
@@ -491,4 +491,4 @@ public class JoinDialog extends BaseDialog{
|
|||||||
public Server(){
|
public Server(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{
|
|||||||
//planet selection
|
//planet selection
|
||||||
new Table(t -> {
|
new Table(t -> {
|
||||||
t.right();
|
t.right();
|
||||||
if(content.planets().count(p -> p.accessible) > 1) {
|
if(content.planets().count(p -> p.accessible) > 1){
|
||||||
t.table(Styles.black6, pt -> {
|
t.table(Styles.black6, pt -> {
|
||||||
//TODO localize
|
//TODO localize
|
||||||
pt.add("[accent]Planets[]");
|
pt.add("[accent]Planets[]");
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ public class PlacementFragment extends Fragment{
|
|||||||
|
|
||||||
for(int i = 0; i < blockSelect.length; i++){
|
for(int i = 0; i < blockSelect.length; i++){
|
||||||
if(Core.input.keyTap(blockSelect[i])){
|
if(Core.input.keyTap(blockSelect[i])){
|
||||||
if(i > 9) { //select block directionally
|
if(i > 9){ //select block directionally
|
||||||
Seq<Block> blocks = getUnlockedByCategory(currentCategory);
|
Seq<Block> blocks = getUnlockedByCategory(currentCategory);
|
||||||
Block currentBlock = getSelectedBlock(currentCategory);
|
Block currentBlock = getSelectedBlock(currentCategory);
|
||||||
for(int j = 0; j < blocks.size; j++){
|
for(int j = 0; j < blocks.size; j++){
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public class TractorBeamTurret extends BaseTurret{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float efficiency() {
|
public float efficiency(){
|
||||||
return super.efficiency() * coolant;
|
return super.efficiency() * coolant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public class ArmoredConveyor extends Conveyor{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock) {
|
public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){
|
||||||
return otherblock.outputsItems() && blendsArmored(tile, rotation, otherx, othery, otherrot, otherblock);
|
return otherblock.outputsItems() && blendsArmored(tile, rotation, otherx, othery, otherrot, otherblock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ public class Conveyor extends Block implements Autotiler{
|
|||||||
noSleep();
|
noSleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean pass(Item item) {
|
public boolean pass(Item item){
|
||||||
if(next != null && next.team == team && next.acceptItem(this, item)){
|
if(next != null && next.team == team && next.acceptItem(this, item)){
|
||||||
next.handleItem(this, item);
|
next.handleItem(this, item);
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ public class LogicBlock extends Block{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawSelect() {
|
public void drawSelect(){
|
||||||
Groups.unit.each(u -> u.controller() instanceof LogicAI ai && ai.controller == this, unit -> {
|
Groups.unit.each(u -> u.controller() instanceof LogicAI ai && ai.controller == this, unit -> {
|
||||||
Drawf.square(unit.x, unit.y, unit.hitSize, unit.rotation + 45);
|
Drawf.square(unit.x, unit.y, unit.hitSize, unit.rotation + 45);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class PowerDiode extends Block{
|
|||||||
float frontStored = frontGraph.getBatteryStored() / frontGraph.getTotalBatteryCapacity();
|
float frontStored = frontGraph.getBatteryStored() / frontGraph.getTotalBatteryCapacity();
|
||||||
|
|
||||||
// try to send if the back side has more % capacity stored than the front side
|
// try to send if the back side has more % capacity stored than the front side
|
||||||
if(backStored > frontStored) {
|
if(backStored > frontStored){
|
||||||
// send half of the difference
|
// send half of the difference
|
||||||
float amount = backGraph.getBatteryStored() * (backStored - frontStored) / 2;
|
float amount = backGraph.getBatteryStored() * (backStored - frontStored) / 2;
|
||||||
// prevent sending more than the front can handle
|
// prevent sending more than the front can handle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class Pump extends LiquidBlock{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawPlace(int x, int y, int rotation, boolean valid) {
|
public void drawPlace(int x, int y, int rotation, boolean valid){
|
||||||
Tile tile = world.tile(x, y);
|
Tile tile = world.tile(x, y);
|
||||||
if(tile == null) return;
|
if(tile == null) return;
|
||||||
|
|
||||||
|
|||||||
@@ -94,4 +94,4 @@ public class CommandCenter extends Block{
|
|||||||
team.data().command = UnitCommand.all[read.b()];
|
team.data().command = UnitCommand.all[read.b()];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class Reconstructor extends UnitBlock{
|
|||||||
stats.add(Stat.output, table -> {
|
stats.add(Stat.output, table -> {
|
||||||
table.row();
|
table.row();
|
||||||
for(var upgrade : upgrades){
|
for(var upgrade : upgrades){
|
||||||
float size = 8*3;
|
float size = 8 * 3;
|
||||||
if(upgrade[0].unlockedNow() && upgrade[1].unlockedNow()){
|
if(upgrade[0].unlockedNow() && upgrade[1].unlockedNow()){
|
||||||
table.image(upgrade[0].icon(Cicon.small)).size(size).padRight(4).padLeft(10).scaling(Scaling.fit).right();
|
table.image(upgrade[0].icon(Cicon.small)).size(size).padRight(4).padLeft(10).scaling(Scaling.fit).right();
|
||||||
table.add(upgrade[0].localizedName).left();
|
table.add(upgrade[0].localizedName).left();
|
||||||
|
|||||||
@@ -43,4 +43,4 @@ public class DrawAnimation extends DrawBlock{
|
|||||||
public TextureRegion[] icons(Block block){
|
public TextureRegion[] icons(Block block){
|
||||||
return new TextureRegion[]{block.region, top};
|
return new TextureRegion[]{block.region, top};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,4 +12,4 @@
|
|||||||
- स्थानीय नेटवर्क या समर्पित सर्वरस के माध्यम से क्रॉस-प्लेटफॉर्म मल्टीप्लेयर
|
- स्थानीय नेटवर्क या समर्पित सर्वरस के माध्यम से क्रॉस-प्लेटफॉर्म मल्टीप्लेयर
|
||||||
- कस्टम खेल के नियम: ब्लॉक की लागत, दुश्मन के आँकड़े, शुरू आइटम, लहर समय और अधिक बदलें
|
- कस्टम खेल के नियम: ब्लॉक की लागत, दुश्मन के आँकड़े, शुरू आइटम, लहर समय और अधिक बदलें
|
||||||
- एक शक्तिशाली संपादक, यादृच्छिक रूप से अयस्कों, इलाकों, सजावट को बनाने और मानचित्रों के लिए समरूपता को लागू करने के लिए उपकरण के साथ
|
- एक शक्तिशाली संपादक, यादृच्छिक रूप से अयस्कों, इलाकों, सजावट को बनाने और मानचित्रों के लिए समरूपता को लागू करने के लिए उपकरण के साथ
|
||||||
- अनुकूलन योग्य मानचित्र तरंग लेआउट
|
- अनुकूलन योग्य मानचित्र तरंग लेआउट
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
एक कारखाने आधारित सैंडबॉक्स टॉवर रक्षा खेल।
|
एक कारखाने आधारित सैंडबॉक्स टॉवर रक्षा खेल।
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
एक कारखाने आधारित सैंडबॉक्स टॉवर रक्षा खेल।
|
एक कारखाने आधारित सैंडबॉक्स टॉवर रक्षा खेल।
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
मिन्दुस्त्र्यि (Mindustry)
|
मिन्दुस्त्र्यि (Mindustry)
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ Fitur:
|
|||||||
- Multipemain lintas platform melalui jaringan lokal atau server khusus
|
- Multipemain lintas platform melalui jaringan lokal atau server khusus
|
||||||
- Aturan permainan khusus: Ubah biaya blok, statistik musuh, item awal, waktu gelombang, dan lainnya
|
- Aturan permainan khusus: Ubah biaya blok, statistik musuh, item awal, waktu gelombang, dan lainnya
|
||||||
- Editor yang andal, dengan alat untuk menghasilkan sumber daya, medan, dekorasi, dan menerapkan simetri ke peta secara acak
|
- Editor yang andal, dengan alat untuk menghasilkan sumber daya, medan, dekorasi, dan menerapkan simetri ke peta secara acak
|
||||||
- Tata letak gelombang peta yang dapat disesuaikan
|
- Tata letak gelombang peta yang dapat disesuaikan
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Sebuah game pertahanan menara sandbox berbasis pabrik.
|
Sebuah game pertahanan menara sandbox berbasis pabrik.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Sebuah game pertahanan menara sandbox berbasis pabrik.
|
Sebuah game pertahanan menara sandbox berbasis pabrik.
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Mindustry
|
Mindustry
|
||||||
|
|||||||
@@ -3,4 +3,4 @@
|
|||||||
- Utworzono kategorie serwerów (dodane dzięki @Quezler)
|
- Utworzono kategorie serwerów (dodane dzięki @Quezler)
|
||||||
- Dodano funckję require() dla skryptów (dodane dzięki @DeltaNedas)
|
- Dodano funckję require() dla skryptów (dodane dzięki @DeltaNedas)
|
||||||
- Dodano gradient kolorystyczny dla statusu baterii (dodane dzięki @Arkanic)
|
- Dodano gradient kolorystyczny dla statusu baterii (dodane dzięki @Arkanic)
|
||||||
- Zmieniono ładowanie skryptów: dla modów z więcej niż jednym plikiem skryptowym, główny plik musi nazywać się "main.js" oraz musi zawierać require() do pozostałych plików
|
- Zmieniono ładowanie skryptów: dla modów z więcej niż jednym plikiem skryptowym, główny plik musi nazywać się "main.js" oraz musi zawierać require() do pozostałych plików
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
- Aktualizacja sugerowanych linków
|
- Aktualizacja sugerowanych linków
|
||||||
- Aktualizacja tłumaczeń
|
- Aktualizacja tłumaczeń
|
||||||
- Poprawiono zmienianie nazwy gracza po tym jak serwer został zamknięty
|
- Poprawiono zmienianie nazwy gracza po tym jak serwer został zamknięty
|
||||||
- Dodano mnożnik paneli słonecznych
|
- Dodano mnożnik paneli słonecznych
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
- Aktualizacja sugerowanych linków
|
- Aktualizacja sugerowanych linków
|
||||||
- Aktualizacja tłumaczeń
|
- Aktualizacja tłumaczeń
|
||||||
- Poprawiono zmienianie nazwy gracza po tym jak serwer został zamknięty
|
- Poprawiono zmienianie nazwy gracza po tym jak serwer został zamknięty
|
||||||
- Dodano mnożnik paneli słonecznych
|
- Dodano mnożnik paneli słonecznych
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ task copyAssets(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
delete{
|
delete{
|
||||||
delete fileTree('assets') {
|
delete fileTree('assets'){
|
||||||
include '**/*.ogg'
|
include '**/*.ogg'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
before_install:
|
before_install:
|
||||||
- wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
|
- wget https://github.com/sormuras/bach/raw/master/install-jdk.sh
|
||||||
- source install-jdk.sh --feature 14
|
- source install-jdk.sh --feature 14
|
||||||
- jshell --version
|
- jshell --version
|
||||||
|
|||||||
@@ -554,7 +554,7 @@ public class ApplicationTests{
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void allBlockTest(){
|
void allBlockTest(){
|
||||||
Tiles tiles = world.resize(256*3 + 20, 10);
|
Tiles tiles = world.resize(256 * 3 + 20, 10);
|
||||||
|
|
||||||
world.beginMapLoad();
|
world.beginMapLoad();
|
||||||
for(int x = 0; x < tiles.width; x++){
|
for(int x = 0; x < tiles.width; x++){
|
||||||
|
|||||||
Reference in New Issue
Block a user