Fixed bug & Optimize the Boss terminal

This commit is contained in:
LingASDJ 2022-08-16 10:30:36 +08:00
parent b3862ac6cf
commit 1df683bb8d
6 changed files with 54 additions and 29 deletions

View File

@ -74,6 +74,10 @@ windows.bosssettingwindows.boss_3 = 直面冰雪魔女
windows.bosssettingwindows.boss_4 = 直面矮人大师
windows.bosssettingwindows.boss_5 = 直面Yog-Zot
windows.bosssettingwindows.dm300=DM-300
windows.bosssettingwindows.ice=冰雪魔女
windows.wndstartgame.title=选择一位英雄
windows.wndstartgame.start=开始游戏

View File

@ -385,17 +385,13 @@ public class Dungeon {
}
break;
case 15:
if((Statistics.boss_enhance & 0x4) != 0) level = new CavesGirlDeadLevel();
else
switch (Random.NormalIntRange(1,7)) {
case 1:case 2:case 3:
default:
level = new NewCavesBossLevel();
break;
case 4:case 5:
level = new CaveTwoBossLevel();
break;
}
if (SPDSettings.level3boss()==3){
level = new CavesGirlDeadLevel();
} else if (SPDSettings.level3boss()==2){
level = new CaveTwoBossLevel();
} else {
level = new NewCavesBossLevel();
}
break;
case 16:
case 17:
@ -465,17 +461,13 @@ public class Dungeon {
level = new CavesLevel();
break;
case 15:
if((Statistics.boss_enhance & 0x4) != 0) level = new CavesGirlDeadLevel();
else
switch (Random.NormalIntRange(1,7)) {
case 1:case 2:case 3: case 4: case 5:
default:
level = new NewCavesBossLevel();
break;
case 6:case 7:
level = new CaveTwoBossLevel();
break;
}
if (SPDSettings.level3boss()==3){
level = new CavesGirlDeadLevel();
} else if (SPDSettings.level3boss()==2){
level = new CaveTwoBossLevel();
} else {
level = new NewCavesBossLevel();
}
break;
case 16:
case 17:

View File

@ -47,6 +47,15 @@ public class SPDSettings extends GameSettings {
public static int quickslots(){
return getInt( KEY_QUICKSLOTS, 4, Constants.MIN_QUICKSLOTS, Constants.MAX_QUICKSLOTS);
}
public static void level3boss( int value ){
put( KEY_L3BOSS, value );
}
public static int level3boss(){
return getInt( KEY_L3BOSS, 1, 1, 3);
}
private static final String DEBUG_REPORT = "debug_report";
public static boolean debugReport() {
return getBoolean(DEBUG_REPORT,false);
@ -185,6 +194,7 @@ public class SPDSettings extends GameSettings {
public static final String KEY_UI_SIZE = "full_ui";
public static final String KEY_QUICKSLOTS = "quickslots";
public static final String KEY_L3BOSS = "bossl3";
public static final String KEY_FLIPTOOLBAR = "flipped_ui";
public static final String KEY_FLIPTAGS = "flip_tags";
public static final String KEY_BARMODE = "toolbar_mode";

View File

@ -61,6 +61,7 @@ import com.watabou.utils.Random;
import com.watabou.utils.Rect;
import java.util.ArrayList;
import java.util.Objects;
public class CaveTwoBossLevel extends Level {
@ -272,7 +273,7 @@ public class CaveTwoBossLevel extends Level {
NewDM720 boss = new NewDM720();
boss.state = boss.WANDERING;
do {
boss.pos = pointToCell(Random.element(mainArena.getPoints()));
boss.pos = pointToCell(Objects.requireNonNull(Random.element(mainArena.getPoints())));
} while (!openSpace[boss.pos] || map[boss.pos] == Terrain.EMPTY);
GameScene.add( boss );
@ -282,7 +283,7 @@ public class CaveTwoBossLevel extends Level {
public void unseal() {
super.unseal();
//blobs.get(PylonEnergy.class).fullyClear();
blobs.get(PylonEnergy.class).fullyClear();
set( entrance, Terrain.ENTRANCE );
int i = 14 + 13*width();

View File

@ -175,7 +175,7 @@ public class InterlevelScene extends PixelScene {
fadeTime += 0.9f; //adds 1 second total
//speed up transition when debugging
} else if (DeviceCompat.isDebug()){
fadeTime = 0.8f;
fadeTime = 0.1f;
}
SkinnedBlock bg = new SkinnedBlock(Camera.main.width, Camera.main.height, loadingAsset ){

View File

@ -1,9 +1,11 @@
package com.shatteredpixel.shatteredpixeldungeon.windows;
import com.shatteredpixel.shatteredpixeldungeon.SPDSettings;
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
import com.shatteredpixel.shatteredpixeldungeon.ui.CheckBox;
import com.shatteredpixel.shatteredpixeldungeon.ui.OptionSlider;
import com.shatteredpixel.shatteredpixeldungeon.ui.RenderedTextBlock;
import com.shatteredpixel.shatteredpixeldungeon.ui.Window;
@ -11,36 +13,51 @@ import java.util.ArrayList;
public class BossSettingWindows extends Window {
private static final int WIDTH = 120;
private static final int HEIGHT = 100;
private static final int BOX_HEIGHT = 16;
private static final int TTL_HEIGHT = 12;
private static final int GAP= 2;
private ArrayList<CheckBox> cbs;
OptionSlider level3;
public BossSettingWindows(){
resize(WIDTH, 1);
resize(WIDTH, HEIGHT);
RenderedTextBlock rtb = PixelScene.renderTextBlock(Messages.get(this, "title"), TTL_HEIGHT - GAP);
rtb.setPos(WIDTH/2f - rtb.width()/2, GAP);
PixelScene.align(rtb);
rtb.hardlight(0x00FF00);
add(rtb);
float pos = TTL_HEIGHT + GAP;
cbs = new ArrayList<>();
for(int i = 0; i<5; ++i){
CheckBox cb = new CheckBox(Messages.get(this, "boss_"+String.valueOf(i+1)));
cb.setRect(GAP, pos, WIDTH - GAP * 2, BOX_HEIGHT);
if(i == 2){
cb.setRect(GAP, 500, WIDTH - GAP * 2, BOX_HEIGHT);
}
add(cb);
cbs.add(cb);
pos += BOX_HEIGHT + GAP;
cb.checked((Statistics.boss_enhance & (1<<i)) >0);
cb.enable(Statistics.deepestFloor < (5+i*5));
}
level3 = new OptionSlider("", Messages.get(this, "dm300"),
Messages.get(this, "ice"), 1, 3) {
@Override
protected void onChange() {
SPDSettings.level3boss(getSelectedValue());
}
};
level3.setRect(GAP, 50, WIDTH - GAP * 2, BOX_HEIGHT);
level3.setSelectedValue(SPDSettings.level3boss());
add(level3);
resize(WIDTH, (int) Math.floor(pos));
resize(WIDTH, HEIGHT);
}
@Override
public void onBackPressed() {
Statistics.boss_enhance = 0;
@ -51,4 +68,5 @@ public class BossSettingWindows extends Window {
}
super.onBackPressed();
}
}