Skip to content

sanchezpaco/vscode-destroyer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VS Code Destroyer™

"Because sometimes, code just needs to be DESTROYED!"

VS Code Destroyer Banner

Are you tired of staring at that frustrating code that just won't work? Do you wish there was a more satisfying way to express your programming rage than just hitting backspace? LOOK NO FURTHER!

🔥 Introducing VS Code Destroyer™! 🔥

VS Code Destroyer Demo

Usage

  1. Launch the Destroyer:

    • Press Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows/Linux) to open the command palette
    • Type Destroy Editor! and select it
  2. Select Your Weapon:

    • Click on one of the weapon icons in the toolbar that appears
    • Or use numbers to quickly switch between weapons:
      • 1: Bullet Mode
      • 2: Auto Gun Mode
      • 3: Hammer Mode
      • 4: Flamethrower Mode
      • 5: Bomb mode
  3. Unleash Destruction:

    • Click anywhere in your code to apply the selected destruction effect
    • Hold and drag for continuous destruction with certain weapons

Installation & Development

# Clone this repository
git clone https://github.com/sanchezpaco/vscode-destroyer.git

# Navigate to project directory
cd vscode-destroyer

# Install dependencies
npm install

# Run the extension
Open the project with VSCode
Press F5 and select VsCode Extension Development
This will open a new window where you can test it by running cmd/control + shift + P and select Destroy Editor!

Adding Your Own Destruction Effects

Adding your own mayhem is as easy as 1-2-3! Just follow these simple steps:

1. Create your effect JavaScript file

Create a new file in the /src/effects/ directory (e.g., chainsaw-effect.js):

import { EffectBase } from './effects-loader.js';

class ChainsawEffect extends EffectBase {
    constructor() {
        super();
        
        // Reference your audio elements from view.html
        this.chainsawSound = document.getElementById('chainsaw-sound');
        this.woodCuttingSound = document.getElementById('wood-cutting-sound');
    }

    enable() {
        super.enable();
        document.body.style.cursor = 'url("src/images/chainsaw-cursor.png"), auto';
    }
    
    disable() {
        super.disable();
        document.body.style.cursor = 'default';
    }

    handleClick(e) {
        if (!this.isActive) return;
        
        // Play appropriate sound
        this.playSound(this.chainsawSound);
        
        // Create visual effects at click position
        this.createSawdustEffect(e.clientX, e.clientY);
        this.createCutLine(e.clientX, e.clientY);
        
        this.hitCount++;
    }
    
    createSawdustEffect(x, y) {
        // Create particles for sawdust
        for (let i = 0; i < 20; i++) {
            const dust = document.createElement('div');
            dust.className = 'sawdust';
            // ... implementation details
            this.editor.appendChild(dust);
        }
    }
    
    createCutLine(x, y) {
        // Create a jagged cut line
        const cut = document.createElement('div');
        cut.className = 'cut-line';
        // ... implementation details
        this.editor.appendChild(cut);
    }
}

export { ChainsawEffect };

2. Add CSS styles for your effect

Add styles to /src/styles/styles.css:

/* Chainsaw effect styles */
.sawdust {
    position: absolute;
    width: 8px;
    height: 8px;
    background-color: #d2b48c;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    opacity: 0.8;
    z-index: 100;
    pointer-events: none;
    animation: sawdust-animation 1s forwards;
}

@keyframes sawdust-animation {
    0% { transform: translate(-50%, -50%) scale(0.5); opacity: 0.9; }
    100% { transform: translate(calc(-50% + var(--dust-x)), calc(-50% + var(--dust-y))) scale(1.5); opacity: 0; }
}

.cut-line {
    position: absolute;
    height: 3px;
    background: linear-gradient(to right, transparent, #8b4513, transparent);
    transform-origin: center left;
    z-index: 95;
    pointer-events: none;
}

3. Add audio elements to /view.html

<!-- Add your sound effects -->
<audio id="chainsaw-sound" src="src/sounds/chainsaw.mp3" preload="auto"></audio>
<audio id="wood-cutting-sound" src="src/sounds/wood-cutting.mp3" preload="auto"></audio>

4. Register your effect in /src/effects/effects-controller.js

import { ChainsawEffect } from "./chainsaw-effect.js";

// ...existing code...

export function initializeEffects() {
    // ...existing effects...
    const chainsawEffect = new ChainsawEffect();
    
    const weapons = {
        // ...existing weapons...
        'chainsaw': {
            id: 'chainsaw-control',
            name: 'Chainsaw',
            icon: '🪚',
            key: '5',
            effect: chainsawEffect
        }
    };
    
    // ...remaining code...
}

5. Update HTML to include your new weapon button

<div class="weapon-button" id="chainsaw-control" title="Chainsaw (5)">🪚</div>

License

GNU General Public License v3.0 - This software is free as in freedom. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation.

See the LICENSE file for full details.

VS Code Destroyer™ is not responsible for any lost work, missed deadlines, or emotional attachment to destroyed code. Not valid in regions where code destruction is prohibited. Some destruction may require modern browser support.

About

Blow off steam by destroying your editor with bullets, hammers, and flamethrowers. A fun break during frustrating coding sessions!

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors