better anim
Browse files
    	
        src/lib/components/Battle/BattleField.svelte
    CHANGED
    
    | @@ -41,33 +41,19 @@ | |
| 41 | 
             
              const playerXpPercentage = (playerPiclet.xp / 100) * 100; // Simplified, should use actual XP curve
         | 
| 42 |  | 
| 43 | 
             
              onMount(() => {
         | 
| 44 | 
            -
                if (showIntro) {
         | 
| 45 | 
            -
                  //  | 
| 46 | 
            -
                  setTimeout(() => {
         | 
| 47 | 
            -
                    if (!isWildBattle) {
         | 
| 48 | 
            -
                      enemyTrainerVisible = true;
         | 
| 49 | 
            -
                    } else {
         | 
| 50 | 
            -
                      enemyVisible = true;
         | 
| 51 | 
            -
                    }
         | 
| 52 | 
            -
                  }, 100);
         | 
| 53 | 
            -
                  
         | 
| 54 | 
            -
                  setTimeout(() => {
         | 
| 55 | 
            -
                    if (!isWildBattle) {
         | 
| 56 | 
            -
                      playerTrainerVisible = true;
         | 
| 57 | 
            -
                    } else {
         | 
| 58 | 
            -
                      playerTrainerVisible = true; // Show player trainer even in wild battles
         | 
| 59 | 
            -
                    }
         | 
| 60 | 
            -
                  }, 200);
         | 
| 61 | 
            -
                } else {
         | 
| 62 | 
            -
                  // Skip intro
         | 
| 63 | 
             
                  playerVisible = true;
         | 
| 64 | 
             
                  enemyVisible = true;
         | 
| 65 | 
             
                }
         | 
|  | |
| 66 | 
             
              });
         | 
| 67 |  | 
| 68 | 
             
              // Watch for trainer slide-out triggers
         | 
| 69 | 
             
              $: if (playerTrainerSlideOut && !playerTrainerSliding) {
         | 
| 70 | 
             
                playerTrainerSliding = true;
         | 
|  | |
|  | |
| 71 | 
             
                setTimeout(() => {
         | 
| 72 | 
             
                  playerTrainerVisible = false;
         | 
| 73 | 
             
                  // Trigger white flash then show player monster
         | 
| @@ -81,6 +67,8 @@ | |
| 81 |  | 
| 82 | 
             
              $: if (enemyTrainerSlideOut && !enemyTrainerSliding) {
         | 
| 83 | 
             
                enemyTrainerSliding = true;
         | 
|  | |
|  | |
| 84 | 
             
                setTimeout(() => {
         | 
| 85 | 
             
                  enemyTrainerVisible = false;
         | 
| 86 | 
             
                  // Trigger white flash then show enemy monster
         | 
|  | |
| 41 | 
             
              const playerXpPercentage = (playerPiclet.xp / 100) * 100; // Simplified, should use actual XP curve
         | 
| 42 |  | 
| 43 | 
             
              onMount(() => {
         | 
| 44 | 
            +
                if (!showIntro) {
         | 
| 45 | 
            +
                  // Skip intro - show everything immediately
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 46 | 
             
                  playerVisible = true;
         | 
| 47 | 
             
                  enemyVisible = true;
         | 
| 48 | 
             
                }
         | 
| 49 | 
            +
                // For intro mode, trainers will be shown when slide-out is triggered
         | 
| 50 | 
             
              });
         | 
| 51 |  | 
| 52 | 
             
              // Watch for trainer slide-out triggers
         | 
| 53 | 
             
              $: if (playerTrainerSlideOut && !playerTrainerSliding) {
         | 
| 54 | 
             
                playerTrainerSliding = true;
         | 
| 55 | 
            +
                // Show trainer briefly, then slide out
         | 
| 56 | 
            +
                playerTrainerVisible = true;
         | 
| 57 | 
             
                setTimeout(() => {
         | 
| 58 | 
             
                  playerTrainerVisible = false;
         | 
| 59 | 
             
                  // Trigger white flash then show player monster
         | 
|  | |
| 67 |  | 
| 68 | 
             
              $: if (enemyTrainerSlideOut && !enemyTrainerSliding) {
         | 
| 69 | 
             
                enemyTrainerSliding = true;
         | 
| 70 | 
            +
                // Show trainer briefly, then slide out
         | 
| 71 | 
            +
                enemyTrainerVisible = true;
         | 
| 72 | 
             
                setTimeout(() => {
         | 
| 73 | 
             
                  enemyTrainerVisible = false;
         | 
| 74 | 
             
                  // Trigger white flash then show enemy monster
         | 
    	
        src/lib/components/Pages/Battle.svelte
    CHANGED
    
    | @@ -261,7 +261,7 @@ | |
| 261 | 
             
                const playerName = stripBattlePrefix(battleState?.playerPiclet?.definition?.name || '');
         | 
| 262 | 
             
                const enemyName = stripBattlePrefix(battleState?.opponentPiclet?.definition?.name || '');
         | 
| 263 |  | 
| 264 | 
            -
                // Attack lunge effects - trigger when a Piclet uses a move
         | 
| 265 | 
             
                if (message.includes(' used ')) {
         | 
| 266 | 
             
                  if (message.includes(playerName)) {
         | 
| 267 | 
             
                    triggerLungeAnimation('player');
         | 
| @@ -270,7 +270,7 @@ | |
| 270 | 
             
                  }
         | 
| 271 | 
             
                }
         | 
| 272 |  | 
| 273 | 
            -
                // Damage effects
         | 
| 274 | 
             
                if (message.includes('took') && message.includes('damage')) {
         | 
| 275 | 
             
                  if (message.includes(playerName)) {
         | 
| 276 | 
             
                    triggerDamageFlash('player');
         | 
| @@ -402,17 +402,19 @@ | |
| 402 | 
             
                currentMessageIndex = 0;
         | 
| 403 | 
             
                continueCallback = callback;
         | 
| 404 |  | 
| 405 | 
            -
                // Show first message
         | 
| 406 | 
             
                currentMessage = messageQueue[0];
         | 
| 407 | 
             
                waitingForContinue = true;
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 408 | 
             
              }
         | 
| 409 |  | 
| 410 | 
             
              function handleContinueTap() {
         | 
| 411 | 
             
                if (!waitingForContinue || !messageQueue.length) return;
         | 
| 412 |  | 
| 413 | 
            -
                // Trigger visual effects for current message
         | 
| 414 | 
            -
                triggerVisualEffectsFromMessage(currentMessage);
         | 
| 415 | 
            -
                
         | 
| 416 | 
             
                currentMessageIndex++;
         | 
| 417 |  | 
| 418 | 
             
                if (currentMessageIndex >= messageQueue.length) {
         | 
| @@ -428,6 +430,11 @@ | |
| 428 | 
             
                } else {
         | 
| 429 | 
             
                  // Show next message
         | 
| 430 | 
             
                  currentMessage = messageQueue[currentMessageIndex];
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
| 431 | 
             
                }
         | 
| 432 | 
             
              }
         | 
| 433 |  | 
|  | |
| 261 | 
             
                const playerName = stripBattlePrefix(battleState?.playerPiclet?.definition?.name || '');
         | 
| 262 | 
             
                const enemyName = stripBattlePrefix(battleState?.opponentPiclet?.definition?.name || '');
         | 
| 263 |  | 
| 264 | 
            +
                // Attack lunge effects - trigger immediately when a Piclet uses a move
         | 
| 265 | 
             
                if (message.includes(' used ')) {
         | 
| 266 | 
             
                  if (message.includes(playerName)) {
         | 
| 267 | 
             
                    triggerLungeAnimation('player');
         | 
|  | |
| 270 | 
             
                  }
         | 
| 271 | 
             
                }
         | 
| 272 |  | 
| 273 | 
            +
                // Damage flash effects - trigger when damage is taken
         | 
| 274 | 
             
                if (message.includes('took') && message.includes('damage')) {
         | 
| 275 | 
             
                  if (message.includes(playerName)) {
         | 
| 276 | 
             
                    triggerDamageFlash('player');
         | 
|  | |
| 402 | 
             
                currentMessageIndex = 0;
         | 
| 403 | 
             
                continueCallback = callback;
         | 
| 404 |  | 
| 405 | 
            +
                // Show first message and trigger its effects
         | 
| 406 | 
             
                currentMessage = messageQueue[0];
         | 
| 407 | 
             
                waitingForContinue = true;
         | 
| 408 | 
            +
                
         | 
| 409 | 
            +
                // Trigger visual effects automatically after text appears (with small delay for text animation)
         | 
| 410 | 
            +
                setTimeout(() => {
         | 
| 411 | 
            +
                  triggerVisualEffectsFromMessage(currentMessage);
         | 
| 412 | 
            +
                }, 500); // Allow time for typewriter text to complete
         | 
| 413 | 
             
              }
         | 
| 414 |  | 
| 415 | 
             
              function handleContinueTap() {
         | 
| 416 | 
             
                if (!waitingForContinue || !messageQueue.length) return;
         | 
| 417 |  | 
|  | |
|  | |
|  | |
| 418 | 
             
                currentMessageIndex++;
         | 
| 419 |  | 
| 420 | 
             
                if (currentMessageIndex >= messageQueue.length) {
         | 
|  | |
| 430 | 
             
                } else {
         | 
| 431 | 
             
                  // Show next message
         | 
| 432 | 
             
                  currentMessage = messageQueue[currentMessageIndex];
         | 
| 433 | 
            +
                  
         | 
| 434 | 
            +
                  // Trigger visual effects automatically after text appears
         | 
| 435 | 
            +
                  setTimeout(() => {
         | 
| 436 | 
            +
                    triggerVisualEffectsFromMessage(currentMessage);
         | 
| 437 | 
            +
                  }, 500); // Allow time for typewriter text to complete
         | 
| 438 | 
             
                }
         | 
| 439 | 
             
              }
         | 
| 440 |  | 
