Changeset 22

Show
Ignore:
Timestamp:
12/10/07 11:32:38 (1 year ago)
Author:
charlie137
Message:

Add bouncing ball

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/guisterax/src/asteroid.d

    r10 r22  
    3232import utils; 
    3333import fire; 
     34import ship; 
    3435 
    3536import std.math : PI, sqrt; 
     
    118119     
    119120    override void collide(Element e) { 
    120         m_sounds[m_type].play(); 
    121         universe.append(new Explosion(m_type, pos, speed), this); 
    122          
    123         // Add the elements inside 
    124         foreach(ee; m_inside) { 
    125             Vect speed = this.speed + Vect.from_angle(rand(0, 4 * PI)) * 1 / sqrt(ee.mass); 
    126             speed += rand(0.1, 0.2) * sqrt(e.mass / ee.mass) * e.speed; 
    127             ee.speed = speed; 
    128             ee.pos = this.pos; 
    129             universe.append(ee, this); 
     121        if (cast(Fire)e || cast(Ship)e) { 
     122            m_sounds[m_type].play(); 
     123            universe.append(new Explosion(m_type, pos, speed), this); 
     124             
     125            // Add the elements inside 
     126            foreach(ee; m_inside) { 
     127                Vect speed = this.speed + Vect.from_angle(rand(0, 4 * PI)) * 1 / sqrt(ee.mass); 
     128                speed += rand(0.1, 0.2) * sqrt(e.mass / ee.mass) * e.speed; 
     129                ee.speed = speed; 
     130                ee.pos = this.pos; 
     131                universe.append(ee, this); 
     132            } 
     133             
     134            kill(); 
    130135        } 
    131          
    132         kill(); 
    133136    } 
    134137}; 
  • trunk/guisterax/src/element.d

    r10 r22  
    6565    void hit(float v) {} 
    6666 
    67     this(Sprite sprite = null, in Vect pos = Vect(0,0)) { 
     67    this(Sprite sprite = null, in Vect pos = Vect()) { 
    6868        super(); 
    6969        this.pos = pos; 
     
    7171    } 
    7272     
    73     void attract(in Vect pos, float strenght, bool direct = false) { 
     73    void attract(in Vect pos, float strenght, bool direct = true) { 
    7474        Vect normal = (pos - this.pos).normal(); 
    7575        if (!direct) { 
     
    7979        } 
    8080    } 
    81     void repeal(in Vect pos, float strenght, bool direct = false) { 
     81    void repeal(in Vect pos, float strenght, bool direct = true) { 
    8282        attract(pos, -strenght, direct); 
    8383    } 
     
    9494    } 
    9595     
    96     override void draw(Display disp, in Vect pos = Vect(0,0)) { 
     96    override void draw(Display disp, in Vect pos = Vect()) { 
    9797        if (sprite) {  
    9898            sprite.draw(disp, this.pos + pos); 
  • trunk/guisterax/src/fire.d

    r10 r22  
    3232import utils; 
    3333import timer; 
     34import bounce; 
    3435 
    3536 
     
    5758     
    5859    override void collide(Element e) { 
    59         kill(); 
     60        if (!cast(Bounce)e) { 
     61            kill(); 
     62        } 
    6063    } 
    6164}; 
  • trunk/guisterax/src/init.d

    r16 r22  
    4040import vect : Vect; 
    4141import status; 
     42import bounce; 
    4243 
    4344void init() { 
     
    5859    Status.s_init(); 
    5960    Shop.s_init(); 
     61    Bounce.s_init(); 
    6062} 
  • trunk/guisterax/src/metal.d

    r10 r22  
    3131import display; 
    3232import fire; 
     33import ship; 
    3334import sound; 
    3435 
     
    6869     
    6970    override void collide(Element e) { 
    70         m_sound.play(); 
    71         // speed += sqrt(e.mass / mass) * (e.speed - speed); 
    72         repeal(e.pos, e.mass, true); 
     71        if (cast(Fire)e || cast(Ship)e) { 
     72            m_sound.play(); 
     73            // speed += sqrt(e.mass / mass) * (e.speed - speed); 
     74            repeal(e.pos, e.mass); 
     75        } 
    7376    } 
    7477}; 
  • trunk/guisterax/src/mine.d

    r10 r22  
    6060    override float danger() {return 1;} 
    6161         
    62     this(Element target, in Vect pos, in Vect speed = Vect(0,0)) {        
     62    this(Element target, in Vect pos, in Vect speed = Vect()) {        
    6363        super(new Sprite(m_surfs), pos); 
    6464        this.target = target; 
     
    9393        if (cast(Fire)e) { 
    9494            m_sound.play(); 
    95             repeal(e.pos, e.mass * 5, true); 
     95            repeal(e.pos, e.mass * 5); 
    9696            speed += 0.5 * e.speed * sqrt(e.mass / mass); 
    9797            energy -= 0.1; 
     
    113113        } 
    114114         
    115         this(Vect pos, Vect speed = Vect(0,0)) { 
     115        this(Vect pos, Vect speed = Vect()) { 
    116116            super(new Sprite(m_surfs), pos); 
    117117            this.speed = speed; 
  • trunk/guisterax/src/saucer.d

    r15 r22  
    7070    } 
    7171    override void collide(Element e) { 
    72         repeal(e.pos, e.mass * 5, true); 
     72        repeal(e.pos, e.mass * 5); 
    7373        energy -= 1; 
    7474    } 
  • trunk/guisterax/src/ship.d

    r16 r22  
    104104        if (cast(Asteroid)e || cast(Metal)e || cast(Mine)e) { 
    105105            hit(e.radius / 100); 
    106             repeal(e.pos, e.mass, true); 
     106            repeal(e.pos, e.mass); 
    107107        } 
    108108        // TODO: put this into Energy class 
  • trunk/guisterax/src/wave.d

    r16 r22  
    3131import energy; 
    3232import metal; 
     33import bounce; 
    3334import saucer; 
    3435import timer; 
     
    6263        // Add the metal ball 
    6364        for (int i=0; i < level; ++i) { 
    64             if (rand(1) > 0.75) { 
     65            if (rand(1) > 0.80) { 
    6566                Vect speed = rand(0, 1) * Vect.from_angle(rand(0, 2 * PI)); 
    6667                append(new Metal(safe_pos(64), speed)); 
    67             }  
     68            } 
    6869        } 
     70        // Maybe add a bouncing ball 
     71        if (rand(1) > 0.75) { 
     72            Vect speed = rand(0, 1) * Vect.from_angle(rand(0, 2 * PI)); 
     73            append(new Bounce(safe_pos(128), speed)); 
     74        } 
     75         
    6976        // we actually add the asteroids 
    7077        update(); 
     
    113120            if (pressed_key(SDLK_s)) {add_saucer();} 
    114121            if (pressed_key(SDLK_b)) {append(new Metal(safe_pos(64)));} 
     122            if (pressed_key(SDLK_k)) {append(new Bounce(safe_pos(128)));} 
    115123        } 
    116124    }