~eda-qa/dhlib/main

« back to all changes in this revision

Viewing changes to restricted/app-fortress/fortress/WaterRipplesObject.hx

  • Committer: edA-qa mort-ora-y
  • Date: 2010-02-16 05:36:32 UTC
  • Revision ID: eda-qa@disemia.com-20100216053632-60lt7fndfi3fgblw
first

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package fortress;
 
2
 
 
3
import mathx.Point2;
 
4
 
 
5
/**
 
6
 * Creates ripples in the water when a cannon ball hits water
 
7
 */
 
8
class WaterRipplesObject extends LiveObject
 
9
{
 
10
        var curRadius : Float;
 
11
        
 
12
        var time : Float;
 
13
        static var maxTime : Float  = 0.5;
 
14
        
 
15
        public function new( gd : GameDriver, atMP : Point2, radius : Float )
 
16
        {
 
17
                super( gd );
 
18
                at = atMP.clone();
 
19
                curRadius = radius;
 
20
                time = 0;
 
21
                actMode = LiveObject.actInvisible;
 
22
                blendMode = flash.display.BlendMode.LIGHTEN;
 
23
        }
 
24
        
 
25
        override function draw()
 
26
        {
 
27
                drawtime( time );
 
28
        }
 
29
        
 
30
        function drawtime( time : Float)
 
31
        {
 
32
                graphics.clear();
 
33
                //solid outer ring
 
34
                graphics.lineStyle( GConst.gridSizeX/5, 0x0080ff, (1-time/maxTime) );
 
35
                graphics.drawEllipse( -GConst.gridSizeX * curRadius, -GConst.gridSizeY * curRadius,
 
36
                        GConst.gridSizeX * curRadius * 2, GConst.gridSizeY * curRadius * 2);
 
37
                        
 
38
                //softer inner ring
 
39
                graphics.lineStyle( GConst.gridSizeX/5, 0x0080ff, (1-time/maxTime) * 0.5 );
 
40
                graphics.drawEllipse( -GConst.gridSizeX * curRadius * 0.5, -GConst.gridSizeY * curRadius * 0.5,
 
41
                        GConst.gridSizeX * curRadius * 2 * 0.5, GConst.gridSizeY * curRadius * 2 * 0.5);
 
42
                        
 
43
        }
 
44
        
 
45
        override public function step( elapsed : Float ) : StepResult
 
46
        {
 
47
                time += elapsed;
 
48
                if( time >= maxTime )
 
49
                        return StepResult.Remove;
 
50
                        
 
51
                curRadius += elapsed * GConst.gridSizeX / 5;
 
52
                        
 
53
                drawtime( time );
 
54
                return StepResult.Changed;
 
55
        }
 
56
}