static Point() { pointShape = DrawableFactory.MakeCircle(1, new GraphicsStyle(Brushes.Red, null)); }
public MainForm() { InitializeComponent(); entSpawn = new EntitySpawner(); hitby = new DefaultValueDictionary <Entity, bool>(false); double border = 40; Particle boxC = (Particle)(new Vector <double>((double)ClientRectangle.Width / 2, (double)ClientRectangle.Height / 2)); Particle boxR = (Particle)(new Vector <double>((double)ClientRectangle.Width / 2 + border, (double)ClientRectangle.Height / 2 + border)); Box bgbox = new Box(boxR); EntityClass bgClass = new EntityClass("Background"); bg = new Entity(0, boxC, bgbox, new GraphicsStyle(Brushes.Black), bgClass); bsm = new BulletStyleManager(); InitializeBulletStyles(); keyMan = new KeyManager(); InitializeKeyManager(); int vx = 1, vx2 = 2; int vy = 2, vy2 = 4; Drawable mchar = DrawableFactory.MakeCircle(8, new GraphicsStyle(Brushes.Orange, Pens.Red)); game = new Game(new MainChar(mchar, bsm["MainChar"], ClientRectangle.Width / 2, ClientRectangle.Height - 20, 40)); InitializePhysicsManager(game.PhysicsManager); InitializeRenderManager(game.RenderManager); Particle p1 = new Particle(x => vx * x, y => vy * y); Particle p2 = new Particle(Utils.MakeClosure <double, double, double>(ClientRectangle.Width, (w, x) => w - vx2 * x), y => vy2 * y); Particle q = new Particle(t => 7 * t + 10 * Utils.FastCos(t), t => 3 * t + 10 * Utils.FastSin(t)); Ellipse entEl = new Ellipse(7); o1 = entEl.MakeDrawable(new GraphicsStyle(Brushes.Green)); double FULL = 2 * Math.PI; double cd = 1; int perCirc = 12; int offsets = 6; BulletEmission[] bEms = new BulletEmission[offsets], bEms2 = new BulletEmission[offsets]; double DOWN = Math.PI / 2; // Makes the spiral pattern with bullets of shape o2 Trajectory[][] arrs = new Trajectory[offsets][]; for (int i = 0; i < offsets; i++) { arrs[i] = new Trajectory[perCirc]; } for (int i = 0; i < perCirc; i++) { for (int j = 0; j < offsets; j++) { arrs[j][i] = TrajectoryFactory.AngleMagVel((i * offsets + j) * (FULL / offsets / perCirc) + DOWN, 10); } } for (int i = 0; i < offsets; i++) { bEms[i] = new BulletEmission(cd, 0, arrs[i], bsm["OrangeRed_5"]); } // Same as above, but we're gonna change the shape for (int i = 0; i < offsets; i++) { arrs[i] = new Trajectory[perCirc]; } for (int i = 0; i < perCirc; i++) { for (int j = 0; j < offsets; j++) { arrs[j][i] = TrajectoryFactory.AngleMagVel((i * offsets + j) * (FULL / offsets / perCirc) + DOWN, 10); } } for (int i = 0; i < offsets; i++) { bEms2[i] = new BulletEmission(cd, 0, arrs[i], bsm["Azure_5"]); } // Same as above, but we're gonna change the shape again and the path BulletEmission[] bEms3 = new BulletEmission[offsets]; for (int i = 0; i < offsets; i++) { arrs[i] = new Trajectory[perCirc]; } for (int i = 0; i < perCirc; i++) { for (int j = 0; j < offsets; j++) { arrs[j][i] = TrajectoryFactory.SpinningLinearAMVel((i * offsets + j) * (FULL / offsets / perCirc) + DOWN, 7 /*3*/, 0.5, 20); } } for (int i = 0; i < offsets; i++) { bEms3[i] = new BulletEmission(cd, 0, arrs[i], bsm["HotPink_5"]); } EntityClass enemyBullet = new EntityClass("EnemyBullet", "Bullet"); EntityClass enemy = new EntityClass("Enemy", "Character"); BulletEmitter em = new BulletEmitter(new BulletPattern(bEms, enemyBullet)); BulletEmitter em2 = new BulletEmitter(new BulletPattern(bEms2, enemyBullet)); BulletEmitter em3 = new BulletEmitter(new BulletPattern(bEms3, enemyBullet)); entSpawn.MakeType("RedSpiral", null, o1, entEl, enemy, em); e = entSpawn.Build("RedSpiral", 0, p1); e2 = entSpawn.Build("RedSpiral", 0, p2); Particle p3 = new Particle(x => 0.5 * x + 500, y => 3 * y); Entity e3 = entSpawn.Build("RedSpiral", 0, p3); Particle p4 = new Particle(x => - 0.25 * x + 300, y => 3.5 * y); Entity e4 = entSpawn.Build("RedSpiral", 0, p4); Particle p5 = new Particle(x => - 0.4 * x + 800, y => 2 * y); Entity e5 = entSpawn.Build("RedSpiral", 0, p5); game += bg; game = game + e + e2 + e3 + e4 + e5; entSpawn["WhiteSpiral"] = entSpawn["RedSpiral"].ChangeEmitter(em2, true); entSpawn["PinkWaves"] = entSpawn["RedSpiral"].ChangeEmitter(em3, true); //entSpawn.MakeType("WhiteSpinningSpiral",null, o1, entEl, enemy, em2); Entity e6 = entSpawn.Build("WhiteSpiral", 0, q); game += e6; Particle r = new Particle(Utils.MakeClosure <double, double, double>((double)ClientRectangle.Width / 3, (w, t) => w + 3 * t), t => 5 * t); Entity e7 = entSpawn.Build("PinkWaves", 0, r); game += e7; game.ResetTime(); BufferedGraphicsContext c = BufferedGraphicsManager.Current; buff = c.Allocate(CreateGraphics(), ClientRectangle); }