Merge pull request #1017 from vlidholt/master
Improves on demo game balance and adds levels for lasers
This commit is contained in:
commit
beb9197f7a
@ -4,7 +4,7 @@ final double _gameSizeWidth = 320.0;
|
|||||||
double _gameSizeHeight = 320.0;
|
double _gameSizeHeight = 320.0;
|
||||||
|
|
||||||
final double _chunkSpacing = 640.0;
|
final double _chunkSpacing = 640.0;
|
||||||
final int _chunksPerLevel = 6;
|
final int _chunksPerLevel = 8;
|
||||||
|
|
||||||
final bool _drawDebug = false;
|
final bool _drawDebug = false;
|
||||||
|
|
||||||
@ -198,33 +198,39 @@ class GameDemoNode extends NodeWithSize {
|
|||||||
lbl.position = new Point(0.0, yPos + _chunkSpacing / 2.0 - 150.0);
|
lbl.position = new Point(0.0, yPos + _chunkSpacing / 2.0 - 150.0);
|
||||||
_level.addChild(lbl);
|
_level.addChild(lbl);
|
||||||
} else if (part == 1) {
|
} else if (part == 1) {
|
||||||
_objectFactory.addAsteroids(10 + level * 4, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
_objectFactory.addAsteroids(10 + level * 2, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
||||||
} else if (part == 2) {
|
} else if (part == 2) {
|
||||||
_objectFactory.addEnemyScoutSwarm(4 + level * 2, yPos);
|
_objectFactory.addEnemyScoutSwarm(4 + level * 2, yPos);
|
||||||
} else if (part == 3) {
|
} else if (part == 3) {
|
||||||
_objectFactory.addAsteroids(10 + level * 4, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
_objectFactory.addAsteroids(10 + level * 2, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
||||||
} else if (part == 4) {
|
} else if (part == 4) {
|
||||||
_objectFactory.addEnemyDestroyerSwarm(2 + level, yPos);
|
_objectFactory.addEnemyDestroyerSwarm(2 + level, yPos);
|
||||||
} else if (part == 5) {
|
} else if (part == 5) {
|
||||||
_objectFactory.addAsteroids(10 + level * 4, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
_objectFactory.addAsteroids(10 + level * 2, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
||||||
|
} else if (part == 6) {
|
||||||
|
_objectFactory.addEnemyScoutSwarm(4 + level * 2, yPos);
|
||||||
|
} else if (part == 7) {
|
||||||
|
_objectFactory.addAsteroids(10 + level * 2, yPos, 0.0 + (level * 0.2).clamp(0.0, 0.7));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void fire() {
|
void fire() {
|
||||||
Laser shot0 = new Laser(_objectFactory, -90.0);
|
int laserLevel = _objectFactory.playerState.laserLevel;
|
||||||
|
|
||||||
|
Laser shot0 = new Laser(_objectFactory, laserLevel, -90.0);
|
||||||
shot0.position = _level.ship.position + new Offset(17.0, -10.0);
|
shot0.position = _level.ship.position + new Offset(17.0, -10.0);
|
||||||
_level.addChild(shot0);
|
_level.addChild(shot0);
|
||||||
|
|
||||||
Laser shot1 = new Laser(_objectFactory, -90.0);
|
Laser shot1 = new Laser(_objectFactory, laserLevel, -90.0);
|
||||||
shot1.position = _level.ship.position + new Offset(-17.0, -10.0);
|
shot1.position = _level.ship.position + new Offset(-17.0, -10.0);
|
||||||
_level.addChild(shot1);
|
_level.addChild(shot1);
|
||||||
|
|
||||||
if (_playerState.sideLaserActive) {
|
if (_playerState.sideLaserActive) {
|
||||||
Laser shot2 = new Laser(_objectFactory, 0.0);
|
Laser shot2 = new Laser(_objectFactory, laserLevel, 0.0);
|
||||||
shot2.position = _level.ship.position + new Offset(17.0, -10.0);
|
shot2.position = _level.ship.position + new Offset(17.0, -10.0);
|
||||||
_level.addChild(shot2);
|
_level.addChild(shot2);
|
||||||
|
|
||||||
Laser shot3 = new Laser(_objectFactory, 180.0);
|
Laser shot3 = new Laser(_objectFactory, laserLevel, 180.0);
|
||||||
shot3.position = _level.ship.position + new Offset(-17.0, -10.0);
|
shot3.position = _level.ship.position + new Offset(-17.0, -10.0);
|
||||||
_level.addChild(shot3);
|
_level.addChild(shot3);
|
||||||
}
|
}
|
||||||
|
@ -156,27 +156,54 @@ class Ship extends GameObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Laser extends GameObject {
|
class Laser extends GameObject {
|
||||||
double impact = 1.0;
|
double impact = 0.0;
|
||||||
|
|
||||||
Laser(GameObjectFactory f, double r) : super(f) {
|
final List<Color> laserColors = [
|
||||||
// Add sprite
|
new Color(0xff95f4fb),
|
||||||
_sprt = new Sprite(f.sheet["explosion_particle.png"]);
|
new Color(0xff5bff35),
|
||||||
_sprt.scale = 0.5;
|
new Color(0xffff886c),
|
||||||
_sprt.colorOverlay = new Color(0xff95f4fb);
|
new Color(0xffffd012),
|
||||||
_sprt.transferMode = sky.TransferMode.plus;
|
new Color(0xfffd7fff)
|
||||||
_sprt.rotation = r + 90.0;
|
];
|
||||||
addChild(_sprt);
|
|
||||||
|
Laser(GameObjectFactory f, int level, double r) : super(f) {
|
||||||
|
// Game object properties
|
||||||
radius = 10.0;
|
radius = 10.0;
|
||||||
removeLimit = 640.0;
|
removeLimit = 640.0;
|
||||||
|
|
||||||
|
|
||||||
canDamageShip = false;
|
canDamageShip = false;
|
||||||
canBeDamaged = false;
|
canBeDamaged = false;
|
||||||
|
impact = 1.0 + level * 0.5;
|
||||||
|
|
||||||
|
// Offset for movement
|
||||||
_offset = new Offset(math.cos(radians(r)) * 10.0, math.sin(radians(r)) * 10.0);
|
_offset = new Offset(math.cos(radians(r)) * 10.0, math.sin(radians(r)) * 10.0);
|
||||||
|
|
||||||
|
// Drawing properties
|
||||||
|
rotation = r + 90.0;
|
||||||
|
int numLasers = level % 3 + 1;
|
||||||
|
Color laserColor = laserColors[(level ~/ 3) % laserColors.length];
|
||||||
|
|
||||||
|
// Add sprites
|
||||||
|
List<Sprite> sprites = [];
|
||||||
|
for (int i = 0; i < numLasers; i++) {
|
||||||
|
Sprite sprt = new Sprite(f.sheet["explosion_particle.png"]);
|
||||||
|
sprt.scale = 0.5;
|
||||||
|
sprt.colorOverlay = laserColor;
|
||||||
|
sprt.transferMode = sky.TransferMode.plus;
|
||||||
|
addChild(sprt);
|
||||||
|
sprites.add(sprt);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Position the individual sprites
|
||||||
|
if (numLasers == 2) {
|
||||||
|
sprites[0].position = new Point(-3.0, 0.0);
|
||||||
|
sprites[1].position = new Point(3.0, 0.0);
|
||||||
|
} else if (numLasers == 3) {
|
||||||
|
sprites[0].position = new Point(-4.0, 0.0);
|
||||||
|
sprites[1].position = new Point(4.0, 0.0);
|
||||||
|
sprites[2].position = new Point(0.0, -2.0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Sprite _sprt;
|
|
||||||
Offset _offset;
|
Offset _offset;
|
||||||
|
|
||||||
void move() {
|
void move() {
|
||||||
|
@ -28,6 +28,8 @@ class PlayerState extends Node {
|
|||||||
final SpriteSheet _sheetUI;
|
final SpriteSheet _sheetUI;
|
||||||
final SpriteSheet _sheetGame;
|
final SpriteSheet _sheetGame;
|
||||||
|
|
||||||
|
int laserLevel = 0;
|
||||||
|
|
||||||
Sprite _sprtBgScore;
|
Sprite _sprtBgScore;
|
||||||
ScoreDisplay _scoreDisplay;
|
ScoreDisplay _scoreDisplay;
|
||||||
Sprite _sprtBgCoins;
|
Sprite _sprtBgCoins;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user