source: 2013/27/ArttuY/trunk/RampageRebellion/RampageRebellion/RampageRebellion/RRProjectileGenerator.cs @ 4451

Revision 4451, 3.6 KB checked in by eearyla, 7 years ago (diff)

Backup

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Jypeli;
6using Jypeli.Assets;
7using Jypeli.Controls;
8using Jypeli.Effects;
9using Jypeli.Widgets;
10
11/// @author arttuys
12///
13/// <summary>
14///
15/// A projectile generator that generates projectiles for RRWeapon. Designed to be reusable
16///
17/// </summary>
18
19public class RRProjectileGenerator
20{
21    public double pRadius;
22    public double pMass;
23    public string pImageName;
24
25    public double pWidth;
26    public double pHeight;
27
28    public double damageCaused = 1;
29    public int defaultCollisionIgnoreGroup = 3;
30    public bool ignoresCollisionResponse = false;
31    public bool explosionUponDestruction = false;
32    public bool canRotate = false;
33    public string defaultTag = "T";
34    public Angle slateAtAngle = new Angle();
35    public Shape projectileShape = null;
36    public double explosionRadius = 1;
37
38    public Action<RRProjectile> customDestructor = null;
39
40    public Color pColor;
41
42    private bool imageMode;
43    private bool rectMode;
44
45    public RRProjectileGenerator() : this (2, 0.1, Color.Turquoise)
46    {
47    }
48
49    public RRProjectileGenerator(double radius, double mass, Color color)
50    {
51        rectMode = false;
52        imageMode = false;
53
54        pRadius = radius;
55        pMass = mass;
56        pColor = color;
57    }
58
59    public RRProjectileGenerator(double radius, double mass, string imageName, double damage)
60    {
61        rectMode = false;
62        imageMode = true;
63
64        pRadius = radius;
65        pMass = mass;
66        pImageName = imageName;
67
68        damageCaused = damage;
69    }
70
71    public RRProjectileGenerator(double radius, double mass, Color color, double damage)
72    {
73        rectMode = false;
74        imageMode = false;
75
76        pRadius = radius;
77        pMass = mass;
78        pColor = color;
79
80        damageCaused = damage;
81    }
82
83    public RRProjectileGenerator(double width, double height, double mass, Color color, double damage)
84    {
85        rectMode = true;
86        imageMode = false;
87
88        pWidth = width;
89        pHeight = height;
90        pMass = mass;
91        pColor = color;
92
93        damageCaused = damage;
94    }
95
96    public RRProjectileGenerator(double width, double height, double mass, string imageName, double damage)
97    {
98        rectMode = true;
99        imageMode = true;
100
101        pWidth = width;
102        pHeight = height;
103        pMass = mass;
104        pImageName = imageName;
105
106        damageCaused = damage;
107    }
108
109    public RRProjectile projectile()
110    {
111        RRProjectile proj;
112
113        if (imageMode)
114        {
115            if (rectMode)
116            {
117                proj = new RRProjectile(pWidth, pHeight, pMass, pImageName);
118            }
119            else proj = new RRProjectile(pRadius, pMass, pImageName);
120        }
121        else
122        {
123            if (rectMode)
124            {
125                proj = new RRProjectile(pWidth, pHeight, pMass, pColor);
126            }
127            else proj = new RRProjectile(pRadius, pMass, pColor);
128        }
129
130        proj.Angle = slateAtAngle;
131        proj.Damage = damageCaused;
132        proj.CollisionIgnoreGroup = defaultCollisionIgnoreGroup;
133        proj.IgnoresCollisionResponse = ignoresCollisionResponse;
134        proj.Tag = defaultTag;
135        proj.explosionUponDestruction = this.explosionUponDestruction;
136        proj.explosionRadius = explosionRadius;
137        proj.CanRotate = this.canRotate;
138        proj.customDestroy = this.customDestructor;
139
140        if (projectileShape != null) proj.Shape = projectileShape;
141
142        return proj;
143
144    }
145}
Note: See TracBrowser for help on using the repository browser.