1
0
Fork 0

Added star system names

This commit is contained in:
Michaël Lemaire 2015-03-25 01:00:00 +01:00
parent 83d4b0f97f
commit b76a83c157
5 changed files with 113 additions and 0 deletions

View file

@ -0,0 +1,29 @@
module SpaceTac.Game {
"use strict";
// A unique name generator
export class NameGenerator {
// List of available choices
private choices: string[];
// Random generator to use
private random: RandomGenerator;
constructor(choices: string[], random: RandomGenerator = new RandomGenerator()) {
this.choices = choices.slice(0);
this.random = random;
}
// Get a new unique name from available choices
getName(): string {
if (this.choices.length === 0) {
return null;
}
var index = this.random.throwInt(0, this.choices.length - 1);
var result = this.choices[index];
this.choices.splice(index, 1);
return result;
}
}
}

View file

@ -5,9 +5,67 @@ module SpaceTac.Game {
// A star system
export class Star extends Serializable {
// Available names for star systems
static NAMES_POOL = [
"Alpha Prime",
"Bright Skies",
"Costan Sector",
"Duncan's Legacy",
"Ethiopea",
"Fringe Space",
"Gesurd Deep",
"Helios",
"Justice Enclave",
"Kovak Second",
"Lumen Circle",
"Manoa Society",
"Neptune's Record",
"Ominous Murmur",
"Pirate's Landing",
"Quasuc Effect",
"Roaring Thunder",
"Safe Passage",
"Time Holes",
"Unknown Territory",
"Vulcan Terror",
"Wings Aurora",
"Xenos Trading",
"Yu's Pride",
"Zoki's Hammer",
"Astral Tempest",
"Burned Star",
"Crystal Bride",
"Death Star",
"Ether Bending",
"Forgotten Realm",
"Galactic Ring",
"Hegemonia",
"Jorgon Trails",
"Kemini System",
"Light Rain",
"Moons Astride",
"Nubia's Sisters",
"Opium Hide",
"Paradise Quest",
"Quarter Horizon",
"Rising Dust",
"Silence of Forge",
"Titan Feet",
"Unicorn Fly",
"Violated Sanctuary",
"World's Repose",
"Xanthia's Travel",
"Yggdrasil",
"Zone of Ending",
];
// Parent universe
universe: Universe;
// Name of the system (unique in the universe)
name: string;
// Location in the universe
x: number;
y: number;

View file

@ -71,6 +71,8 @@ module SpaceTac.Game {
generateStars(count: number, random: RandomGenerator = new RandomGenerator()): Star[] {
var result: Star[] = [];
var names = new NameGenerator(Star.NAMES_POOL);
while (count) {
var x = random.throw() * this.radius * 2.0 - this.radius;
var y = random.throw() * this.radius * 2.0 - this.radius;
@ -81,6 +83,7 @@ module SpaceTac.Game {
continue;
}
star.name = names.getName();
result.push(star);
count--;

View file

@ -0,0 +1,17 @@
/// <reference path="../../definitions/jasmine.d.ts"/>
module SpaceTac.Game.Specs {
"use strict";
describe("NameGenerator", () => {
it("generates unique names", () => {
var random = new RandomGenerator(0.48, 0.9, 0.1);
var gen = new NameGenerator(["a", "b", "c"], random);
expect(gen.getName()).toEqual("b");
expect(gen.getName()).toEqual("c");
expect(gen.getName()).toEqual("a");
expect(gen.getName()).toBeNull();
});
});
}

View file

@ -71,6 +71,12 @@ module SpaceTac.View {
sprite.input.useHandCursor = true;
this.stars.addChild(sprite);
var name = new Phaser.Text(this.game, star.x, star.y, star.name,
{align: "center", font: "bold 14px Arial", fill: "#90FEE3"});
name.scale.set(1.0 / this.scaling, 1.0 / this.scaling);
name.anchor.set(0.5, -0.4);
this.stars.addChild(name);
}
});
}