Add scaling level cap and party switch option after load
Add scaling level cap and party switch option after load; update Phaser to newest beta version
This commit is contained in:
1 parent
e633ff1577
commit
46c31f9595
13 files changed
+559
-160
No files matched your search
+18
-6
@@ -4,7 +4,7 @@ import * as Utils from '../utils';
|
||||
import { addTextObject, TextStyle } from './text';
|
||||
import { getGenderSymbol, getGenderColor } from '../data/gender';
|
||||
import { StatusEffect } from '../data/status-effect';
|
||||
import { maxExpLevel } from '../battle-scene';
|
||||
import BattleScene from '../battle-scene';
|
||||
|
||||
export default class BattleInfo extends Phaser.GameObjects.Container {
|
||||
private player: boolean;
|
||||
@@ -18,6 +18,7 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
||||
private lastExp: integer;
|
||||
private lastLevelExp: integer;
|
||||
private lastLevel: integer;
|
||||
private lastLevelCapped: boolean;
|
||||
|
||||
private box: Phaser.GameObjects.Sprite;
|
||||
private nameText: Phaser.GameObjects.Text;
|
||||
@@ -233,9 +234,16 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
||||
this.lastMaxHp = pokemon.getMaxHp();
|
||||
};
|
||||
|
||||
if (this.player && (this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level)) {
|
||||
const originalResolve = resolve;
|
||||
resolve = () => this.updatePokemonExp(pokemon).then(() => originalResolve());
|
||||
if (this.player) {
|
||||
const isLevelCapped = pokemon.level >= (this.scene as BattleScene).getMaxExpLevel();
|
||||
|
||||
if ((this.lastExp !== pokemon.exp || this.lastLevel !== pokemon.level)) {
|
||||
const originalResolve = resolve;
|
||||
resolve = () => this.updatePokemonExp(pokemon).then(() => originalResolve());
|
||||
} else if (isLevelCapped !== this.lastLevelCapped)
|
||||
this.setLevel(pokemon.level);
|
||||
|
||||
this.lastLevelCapped = isLevelCapped;
|
||||
}
|
||||
|
||||
if (this.lastHp !== pokemon.hp || this.lastMaxHp !== pokemon.getMaxHp()) {
|
||||
@@ -256,11 +264,14 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
||||
const relLevelExp = getLevelRelExp(this.lastLevel + 1, battler.species.growthRate);
|
||||
const levelExp = levelUp ? relLevelExp : battler.levelExp;
|
||||
let ratio = relLevelExp ? levelExp / relLevelExp : 0;
|
||||
if (this.lastLevel >= maxExpLevel) {
|
||||
if (this.lastLevel >= (this.scene as BattleScene).getMaxExpLevel()) {
|
||||
if (levelUp)
|
||||
ratio = 1;
|
||||
else
|
||||
ratio = 0;
|
||||
instant = true;
|
||||
}
|
||||
console.log(ratio);
|
||||
let duration = this.visible && !instant ? ((levelExp - this.lastLevelExp) / relLevelExp) * 1650 : 0;
|
||||
if (duration)
|
||||
this.scene.sound.play('exp');
|
||||
@@ -297,10 +308,11 @@ export default class BattleInfo extends Phaser.GameObjects.Container {
|
||||
}
|
||||
|
||||
setLevel(level: integer) {
|
||||
const isCapped = level >= (this.scene as BattleScene).getMaxExpLevel();
|
||||
this.levelNumbersContainer.removeAll(true);
|
||||
const levelStr = level.toString();
|
||||
for (let i = 0; i < levelStr.length; i++)
|
||||
this.levelNumbersContainer.add(this.scene.add.image(i * 8, 0, 'numbers', levelStr[i]));
|
||||
this.levelNumbersContainer.add(this.scene.add.image(i * 8, 0, `numbers${isCapped ? '_red' : ''}`, levelStr[i]));
|
||||
this.levelContainer.setX((this.player ? -41 : -50) - 8 * Math.max(levelStr.length - 3, 0));
|
||||
}
|
||||
|
||||
|
||||
@@ -635,7 +635,7 @@ class PartySlot extends Phaser.GameObjects.Container {
|
||||
slotLevelLabel.setPositionRelative(slotName, 8, 12);
|
||||
slotLevelLabel.setOrigin(0, 0);
|
||||
|
||||
const slotLevelText = addTextObject(this.scene, 0, 0, this.pokemon.level.toString(), TextStyle.PARTY);
|
||||
const slotLevelText = addTextObject(this.scene, 0, 0, this.pokemon.level.toString(), this.pokemon.level < (this.scene as BattleScene).getMaxExpLevel() ? TextStyle.PARTY : TextStyle.PARTY_RED);
|
||||
slotLevelText.setPositionRelative(slotLevelLabel, 9, 0);
|
||||
slotLevelText.setOrigin(0, 0.25);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import BattleScene, { Button, maxExpLevel } from "../battle-scene";
|
||||
import BattleScene, { Button } from "../battle-scene";
|
||||
import { Mode } from "./ui";
|
||||
import UiHandler from "./uiHandler";
|
||||
import * as Utils from "../utils";
|
||||
@@ -9,7 +9,6 @@ import Move, { MoveCategory } from "../data/move";
|
||||
import { getPokeballAtlasKey } from "../data/pokeball";
|
||||
import { getGenderColor, getGenderSymbol } from "../data/gender";
|
||||
import { getLevelTotalExp } from "../data/exp";
|
||||
import { BlendModes } from "phaser";
|
||||
import { Stat, getStatName } from "../data/pokemon-stat";
|
||||
import { abilities } from "../data/ability";
|
||||
import { PokemonHeldItemModifier } from "../modifier/modifier";
|
||||
@@ -482,7 +481,7 @@ export default class SummaryUiHandler extends UiHandler {
|
||||
});
|
||||
|
||||
const totalLvExp = getLevelTotalExp(this.pokemon.level, this.pokemon.species.growthRate);
|
||||
const expRatio = this.pokemon.level < maxExpLevel ? this.pokemon.levelExp / totalLvExp : 0;
|
||||
const expRatio = this.pokemon.level < this.scene.getMaxExpLevel() ? this.pokemon.levelExp / totalLvExp : 0;
|
||||
|
||||
const expLabel = addTextObject(this.scene, 6, 112, 'EXP. POINTS', TextStyle.SUMMARY);
|
||||
expLabel.setOrigin(0, 0);
|
||||
@@ -496,7 +495,7 @@ export default class SummaryUiHandler extends UiHandler {
|
||||
expText.setOrigin(1, 0);
|
||||
statsContainer.add(expText);
|
||||
|
||||
const nextLvExp = this.pokemon.level < maxExpLevel
|
||||
const nextLvExp = this.pokemon.level < this.scene.getMaxExpLevel()
|
||||
? getLevelTotalExp(this.pokemon.level + 1, this.pokemon.species.growthRate) - this.pokemon.levelExp
|
||||
: 0;
|
||||
const nextLvExpText = addTextObject(this.scene, 208, 128, nextLvExp.toString(), TextStyle.WINDOW);
|
||||
|
||||
@@ -3,6 +3,7 @@ export enum TextStyle {
|
||||
WINDOW,
|
||||
BATTLE_INFO,
|
||||
PARTY,
|
||||
PARTY_RED,
|
||||
SUMMARY,
|
||||
SUMMARY_RED,
|
||||
SUMMARY_GOLD
|
||||
@@ -36,6 +37,7 @@ export function addTextObject(scene: Phaser.Scene, x: number, y: number, content
|
||||
shadowSize = 4;
|
||||
break;
|
||||
case TextStyle.PARTY:
|
||||
case TextStyle.PARTY_RED:
|
||||
styleOptions.fontFamily = 'pkmnems';
|
||||
styleOptions.fontSize = '66px';
|
||||
break;
|
||||
@@ -69,6 +71,8 @@ export function getTextColor(textStyle: TextStyle, shadow?: boolean) {
|
||||
return !shadow ? '#404040' : '#ded6b5';
|
||||
case TextStyle.PARTY:
|
||||
return !shadow ? '#f8f8f8' : '#707070';
|
||||
case TextStyle.PARTY_RED:
|
||||
return !shadow ? '#f89890' : '#984038';
|
||||
case TextStyle.SUMMARY:
|
||||
return !shadow ? '#ffffff' : '#636363';
|
||||
case TextStyle.SUMMARY_RED:
|
||||
|
||||
Reference in new issue
Block a user