fix rerun when POI placement failed

- update RewardActor image
This commit is contained in:
Anthony Calosa
2023-04-03 18:59:43 +08:00
parent 3f6a3acaa8
commit 93a4581e1a
4 changed files with 17 additions and 7 deletions

View File

@@ -424,7 +424,7 @@ public class RewardScene extends UIScene {
if (lastRowCount != 0) if (lastRowCount != 0)
lastRowXAdjust = ((numberOfColumns * cardWidth) - (lastRowCount * cardWidth)) / 2; lastRowXAdjust = ((numberOfColumns * cardWidth) - (lastRowCount * cardWidth)) / 2;
} }
RewardActor actor = new RewardActor(reward, type == Type.Loot); RewardActor actor = new RewardActor(reward, type == Type.Loot, type);
actor.setBounds(lastRowXAdjust + xOff + cardWidth * (i % numberOfColumns) + spacing, yOff + cardHeight * currentRow + spacing, cardWidth - spacing * 2, cardHeight - spacing * 2); actor.setBounds(lastRowXAdjust + xOff + cardWidth * (i % numberOfColumns) + spacing, yOff + cardHeight * currentRow + spacing, cardWidth - spacing * 2, cardHeight - spacing * 2);
if (type == Type.Shop) { if (type == Type.Shop) {

View File

@@ -387,7 +387,7 @@ public class SpellSmithScene extends UIScene {
if (Current.player().getGold() < currentPrice) pullUsingGold.setDisabled(true); if (Current.player().getGold() < currentPrice) pullUsingGold.setDisabled(true);
if (Current.player().getShards() < currentShardPrice) pullUsingShards.setDisabled(true); if (Current.player().getShards() < currentShardPrice) pullUsingShards.setDisabled(true);
if (rewardActor != null) rewardActor.remove(); if (rewardActor != null) rewardActor.remove();
rewardActor = new RewardActor(R, true); rewardActor = new RewardActor(R, true, null);
rewardActor.flip(); //Make it flip so it draws visual attention, why not. rewardActor.flip(); //Make it flip so it draws visual attention, why not.
rewardActor.setBounds(rewardDummy.getX(), rewardDummy.getY(), rewardDummy.getWidth(), rewardDummy.getHeight()); rewardActor.setBounds(rewardDummy.getX(), rewardDummy.getY(), rewardDummy.getWidth(), rewardDummy.getHeight());
stage.addActor(rewardActor); stage.addActor(rewardActor);

View File

@@ -165,7 +165,7 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
Gdx.graphics.requestRendering(); Gdx.graphics.requestRendering();
} }
public RewardActor(Reward reward, boolean flippable) { public RewardActor(Reward reward, boolean flippable, RewardScene.Type type) {
this.flipOnClick = flippable; this.flipOnClick = flippable;
this.reward = reward; this.reward = reward;
if (backTexture == null) { if (backTexture == null) {
@@ -284,7 +284,8 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
} }
Sprite item = reward.getItem().sprite(); Sprite item = reward.getItem().sprite();
setItemTooltips(item, backSprite); setItemTooltips(item, backSprite);
processSprite(backSprite, item, null, 0, 0); boolean isQuestItemLoot = RewardScene.Type.Loot.equals(type) && reward.getItem().questItem;
processSprite(backSprite, item, isQuestItemLoot ? Controls.newTextraLabel("[%]" + reward.getItem().name) : null, 0, -10);
needsToBeDisposed = true; needsToBeDisposed = true;
break; break;
} }
@@ -295,8 +296,9 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
Sprite backSprite = atlas.createSprite("CardBack"); Sprite backSprite = atlas.createSprite("CardBack");
Sprite item = atlas.createSprite(reward.type.toString()); Sprite item = atlas.createSprite(reward.type.toString());
setItemTooltips(item, backSprite); setItemTooltips(item, backSprite);
processSprite(backSprite, item, boolean isShop = RewardScene.Type.Shop.equals(type);
Controls.newTextraLabel("[%200]" + reward.getCount()), 0, -10); processSprite(backSprite, item, isShop ? null :
Controls.newTextraLabel("[%]" + reward.getCount() + " " + reward.type), 0, isShop ? 0 : -10);
needsToBeDisposed = true; needsToBeDisposed = true;
break; break;
} }
@@ -551,8 +553,10 @@ public class RewardActor extends Actor implements Disposable, ImageFetcher.Callb
description = item.getDescription(); description = item.getDescription();
layout.reset(); layout.reset();
} else { } else {
description = "Adds " + String.valueOf(getReward().getCount()) + " " + getReward().type; description = "Adds " + getReward().getCount() + " " + getReward().type;
} }
if (description.isEmpty() && item.questItem)
description = "Quest Item";
getGraphics().end(); getGraphics().end();
getGraphics().endClip(); getGraphics().endClip();
Pixmap pixmap = Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h); Pixmap pixmap = Pixmap.createFromFrameBuffer(0, 0, preview_w, preview_h);

View File

@@ -444,6 +444,7 @@ public class World implements Disposable, SaveFileContent {
clearTerrain((int) (data.width * data.playerStartPosX), (int) (data.height * data.playerStartPosY), 10); clearTerrain((int) (data.width * data.playerStartPosX), (int) (data.height * data.playerStartPosY), 10);
//otherPoints.add(new Rectangle(((float) data.width * data.playerStartPosX * (float) data.tileSize) - data.tileSize * 3, ((float) data.height * data.playerStartPosY * data.tileSize) - data.tileSize * 3, data.tileSize * 6, data.tileSize * 6)); //otherPoints.add(new Rectangle(((float) data.width * data.playerStartPosX * (float) data.tileSize) - data.tileSize * 3, ((float) data.height * data.playerStartPosY * data.tileSize) - data.tileSize * 3, data.tileSize * 6, data.tileSize * 6));
boolean running = true; boolean running = true;
here:
while (running) { while (running) {
mapPoiIds = new PointOfInterestMap(getChunkSize(), data.tileSize, data.width / getChunkSize(), data.height / getChunkSize()); mapPoiIds = new PointOfInterestMap(getChunkSize(), data.tileSize, data.width / getChunkSize(), data.height / getChunkSize());
int biomeIndex2 = -1; int biomeIndex2 = -1;
@@ -505,6 +506,11 @@ public class World implements Disposable, SaveFileContent {
if (counter == 499) { if (counter == 499) {
System.err.print("Can not place POI " + poi.name + "...Rerunning..\n"); System.err.print("Can not place POI " + poi.name + "...Rerunning..\n");
running = true; running = true;
towns.clear();
notTowns.clear();
otherPoints.clear();
clearTerrain((int) (data.width * data.playerStartPosX), (int) (data.height * data.playerStartPosY), 10);
continue here;
} }
continue; continue;
} }