source: 2015/23/ohjaajat/ValasPeliEsittely/ValasPeli/ValasPeli/Diver.cs @ 7174

Revision 7173, 3.3 KB checked in by sieerinn, 3 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10class Diver : PlatformCharacter2
11{
12    private DoubleMeter lifeCounter = new DoubleMeter(10.0);
13
14    private String name;
15    public String Name
16    {
17        get { return this.name; }
18        set{ this.name = value; }
19    }
20
21    private Timer losingOxygen = new Timer();
22    public Timer LosingOxygen
23    {
24        get { return losingOxygen; }
25        set { losingOxygen = value; }
26    }
27
28    private ProgressBar visibleLife;
29    public ProgressBar VisibleLife
30    {
31        get { return visibleLife; }
32        set { visibleLife = value; }
33    }
34
35    private String osunut;
36    public String OsunutValaaseen
37    {
38        get { return osunut; }
39        set { osunut = value;  }
40    }
41
42   
43    public double Oxygen
44    {
45        get {
46            if (this.LifeCounter == null)
47            {
48                return 0;
49            }
50            return this.lifeCounter.Value;
51        }
52        set {
53            if (this.LifeCounter == null)
54            {
55                return;
56            }
57            this.lifeCounter.Value = value;
58        }
59    }
60
61    public double MaxOxygen
62    {
63        get {
64            if (this.lifeCounter == null)
65            {
66                return 0;
67            }
68            return this.lifeCounter.MaxValue;
69        }
70    }
71
72    public DoubleMeter LifeCounter
73    {
74        get { return this.lifeCounter; }
75        set { this.lifeCounter = value; }
76    }
77
78    public bool HasDrowned = false;
79
80    public Image[] TukehdusKuvat;
81
82    public Diver(double width, double height) : this(width, height, 0, 20, 20)
83    {
84       
85    }
86
87    public Diver(double width, double height, double minLife, double maxLife, double defaultLife) : base(width, height)
88    {
89        this.lifeCounter.MinValue = minLife;
90        this.lifeCounter.MaxValue = maxLife;
91        this.lifeCounter.Value = defaultLife;
92
93        this.losingOxygen.Interval = 1;
94        this.losingOxygen.Timeout += delegate { this.Oxygen--; };
95
96        this.visibleLife = new ProgressBar(60, 22); //(this.Width, this.Height/8);
97        this.Add(visibleLife);
98        this.visibleLife.Position += new Vector(0, this.Height/2 + this.Height / 5);
99        this.visibleLife.BindTo(this.lifeCounter);
100        this.visibleLife.Color = Color.Aquamarine;
101
102        Timer.SingleShot(3.0, delegate
103        {
104            this.losingOxygen.Start();
105        });
106    }
107
108    public void StopBreathing()
109    {
110        this.losingOxygen.Stop();
111    }
112
113    /// <summary>
114    /// Drown the diver. (It dies :<)
115    /// </summary>
116    public void Drown()
117    {
118        this.HasDrowned = true;
119        this.IsVisible = false;
120        this.IgnoresCollisionResponse = true;
121        this.IgnoresPhysicsLogics = true;
122        this.visibleLife.IsVisible = false;
123    }
124
125    /// <summary>
126    /// Wake the diver back from the dead.
127    /// </summary>
128    public void Resusciate()
129    {
130        this.HasDrowned = false;
131        this.IsVisible = true;
132        this.IgnoresCollisionResponse = false;
133        this.IgnoresPhysicsLogics = false;
134        this.visibleLife.IsVisible = true;
135    }
136   
137}
138
Note: See TracBrowser for help on using the repository browser.