Added action listing from attached equipment
This commit is contained in:
parent
03a0ab8e39
commit
7fae46b53e
|
@ -41,7 +41,7 @@ gulp.task('copy', function () {
|
||||||
var tsProject = ts.createProject({
|
var tsProject = ts.createProject({
|
||||||
declarationFiles: true,
|
declarationFiles: true,
|
||||||
noExternalResolve: true,
|
noExternalResolve: true,
|
||||||
noImplicitAny: true,
|
noImplicitAny: false, // Handled by tslint
|
||||||
sortOutput: true,
|
sortOutput: true,
|
||||||
sourceRoot: '../scripts'
|
sourceRoot: '../scripts'
|
||||||
});
|
});
|
||||||
|
|
|
@ -23,5 +23,8 @@ module SpaceTac.Game {
|
||||||
|
|
||||||
// Level requirement
|
// Level requirement
|
||||||
min_level: number;
|
min_level: number;
|
||||||
|
|
||||||
|
// Action associated with this equipment
|
||||||
|
action: BaseAction;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,8 @@ module SpaceTac.Game {
|
||||||
result.ap_usage = this.ap_usage.getProportional(power);
|
result.ap_usage = this.ap_usage.getProportional(power);
|
||||||
result.min_level = this.min_level.getProportional(power);
|
result.min_level = this.min_level.getProportional(power);
|
||||||
|
|
||||||
|
result.action = this.getActionForEquipment(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,5 +102,10 @@ module SpaceTac.Game {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Method to reimplement to assign an action to a generated equipment
|
||||||
|
protected getActionForEquipment(equipment: Equipment): BaseAction {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,11 +90,19 @@ module SpaceTac.Game {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the list of actions available
|
// Get the list of actions available
|
||||||
// This list does not filter out actions unavailable due to insufficient AP, it justs filter out
|
// This list does not filter out actions unavailable due to insufficient AP, it only filters out
|
||||||
// actions that are not allowed/available at all on the ship
|
// actions that are not allowed/available at all on the ship
|
||||||
getAvailableActions(): BaseAction[] {
|
getAvailableActions(): BaseAction[] {
|
||||||
// TODO
|
var actions: BaseAction[] = [];
|
||||||
return [new MoveAction(), new EndTurnAction()];
|
|
||||||
|
this.slots.forEach((slot: Slot) => {
|
||||||
|
if (slot.attached && slot.attached.action) {
|
||||||
|
actions.push(slot.attached.action);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
actions.push(new EndTurnAction());
|
||||||
|
return actions;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Consumes action points
|
// Consumes action points
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
module SpaceTac.Game {
|
module SpaceTac.Game {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
export enum SlotType {Armor, Shield, Engine, Power, Weapon, }
|
// Types of slots
|
||||||
|
export enum SlotType {
|
||||||
|
Armor,
|
||||||
|
Shield,
|
||||||
|
Engine,
|
||||||
|
Power,
|
||||||
|
Weapon
|
||||||
|
}
|
||||||
|
|
||||||
// Slot to attach an equipment to a ship
|
// Slot to attach an equipment to a ship
|
||||||
export class Slot {
|
export class Slot {
|
||||||
|
|
18
src/scripts/game/equipments/ConventionalEngine.ts
Normal file
18
src/scripts/game/equipments/ConventionalEngine.ts
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
/// <reference path="../LootTemplate.ts"/>
|
||||||
|
|
||||||
|
module SpaceTac.Game.Equipments {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Equipment: Conventional Engine
|
||||||
|
export class ConventionalEngine extends LootTemplate {
|
||||||
|
constructor() {
|
||||||
|
super(SlotType.Engine, "Conventional Engine");
|
||||||
|
|
||||||
|
this.min_level = new IntegerRange(1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected getActionForEquipment(equipment: Equipment): BaseAction {
|
||||||
|
return new MoveAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,5 +34,26 @@ module SpaceTac.Game {
|
||||||
expect(ship.arena_x).toBeCloseTo(52.333333, 0.00001);
|
expect(ship.arena_x).toBeCloseTo(52.333333, 0.00001);
|
||||||
expect(ship.arena_y).toEqual(50);
|
expect(ship.arena_y).toEqual(50);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("lists available actions from attached equipment", function () {
|
||||||
|
var ship = new Ship(null, "Test");
|
||||||
|
var actions: BaseAction[];
|
||||||
|
var slot: Slot;
|
||||||
|
var equipment: Equipment;
|
||||||
|
|
||||||
|
actions = ship.getAvailableActions();
|
||||||
|
expect(actions.length).toBe(1);
|
||||||
|
expect(actions[0].code).toEqual("endturn");
|
||||||
|
|
||||||
|
slot = ship.addSlot(SlotType.Engine);
|
||||||
|
equipment = new Equipment();
|
||||||
|
equipment.action = new MoveAction();
|
||||||
|
slot.attach(equipment);
|
||||||
|
|
||||||
|
actions = ship.getAvailableActions();
|
||||||
|
expect(actions.length).toBe(2);
|
||||||
|
expect(actions[0].code).toEqual("move");
|
||||||
|
expect(actions[1].code).toEqual("endturn");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue