Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add new BattleScene animation engine
battle.js is probably PS's oldest code. It's received minor touch-ups: a refactor to prototypes early on, and then a refactor to TypeScript and classes recently, but otherwise it's had basically zero maintenance until now. That's probably why this refactor took me over a week. The biggest change is that the animation engine strewn around Pokemon, Side, and Battle has been broken out into a new class named BattleScene. Pokemon, Side, and Battle now only track state; all animation is now done in BattleScene and PokemonSprite. The fates of major classes: battle.ts:Pokemon - animation has been moved, mostly to PokemonSprite battle.ts:Side - animation has been moved, to PokemonSprite/BattleScene battle.ts:Battle - animation has been moved, mostly to BattleScene Major changes: - Many many variables have been renamed to be much clearer about what they mean. For instance, `animationDelay` is now `timeOffset`, and `activityDelay` is now `minWait`. A few bugs relating to me mixing up these two variables have also been fixed. jQuery variables named like `fooElem` have been renamed like `$foo`. - The unnecessarily complicated queue1/queue2/activeQueue system, previously used for telling the animation engine to stop after Pause was pressed, has been replaced with a simple `interruptionCount` counter. - The entire scene can now be reconstructed from scratch, which means that the `fastForward` system no longer needs to touch the DOM outside of the battle log. "Prev turn" and "Skip to turn" should be faster in 1000-turn battles now. - The animation engine now supports displaying weather and terrain simultaneously. - During a replay, Team Preview is shown for a second (instead of immediately skipping to the battle). - Various aspects of the animation engine should be much less brittle now. - Many bugs were fixed (and new ones were introduced).
- Loading branch information