diff --git a/src/battle-scene.ts b/src/battle-scene.ts index c680999fcdd..13581b9e6d2 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -119,6 +119,7 @@ export default class BattleScene extends SceneBase { public uiTheme: UiTheme = UiTheme.DEFAULT; public windowType: integer = 0; public experimentalSprites: boolean = false; + public moveAnimations: boolean = true; public fusionPaletteSwaps: boolean = true; public enableTouchControls: boolean = false; public enableVibration: boolean = false; diff --git a/src/data/battle-anims.ts b/src/data/battle-anims.ts index 9583b47f18f..84bf6077449 100644 --- a/src/data/battle-anims.ts +++ b/src/data/battle-anims.ts @@ -722,6 +722,41 @@ export abstract class BattleAnim { const userSprite = user.getSprite(); const targetSprite = target.getSprite(); + const spriteCache: SpriteCache = { + [AnimFrameTarget.GRAPHIC]: [], + [AnimFrameTarget.USER]: [], + [AnimFrameTarget.TARGET]: [] + }; + const spritePriorities: integer[] = []; + + const cleanUpAndComplete = () => { + userSprite.setPosition(0, 0); + userSprite.setScale(1); + userSprite.setAlpha(1); + userSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; + userSprite.setAngle(0); + targetSprite.setPosition(0, 0); + targetSprite.setScale(1); + targetSprite.setAlpha(1); + targetSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; + targetSprite.setAngle(0); + if (!this.isHideUser()) + userSprite.setVisible(true); + if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser())) + targetSprite.setVisible(true); + for (let ms of Object.values(spriteCache).flat()) { + if (ms) + ms.destroy(); + } + if (this.bgSprite) + this.bgSprite.destroy(); + if (callback) + callback(); + }; + + if (!scene.moveAnimations) + return cleanUpAndComplete(); + const anim = this.getAnim(); const userInitialX = user.x; @@ -735,13 +770,6 @@ export abstract class BattleAnim { let r = anim.frames.length; let f = 0; - const spriteCache: SpriteCache = { - [AnimFrameTarget.GRAPHIC]: [], - [AnimFrameTarget.USER]: [], - [AnimFrameTarget.TARGET]: [] - }; - const spritePriorities: integer[] = []; - scene.tweens.addCounter({ duration: Utils.getFrameMs(3), repeat: anim.frames.length, @@ -880,30 +908,6 @@ export abstract class BattleAnim { r--; }, onComplete: () => { - const cleanUpAndComplete = () => { - userSprite.setPosition(0, 0); - userSprite.setScale(1); - userSprite.setAlpha(1); - userSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; - userSprite.setAngle(0); - targetSprite.setPosition(0, 0); - targetSprite.setScale(1); - targetSprite.setAlpha(1); - targetSprite.pipelineData['tone'] = [ 0.0, 0.0, 0.0, 0.0 ]; - targetSprite.setAngle(0); - if (!this.isHideUser()) - userSprite.setVisible(true); - if (!this.isHideTarget() && (targetSprite !== userSprite || !this.isHideUser())) - targetSprite.setVisible(true); - for (let ms of Object.values(spriteCache).flat()) { - if (ms) - ms.destroy(); - } - if (this.bgSprite) - this.bgSprite.destroy(); - if (callback) - callback(); - }; for (let ms of Object.values(spriteCache).flat()) { if (ms && !ms.getData('locked')) ms.destroy(); diff --git a/src/system/settings.ts b/src/system/settings.ts index adeddd36751..6ce4a692d1c 100644 --- a/src/system/settings.ts +++ b/src/system/settings.ts @@ -14,6 +14,7 @@ export enum Setting { Tutorials = "TUTORIALS", Enable_Retries = "ENABLE_RETRIES", Sprite_Set = "SPRITE_SET", + Move_Animations = "MOVE_ANIMATIONS", Show_Stats_on_Level_Up = "SHOW_LEVEL_UP_STATS", Fusion_Palette_Swaps = "FUSION_PALETTE_SWAPS", Player_Gender = "PLAYER_GENDER", @@ -40,6 +41,7 @@ export const settingOptions: SettingOptions = { [Setting.Tutorials]: [ 'Off', 'On' ], [Setting.Enable_Retries]: [ 'Off', 'On' ], [Setting.Sprite_Set]: [ 'Consistent', 'Prioritize Animation' ], + [Setting.Move_Animations]: [ 'Off', 'On' ], [Setting.Show_Stats_on_Level_Up]: [ 'Off', 'On' ], [Setting.Fusion_Palette_Swaps]: [ 'Off', 'On' ], [Setting.Player_Gender]: [ 'Boy', 'Girl' ], @@ -58,6 +60,7 @@ export const settingDefaults: SettingDefaults = { [Setting.Tutorials]: 1, [Setting.Enable_Retries]: 0, [Setting.Sprite_Set]: 0, + [Setting.Move_Animations]: 1, [Setting.Show_Stats_on_Level_Up]: 1, [Setting.Fusion_Palette_Swaps]: 1, [Setting.Player_Gender]: 0, @@ -104,6 +107,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) if (value) scene.initExpSprites(); break; + case Setting.Move_Animations: + scene.moveAnimations = settingOptions[setting][value] === 'On'; + break; case Setting.Show_Stats_on_Level_Up: scene.showLevelUpStats = settingOptions[setting][value] === 'On'; break;