mirror of
https://github.com/EDCD/coriolis.git
synced 2025-12-09 06:43:24 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67bd56e692 | ||
|
|
95f5e8e5ae | ||
|
|
eb52a7548c | ||
|
|
b479b61926 | ||
|
|
726a08b05b | ||
|
|
fc2f76c31c | ||
|
|
839e1a5cbd | ||
|
|
12beeffae0 | ||
|
|
83ad7d9f6c | ||
|
|
6e65d67f14 | ||
|
|
a127e2f5a5 | ||
|
|
9154b7f38c | ||
|
|
c2d8cad249 | ||
|
|
e9ffe5baec | ||
|
|
fffa325e83 | ||
|
|
ed14ed2bb7 | ||
|
|
7c9e020b88 | ||
|
|
d711d1519b | ||
|
|
3361f7e435 | ||
|
|
3a79f99f77 | ||
|
|
ff25b55c1f | ||
|
|
ae6f6b0da1 | ||
|
|
6dc714371d | ||
|
|
5762b133e5 |
@@ -18,7 +18,6 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<link rel="apple-touch-icon-precomposed" sizes="180x180" href="/images/logo/apple-touch-icon-precomposed.png">
|
||||
<link rel="apple-touch-icon" href="/images/logo/apple-touch-icon.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/images/logo/apple-touch-icon-180x180.png">
|
||||
<!-- iPhone, iPod Touch, portrait -->
|
||||
<link href="/images/splash/320x460.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
|
||||
<!-- iPhone, iPod Touch, landscape -->
|
||||
|
||||
@@ -100,11 +100,11 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
|
||||
$scope.speedSeries = {
|
||||
xMin: 0,
|
||||
xMax: ship.cargoCapacity,
|
||||
yMax: 500,
|
||||
yMax: calcSpeed(ship.unladenMass, ship.speed, $scope.th.c, ship.pipSpeed)['4 Pips'],
|
||||
yMin: 0,
|
||||
series: ['speed', 'boost'],
|
||||
series: ['4 Pips', '2 Pips', '0 Pips'],
|
||||
func: function(cargo) { // X Axis is Cargo
|
||||
return calcSpeed(ship.unladenMass + $scope.fuel + cargo, ship.speed, ship.boost, $scope.th.c);
|
||||
return calcSpeed(ship.unladenMass + $scope.fuel + cargo, ship.speed, $scope.th.c, ship.pipSpeed);
|
||||
}
|
||||
};
|
||||
$scope.speedChart = {
|
||||
@@ -360,6 +360,7 @@ angular.module('app').controller('OutfitController', ['$window', '$rootScope', '
|
||||
$scope.speedSeries.xMax = $scope.trSeries.xMax = $scope.jrSeries.xMax = ship.cargoCapacity;
|
||||
$scope.jrSeries.yMax = ship.unladenRange;
|
||||
$scope.trSeries.yMax = ship.unladenTotalRange;
|
||||
$scope.speedSeries.yMax = calcSpeed(ship.unladenMass, ship.speed, $scope.th.c, ship.pipSpeed)['4 Pips'];
|
||||
updateRetrofitCosts();
|
||||
win.triggerHandler('pwrchange');
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ angular.module('app').directive('barChart', ['$window', '$translate', '$rootScop
|
||||
var data = scope.data,
|
||||
width = element[0].offsetWidth,
|
||||
w = width - margin.left - margin.right,
|
||||
height = 45 + (30 * data.length * $rootScope.sizeRatio),
|
||||
height = 50 + (30 * data.length * $rootScope.sizeRatio),
|
||||
h = height - margin.top - margin.bottom,
|
||||
maxVal = d3.max(data, function(d) { return d3.max(properties, function(p) {return d[p]; }); });
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ angular.module('app').directive('componentSelect', ['$translate', function($tran
|
||||
var o = opts[i];
|
||||
var id = o.id || (o.class + o.rating); // Common components' ID is their class and rating
|
||||
|
||||
if (i > 0 && opts.length > 4 && o.class != prevClass && (o.rating != prevRating || o.mode)) {
|
||||
if (i > 0 && opts.length > 3 && o.class != prevClass && (o.rating != prevRating || o.mode) && o.grp != 'pa') {
|
||||
list.push('<br/>');
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
angular.module('app').directive('lineChart', ['$window', '$translate', '$rootScope', function($window, $translate, $rootScope) {
|
||||
|
||||
var RENDER_POINTS = 20; // Only render 20 points on the graph
|
||||
|
||||
return {
|
||||
restrict: 'A',
|
||||
scope: {
|
||||
@@ -8,7 +11,7 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
|
||||
link: function(scope, element) {
|
||||
var seriesConfig = scope.series,
|
||||
series = seriesConfig.series,
|
||||
color = d3.scale.ordinal().range([ '#ff8c0d', '#1fb0ff', '#a05d56', '#d0743c']),
|
||||
color = d3.scale.ordinal().range([ '#ff8c0d']),
|
||||
config = scope.config,
|
||||
labels = config.labels,
|
||||
margin = { top: 15, right: 15, bottom: 35, left: 60 },
|
||||
@@ -51,8 +54,19 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
|
||||
.text($translate.instant(labels.xAxis.title) + ' (' + $translate.instant(labels.xAxis.unit) + ')');
|
||||
|
||||
// Create and Add tooltip
|
||||
var tipWidth = (Math.max(labels.yAxis.unit.length, labels.xAxis.unit.length) * 1.25) + 2.5;
|
||||
var tips = vis.append('g').style('display', 'none');
|
||||
var tipHeight = 2 + (1.25 * (series ? series.length : 0.75));
|
||||
var tips = vis.append('g').style('display', 'none').attr('class', 'tooltip');
|
||||
var markers = vis.append('g').style('display', 'none');
|
||||
|
||||
tips.append('rect')
|
||||
.attr('height', tipHeight + 'em')
|
||||
.attr('y', (-tipHeight / 2) + 'em')
|
||||
.attr('class', 'tip');
|
||||
|
||||
tips.append('text')
|
||||
.attr('class', 'label x')
|
||||
.attr('dy', (-tipHeight / 2) + 'em')
|
||||
.attr('y', '1.25em');
|
||||
|
||||
var background = vis.append('rect') // Background to capture hover/drag
|
||||
.attr('fill-opacity', 0)
|
||||
@@ -84,7 +98,7 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
|
||||
yMin = seriesConfig.yMin,
|
||||
w = width - margin.left - margin.right,
|
||||
h = height - margin.top - margin.bottom,
|
||||
s, val, yVal, delta;
|
||||
c, s, val, yVal, delta;
|
||||
|
||||
data.length = 0; // Reset Data array
|
||||
|
||||
@@ -105,12 +119,14 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
|
||||
data[s].push( [ xMin, yVal[ series[s] ] ], [ 1, yVal[ series[s] ] ]);
|
||||
}
|
||||
} else {
|
||||
delta = (xMax - xMin) / 30; // Only render 30 points on the graph
|
||||
for (val = xMin; val <= xMax; val += delta) {
|
||||
delta = (xMax - xMin) / RENDER_POINTS;
|
||||
val = 0;
|
||||
for (c = 0; c <= RENDER_POINTS; c++) {
|
||||
yVal = func(val);
|
||||
for (s = 0; s < series.length; s++) {
|
||||
data[s].push([ val, yVal[ series[s] ] ]);
|
||||
}
|
||||
val += delta;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,9 +136,11 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
|
||||
yVal = func(xMin);
|
||||
seriesData.push([ xMin, yVal ], [ 1, yVal ]);
|
||||
} else {
|
||||
delta = (xMax - xMin) / 30; // Only render 30 points on the graph
|
||||
for (val = xMin; val <= xMax; val += delta) {
|
||||
delta = (xMax - xMin) / RENDER_POINTS;
|
||||
val = 0;
|
||||
for (c = 0; c <= RENDER_POINTS; c++) {
|
||||
seriesData.push([val, func(val) ]);
|
||||
val += delta;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,30 +170,58 @@ angular.module('app').directive('lineChart', ['$window', '$translate', '$rootSco
|
||||
.attr('stroke-width', 2)
|
||||
.attr('d', line);
|
||||
|
||||
var tip = tips.selectAll('g.tooltip').data(data).enter().append('g').attr('class', 'tooltip');
|
||||
tip.append('rect').attr('width', tipWidth + 'em').attr('height', '2em').attr('x', '0.5em').attr('y', '-1em').attr('class', 'tip');
|
||||
tip.append('circle').attr('class', 'marker').attr('r', 4);
|
||||
tip.append('text').attr('class', 'label x').attr('y', '-0.25em');
|
||||
tip.append('text').attr('class', 'label y').attr('y', '0.85em');
|
||||
tips.selectAll('text.label.y').data(data).enter()
|
||||
.append('text')
|
||||
.attr('class', 'label y')
|
||||
.attr('dy', (-tipHeight / 2) + 'em')
|
||||
.attr('y', function(d, i) { return 1.25 * (i + 2) + 'em'; });
|
||||
|
||||
markers.selectAll('circle.marker').data(data).enter().append('circle').attr('class', 'marker').attr('r', 4);
|
||||
}
|
||||
|
||||
function showTip() {
|
||||
tips.style('display', null);
|
||||
markers.style('display', null);
|
||||
}
|
||||
|
||||
function hideTip() {
|
||||
if (!dragging) {
|
||||
tips.style('display', 'none');
|
||||
markers.style('display', 'none');
|
||||
}
|
||||
}
|
||||
|
||||
function moveTip() {
|
||||
var xPos = d3.mouse(this)[0], x0 = x.invert(xPos), y0 = func(x0), flip = (x0 / x.domain()[1] > 0.65);
|
||||
var tip = tips.selectAll('g.tooltip').attr('transform', function(d, i) { return 'translate(' + x(x0) + ',' + y(series ? y0[series[i]] : y0) + ')'; });
|
||||
tip.selectAll('rect').attr('x', flip ? (-tipWidth - 0.5) + 'em' : '0.5em').style('text-anchor', flip ? 'end' : 'start');
|
||||
tip.selectAll('text.label').attr('x', flip ? '-1em' : '1em').style('text-anchor', flip ? 'end' : 'start');
|
||||
tip.selectAll('text.label.x').text(fmtLong(x0) + ' ' + $translate.instant(labels.xAxis.unit));
|
||||
tips.selectAll('text.label.y').text(function(d, i) { return fmtLong(series ? y0[series[i]] : y0) + ' ' + $translate.instant(labels.yAxis.unit); });
|
||||
var xPos = d3.mouse(this)[0],
|
||||
x0 = x.invert(xPos),
|
||||
y0 = func(x0),
|
||||
yTotal = 0,
|
||||
flip = (x0 / x.domain()[1] > 0.65),
|
||||
tipWidth = 0,
|
||||
minTransY = (tips.selectAll('rect').node().getBoundingClientRect().height / 2) - margin.top;
|
||||
|
||||
tips.selectAll('text.label.y').text(function(d, i) {
|
||||
var yVal = series ? y0[series[i]] : y0;
|
||||
yTotal += yVal;
|
||||
return (series ? series[i] : '') + ' ' + fmtLong(yVal) + ' ' + $translate.instant(labels.yAxis.unit);
|
||||
});
|
||||
|
||||
tips.selectAll('text').each(function() {
|
||||
if (this.getBBox().width > tipWidth) {
|
||||
tipWidth = Math.ceil(this.getBBox().width);
|
||||
}
|
||||
});
|
||||
|
||||
tipWidth += 8;
|
||||
markers.selectAll('circle.marker').attr('cx', x(x0)).attr('cy', function(d, i) { return y(series ? y0[series[i]] : y0); });
|
||||
tips.selectAll('text.label').attr('x', flip ? -12 : 12).style('text-anchor', flip ? 'end' : 'start');
|
||||
tips.selectAll('text.label.x').text(fmtLong(x0) + ' ' + $translate.instant(labels.xAxis.unit));
|
||||
tips.attr('transform', 'translate(' + x(x0) + ',' + Math.max(minTransY, y(yTotal / (series ? series.length : 1))) + ')');
|
||||
tips.selectAll('rect')
|
||||
.attr('width', tipWidth + 4)
|
||||
.attr('x', flip ? -tipWidth - 12 : 8)
|
||||
.style('text-anchor', flip ? 'end' : 'start');
|
||||
|
||||
}
|
||||
|
||||
function updateFormats() {
|
||||
|
||||
@@ -15,35 +15,35 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
shortMonths: ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.']
|
||||
});
|
||||
$translateProvider.translations('fr', {
|
||||
PHRASE_EXPORT_DESC: 'Un export détaillé en JSON de votre configuration pour l\'utilisation dans d\'autres sites et outils',
|
||||
PHRASE_EXPORT_DESC: 'Export détaillé en JSON de votre configuration pour utilisation sur d\'autres sites et outils',
|
||||
'A-Rated': 'Classe-A ',
|
||||
about: 'à propos',
|
||||
added: 'ajouté',
|
||||
Advanced: 'Avancé',
|
||||
'Advanced Discovery Scanner': 'Scanner de découverte avancé',
|
||||
agility: 'agilité',
|
||||
ammo: 'munition',
|
||||
PHRASE_CONFIRMATION: 'Êtes-vous sûr?',
|
||||
agility: 'manœuvrabilité',
|
||||
ammo: 'munitions',
|
||||
PHRASE_CONFIRMATION: 'Êtes-vous sûr ?',
|
||||
armour: 'Armure',
|
||||
am: 'Unité de réparation automatique',
|
||||
available: 'Disponibilité',
|
||||
backup: 'sauvegarde',
|
||||
'Basic Discovery Scanner': 'Scanner de découverte de base',
|
||||
bl: 'Laser rayon',
|
||||
'Basic Discovery Scanner': 'Scanner de découverte simple',
|
||||
bl: 'Rayon Laser',
|
||||
bins: 'bacs',
|
||||
build: 'Configuration',
|
||||
'build name': 'Nom de la configuration',
|
||||
builds: 'Configurations',
|
||||
bh: 'Coque',
|
||||
ul: 'Laser salves',
|
||||
ul: 'Laser à rafale',
|
||||
buy: 'Acheter',
|
||||
cancel: 'Annuler',
|
||||
c: 'Canon',
|
||||
cargo: 'Soute',
|
||||
'Cargo Hatch': 'hublot de chargement',
|
||||
'Cargo Hatch': 'Ecoutille de soute',
|
||||
cr: 'Compartiment de soute',
|
||||
cs: 'Scanner de soute',
|
||||
cells: 'Cellule',
|
||||
cells: 'Cellules',
|
||||
'Chaff Launcher': 'Lanceur de paillettes',
|
||||
close: 'fermer',
|
||||
cc: 'Contrôleur de prospecteur',
|
||||
@@ -66,15 +66,15 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
'detailed export': 'export détaillé',
|
||||
'Detailed Surface Scanner': 'Scanner de surface détaillé',
|
||||
disabled: 'désactivé',
|
||||
discount: 'ristourne',
|
||||
discount: 'réduction',
|
||||
Distruptor: 'Disrupteur',
|
||||
dc: 'Ordinateur d\'appontage',
|
||||
done: 'Fait',
|
||||
done: 'Valider',
|
||||
'edit data': 'Editer donnée',
|
||||
efficiency: 'efficience',
|
||||
'Electronic Countermeasure': 'Contre mesure électronique',
|
||||
empty: 'Vide',
|
||||
'enter name': 'Entrer nom',
|
||||
'enter name': 'Entrer un nom',
|
||||
fixed: 'fixé',
|
||||
fc: 'Canon à fragmentation',
|
||||
fd: 'Réacteur FSD',
|
||||
@@ -96,15 +96,14 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
import: 'Importer',
|
||||
'import all': 'Importer tout',
|
||||
insurance: 'Assurance',
|
||||
'Intermediate Discovery Scanner': 'Scanner de découverte de portée intermédiaire',
|
||||
'Intermediate Discovery Scanner': 'Scanner de découverte intermédiaire',
|
||||
'internal compartments': 'compartiments internes',
|
||||
'jump range': 'Distance de saut',
|
||||
jumps: 'Sauts',
|
||||
kw: 'Détecteur d\'avis de recherche',
|
||||
L: 'Langage',
|
||||
laden: 'chargé',
|
||||
language: 'Langage',
|
||||
large: 'grand',
|
||||
large: 'large',
|
||||
ls: 'Support vital',
|
||||
'Lightweight Alloy': 'alliage léger',
|
||||
'lock factor': 'facteur inhibition de masse',
|
||||
@@ -121,17 +120,17 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
mc: 'Canon multiple',
|
||||
'net cost': 'coûts nets',
|
||||
no: 'non',
|
||||
PHRASE_NO_BUILDS: 'Défaut de configuration pour comparaison',
|
||||
PHRASE_NO_RETROCH: 'configuration non modifiée',
|
||||
PHRASE_NO_BUILDS: 'Aucune configuration ajoutée pour comparaison',
|
||||
PHRASE_NO_RETROCH: 'Configuration non modifiée',
|
||||
none: 'aucun',
|
||||
'none created': 'Rien de créé',
|
||||
off: 'éteint',
|
||||
on: 'allumé',
|
||||
'optimal mass': 'masse optimale',
|
||||
'optimize mass': 'optimiser masse',
|
||||
overwrite: 'écraser',
|
||||
overwrite: 'remplacer',
|
||||
Pacifier: 'Pacificateur',
|
||||
PHRASE_IMPORT: 'Coller JSON ou importer ici',
|
||||
PHRASE_IMPORT: 'Coller ici votre JSON à importer',
|
||||
pen: 'pén.',
|
||||
penetration: 'pénétration',
|
||||
permalink: 'lien durable',
|
||||
@@ -145,7 +144,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
proceed: 'continuer',
|
||||
pc: 'Drône de minage',
|
||||
pl: 'Laser à impulsion',
|
||||
PWR: 'Puissance',
|
||||
PWR: 'P',
|
||||
rg: 'Canon électromagnétique',
|
||||
range: 'portée',
|
||||
rate: 'cadence',
|
||||
@@ -165,7 +164,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
ROF: 'cadence',
|
||||
save: 'sauvegarder',
|
||||
sc: 'scanner',
|
||||
PHRASE_SELECT_BUILDS: 'Sélectionner configurations à comparer',
|
||||
PHRASE_SELECT_BUILDS: 'Sélectionner les configurations à comparer',
|
||||
sell: 'vendre',
|
||||
s: 'détecteurs',
|
||||
settings: 'paramètres',
|
||||
@@ -195,6 +194,6 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
'utility mounts': 'Support utilitaire',
|
||||
WEP: 'ARM',
|
||||
yes: 'oui',
|
||||
PHRASE_BACKUP_DESC: 'Exportation détaillée des données Coriolis pour l\'utilisation dans d\'autres sites et outils'
|
||||
PHRASE_BACKUP_DESC: 'Exportation détaillée des données de Coriolis pour l\'utilisation dans d\'autres sites et outils'
|
||||
});
|
||||
}]);
|
||||
|
||||
@@ -17,5 +17,5 @@ angular.module('app').config(['$translateProvider', function($translateProvider)
|
||||
de: 'Deutsh',
|
||||
//es: 'Español',
|
||||
fr: 'Français',
|
||||
ru: 'ру́сский язы́к'
|
||||
ru: 'ру́сский'
|
||||
});
|
||||
|
||||
@@ -31,7 +31,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
armour: 'Броня',
|
||||
am: 'Ремонтный модуль',
|
||||
available: 'доступно',
|
||||
backup: 'бэкап',
|
||||
backup: 'Резервная копия',
|
||||
'Basic Discovery Scanner': 'Стандартный исследовательский сканер',
|
||||
bl: 'Лучевой лазер',
|
||||
beta: 'Бета',
|
||||
@@ -40,11 +40,11 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
build: 'cборка',
|
||||
'build name': 'название сборки',
|
||||
builds: 'cборки',
|
||||
bh: 'Переборки',
|
||||
bh: 'Корпус',
|
||||
ul: 'Мультиимпульсный лазер',
|
||||
buy: 'купить',
|
||||
cancel: 'отменить',
|
||||
c: 'Крупнокалиберное орудие',
|
||||
c: 'Пушка',
|
||||
capital: 'Крупный',
|
||||
cargo: 'Груз',
|
||||
'Cargo Hatch': 'Грузовой люк',
|
||||
@@ -71,7 +71,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
delete: 'Удалить',
|
||||
'delete all': 'Удалить все',
|
||||
dep: 'Вып',
|
||||
deployed: 'Готово',
|
||||
deployed: 'Открыты',
|
||||
'detailed export': 'Подробный экспорт',
|
||||
'Detailed Surface Scanner': 'Подробный сканер поверхности',
|
||||
disabled: 'Отключено',
|
||||
@@ -79,15 +79,15 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
Distruptor: 'Дисраптор',
|
||||
dc: 'Стыковочный компьютер',
|
||||
done: 'готово',
|
||||
DPS: 'ПВС',
|
||||
DPS: 'УВС',
|
||||
'edit data': 'Редактирование',
|
||||
efficiency: 'Эффективность',
|
||||
'Electronic Countermeasure': 'Электронное противодействие',
|
||||
'Electronic Countermeasure': 'Электронная противомера',
|
||||
empty: 'пусто',
|
||||
Enforcer: 'Энфорсер',
|
||||
ENG: 'ДВГ',
|
||||
'enter name': 'Введите имя',
|
||||
EPS: 'э/с',
|
||||
EPS: 'ЭВС',
|
||||
export: 'Экспорт',
|
||||
fixed: 'Фиксированое',
|
||||
forum: 'Форум',
|
||||
@@ -97,11 +97,11 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
|
||||
fi: 'Перехватчик FSD',
|
||||
fuel: 'Топливо',
|
||||
fs: 'Топливозаборник',
|
||||
fs: 'Топливосборщик',
|
||||
ft: 'Топливный бак',
|
||||
fx: 'Контроллер Дрона-заправщика',
|
||||
'full tank': 'Полный бак',
|
||||
Gimballed: 'Доводимое',
|
||||
Gimballed: 'Шарнирное',
|
||||
H: 'O',
|
||||
hardpoints: 'Орудийные порты',
|
||||
hb: 'Контроллер "дрон-взломщик"',
|
||||
@@ -133,13 +133,13 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
max: 'Макс',
|
||||
'max mass': 'Максимальная масса',
|
||||
medium: 'Средний',
|
||||
'Military Grade Composite': 'Композит военного класса',
|
||||
nl: 'Минный аппарат',
|
||||
'Military Grade Composite': 'Военный композит',
|
||||
nl: 'Минноукладчик',
|
||||
'Mining Lance': 'Бурильная сулица',
|
||||
ml: 'Горный лазер',
|
||||
'Mirrored Surface Composite': 'Композит с зеркальной поверхностью',
|
||||
ml: 'Бурильный лазер',
|
||||
'Mirrored Surface Composite': 'Зеркальный композит',
|
||||
mr: 'Ракетная установка',
|
||||
mc: 'Скорострельное орудие',
|
||||
mc: 'Многоствольное орудие',
|
||||
'net cost': 'разница в цене',
|
||||
no: 'Нет',
|
||||
PHRASE_NO_BUILDS: 'Нечего сравнивать',
|
||||
@@ -153,7 +153,7 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
'optimize mass': 'Оптимизировать массу',
|
||||
overwrite: 'перезаписать',
|
||||
Pacifier: 'Миротворец',
|
||||
'Pack-Hound': 'Ракеты "Собачья стая" or original name(eng)',
|
||||
'Pack-Hound': 'Ракета "Гончая"',
|
||||
PHRASE_IMPORT: 'Для импорта вставьте код в эту форму',
|
||||
pen: 'ПБ',
|
||||
penetration: 'Пробитие',
|
||||
@@ -170,10 +170,10 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
pc: 'Контроллер "Дрон-исследователь"',
|
||||
pl: 'Импульсный лазер',
|
||||
PWR: 'Эн',
|
||||
rg: 'Рельсовая пушка',
|
||||
rg: 'Рельсотрон',
|
||||
range: 'Дальность',
|
||||
rate: 'скорость',
|
||||
'Reactive Surface Composite': 'Композитно-реактивная поверхность',
|
||||
'Reactive Surface Composite': 'Динамическая защита',
|
||||
recharge: 'Перезарядка',
|
||||
rf: 'Переработка',
|
||||
'refuel time': 'Время дозаправки',
|
||||
@@ -211,8 +211,8 @@ angular.module('app').config(['$translateProvider', 'localeFormatProvider', func
|
||||
SYS: 'СИС',
|
||||
T: 'Т',
|
||||
T_LOAD: 'Тепл.',
|
||||
'The Retributor': 'Орудие Возмездия',
|
||||
t: 'Ускорители',
|
||||
'The Retributor': '"Возмездие"',
|
||||
t: 'Двигатели',
|
||||
time: 'Время',
|
||||
tp: 'Торпедный аппарат',
|
||||
total: 'Всего',
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength', 'calcJumpRange', 'calcTotalRange', 'lodash', 'ArmourMultiplier', function(Components, calcShieldStrength, calcJumpRange, calcTotalRange, _, ArmourMultiplier) {
|
||||
angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength', 'calcJumpRange', 'calcTotalRange', 'calcSpeed', 'lodash', 'ArmourMultiplier', function(Components, calcShieldStrength, calcJumpRange, calcTotalRange, calcSpeed, _, ArmourMultiplier) {
|
||||
|
||||
/**
|
||||
* Returns the power usage type of a slot and it's particular component
|
||||
@@ -159,6 +159,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
|
||||
this.updatePower();
|
||||
this.updateJumpStats();
|
||||
this.updateShieldStrength();
|
||||
this.updateTopSpeed();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -375,6 +376,7 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
|
||||
if (powerChange) {
|
||||
this.updatePower();
|
||||
}
|
||||
this.updateTopSpeed();
|
||||
this.updateJumpStats();
|
||||
this.updateShieldStrength();
|
||||
}
|
||||
@@ -395,6 +397,10 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
|
||||
this.powerDeployed = prevDeployed;
|
||||
};
|
||||
|
||||
Ship.prototype.updateTopSpeed = function() {
|
||||
this.topSpeed = calcSpeed(this.unladenMass + this.fuelCapacity, this.speed, this.common[1].c, this.pipSpeed)['4 Pips'];
|
||||
};
|
||||
|
||||
Ship.prototype.updateShieldStrength = function() {
|
||||
var sgSlot = this.findInternalByGroup('sg'); // Find Shield Generator slot Index if any
|
||||
this.shieldStrength = sgSlot && sgSlot.enabled ? calcShieldStrength(this.hullMass, this.baseShieldStrength, sgSlot.c, this.shieldMultiplier) : 0;
|
||||
|
||||
@@ -87,10 +87,10 @@ angular.module('shipyard', ['ngLodash'])
|
||||
},
|
||||
{ // 1
|
||||
title: 'speed',
|
||||
props: ['speed', 'boost'],
|
||||
props: ['topSpeed', 'boost'],
|
||||
lbls: ['thrusters', 'boost'],
|
||||
unit: 'm/s',
|
||||
fmt: 'fRound'
|
||||
fmt: 'fCrd'
|
||||
},
|
||||
{ // 2
|
||||
title: 'armour',
|
||||
@@ -204,7 +204,6 @@ angular.module('shipyard', ['ngLodash'])
|
||||
/**
|
||||
* Calculate the a ships shield strength based on mass, shield generator and shield boosters used.
|
||||
*
|
||||
* @private
|
||||
* @param {number} mass Current mass of the ship
|
||||
* @param {number} shields Base Shield strength MJ for ship
|
||||
* @param {object} sg The shield generator used
|
||||
@@ -212,30 +211,38 @@ angular.module('shipyard', ['ngLodash'])
|
||||
* @return {number} Approximate shield strengh in MJ
|
||||
*/
|
||||
.value('calcShieldStrength', function(mass, shields, sg, multiplier) {
|
||||
if (mass <= sg.minmass) {
|
||||
var opt;
|
||||
if (mass < sg.minmass) {
|
||||
return shields * multiplier * sg.minmul;
|
||||
}
|
||||
if (mass > sg.maxmass) {
|
||||
return shields * multiplier * sg.maxmul;
|
||||
}
|
||||
if (mass < sg.optmass) {
|
||||
return shields * multiplier * (sg.minmul + (mass - sg.minmass) / (sg.optmass - sg.minmass) * (sg.optmul - sg.minmul));
|
||||
opt = (sg.optmass - mass) / (sg.optmass - sg.minmass);
|
||||
opt = 1 - Math.pow(1 - opt, 0.87);
|
||||
return shields * multiplier * ((opt * sg.minmul) + ((1 - opt) * sg.optmul));
|
||||
} else {
|
||||
opt = (sg.optmass - mass) / (sg.maxmass - sg.optmass);
|
||||
opt = -1 + Math.pow(1 + opt, 2.425);
|
||||
return shields * multiplier * ( (-1 * opt * sg.maxmul) + ((1 + opt) * sg.optmul) );
|
||||
}
|
||||
if (mass < sg.maxmass) {
|
||||
return shields * multiplier * (sg.optmul + (mass - sg.optmass) / (sg.maxmass - sg.optmass) * (sg.maxmul - sg.optmul));
|
||||
}
|
||||
return shields * multiplier * sg.maxmul;
|
||||
})
|
||||
/**
|
||||
* Calculate the a ships speed based on mass, and thrusters. Currently Innacurate / Incomplete :(
|
||||
* Calculate the a ships speed based on mass, and thrusters.
|
||||
*
|
||||
* @private
|
||||
* @param {number} mass Current mass of the ship
|
||||
* @param {number} baseSpeed Base speed m/s for ship
|
||||
* @param {number} baseBoost Base boost m/s for ship
|
||||
* @param {object} thrusters The shield generator used
|
||||
* @return {object} Approximate speed and boost speed in m/s
|
||||
* @param {object} thrusters The Thrusters used
|
||||
* @param {number} pipSpeed Speed pip multiplier
|
||||
* @return {object} Approximate speed by pips
|
||||
*/
|
||||
.value('calcSpeed', function(mass, baseSpeed, baseBoost) { //, thrusters) {
|
||||
//var speed = baseSpeed * (1 + ((thrusters.optmass / mass) * 0.1 ) ); // TODO: find thruser coefficient(s)
|
||||
//var boost = baseBoost * (1 + ((thrusters.optmass / mass) * 0.1 ) );
|
||||
.value('calcSpeed', function(mass, baseSpeed, thrusters, pipSpeed) {
|
||||
var speed = baseSpeed * ((1 - thrusters.M) + (thrusters.M * Math.pow(3 - (2 * Math.max(0.5, mass / thrusters.optmass)), thrusters.P)));
|
||||
|
||||
return { boost: baseSpeed, speed: baseBoost };
|
||||
return {
|
||||
'0 Pips': speed * (1 - (pipSpeed * 4)),
|
||||
'2 Pips': speed * (1 - (pipSpeed * 2)),
|
||||
'4 Pips': speed
|
||||
};
|
||||
});
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
font-size: 0.8em;
|
||||
padding: 0.25em 0.5em;
|
||||
background: @primary-disabled;
|
||||
|
||||
text-transform: capitalize;
|
||||
color: @primary-bg;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
@@ -60,5 +60,6 @@ svg {
|
||||
fill: @bgBlack;
|
||||
stroke: @secondary;
|
||||
stroke-width: 1px;
|
||||
font-size: 0.75em
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,12 +163,6 @@ table.total {
|
||||
|
||||
.smallTablet({
|
||||
width: 50%;
|
||||
|
||||
.axis.x {
|
||||
g.tick:nth-child(2n + 1) text {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
.largePhone({
|
||||
@@ -192,12 +186,12 @@ table.total {
|
||||
&.third {
|
||||
width: 33%;
|
||||
|
||||
.largePhone({
|
||||
.smallTablet({
|
||||
width: 100% !important;
|
||||
});
|
||||
}
|
||||
|
||||
.smallTablet({
|
||||
.smallScreen({
|
||||
.axis.x {
|
||||
g.tick:nth-child(2n + 1) text {
|
||||
display: none;
|
||||
|
||||
@@ -32,3 +32,9 @@
|
||||
@rules();
|
||||
}
|
||||
}
|
||||
|
||||
.smallScreen(@rules) {
|
||||
@media only screen and /*(min-width: 601px) and */(max-width: 1400px) {
|
||||
@rules();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<td class="cap" ng-bind="['','small','medium','large','capital'][ship.class] | translate"></td>
|
||||
<td>{{ship.agility}}/10</td>
|
||||
<td>
|
||||
<span ng-if="th.c.maxmass >= ship.ladenMass">{{fRound(ship.speed)}} <u translate>m/s</u></span>
|
||||
<span ng-if="th.c.maxmass >= ship.ladenMass">{{fCrd(ship.topSpeed)}} <u translate>m/s</u></span>
|
||||
<span class="warning" ng-if="th.c.maxmass < ship.ladenMass">0 <svg class="icon"><use xlink:href="#warning"></use></svg></span>
|
||||
</td>
|
||||
<td>
|
||||
@@ -348,22 +348,21 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="group half">
|
||||
<div class="group third">
|
||||
<h1 translate="jump range"></h1>
|
||||
<div line-chart config="jrChart" series="jrSeries"></div>
|
||||
</div>
|
||||
|
||||
<div class="group half">
|
||||
<div class="group third">
|
||||
<h1 translate="total range"></h1>
|
||||
<div line-chart config="trChart" series="trSeries"></div>
|
||||
</div>
|
||||
|
||||
<!-- TODO: Add back in once calcSpeed is dynamic and accurate
|
||||
<div class="group third">
|
||||
<h1 translate="speed"></h1>
|
||||
<div line-chart config="speedChart" series="speedSeries"></div>
|
||||
</div>
|
||||
-->
|
||||
|
||||
|
||||
<div class="group half">
|
||||
<div slider max="ship.fuelCapacity" unit="'T'" on-change="::fuelChange(val)" style="position:relative; margin: 0 auto;">
|
||||
|
||||
@@ -1,32 +1,37 @@
|
||||
{
|
||||
"7E": { "grp": "t", "class": 7, "rating": "E", "cost": 633199, "mass": 80, "power": 6.08, "optmass": 1440, "maxmass": 2160 },
|
||||
"7D": { "grp": "t", "class": 7, "rating": "D", "cost": 1899597, "mass": 32, "power": 6.84, "optmass": 1620, "maxmass": 2430 },
|
||||
"7C": { "grp": "t", "class": 7, "rating": "C", "cost": 5698790, "mass": 80, "power": 7.6, "optmass": 1800, "maxmass": 2700 },
|
||||
"7B": { "grp": "t", "class": 7, "rating": "B", "cost": 17096371, "mass": 128, "power": 8.36, "optmass": 1980, "maxmass": 2970 },
|
||||
"7A": { "grp": "t", "class": 7, "rating": "A", "cost": 51289112, "mass": 80, "power": 9.12, "optmass": 2160, "maxmass": 3240 },
|
||||
"6E": { "grp": "t", "class": 6, "rating": "E", "cost": 199747, "mass": 40, "power": 5.04, "optmass": 960, "maxmass": 1440 },
|
||||
"6D": { "grp": "t", "class": 6, "rating": "D", "cost": 599242, "mass": 16, "power": 5.67, "optmass": 1080, "maxmass": 1620 },
|
||||
"6C": { "grp": "t", "class": 6, "rating": "C", "cost": 1797726, "mass": 40, "power": 6.3, "optmass": 1200, "maxmass": 1800 },
|
||||
"6B": { "grp": "t", "class": 6, "rating": "B", "cost": 5393177, "mass": 64, "power": 6.93, "optmass": 1320, "maxmass": 1980 },
|
||||
"6A": { "grp": "t", "class": 6, "rating": "A", "cost": 16179531, "mass": 40, "power": 7.56, "optmass": 1440, "maxmass": 2160 },
|
||||
"5E": { "grp": "t", "class": 5, "rating": "E", "cost": 63012, "mass": 20, "power": 4.08, "optmass": 560, "maxmass": 840 },
|
||||
"5D": { "grp": "t", "class": 5, "rating": "D", "cost": 189035, "mass": 8, "power": 4.59, "optmass": 630, "maxmass": 945 },
|
||||
"5C": { "grp": "t", "class": 5, "rating": "C", "cost": 567106, "mass": 20, "power": 5.1, "optmass": 700, "maxmass": 1050 },
|
||||
"5B": { "grp": "t", "class": 5, "rating": "B", "cost": 1701318, "mass": 32, "power": 5.61, "optmass": 770, "maxmass": 1155 },
|
||||
"5A": { "grp": "t", "class": 5, "rating": "A", "cost": 5103953, "mass": 20, "power": 6.12, "optmass": 840, "maxmass": 1260 },
|
||||
"4E": { "grp": "t", "class": 4, "rating": "E", "cost": 19878, "mass": 10, "power": 3.82, "optmass": 280, "maxmass": 420 },
|
||||
"4D": { "grp": "t", "class": 4, "rating": "D", "cost": 59633, "mass": 4, "power": 3.69, "optmass": 315, "maxmass": 473 },
|
||||
"4C": { "grp": "t", "class": 4, "rating": "C", "cost": 178898, "mass": 10, "power": 4.1, "optmass": 350, "maxmass": 525 },
|
||||
"4B": { "grp": "t", "class": 4, "rating": "B", "cost": 536693, "mass": 16, "power": 4.51, "optmass": 385, "maxmass": 578 },
|
||||
"4A": { "grp": "t", "class": 4, "rating": "A", "cost": 1610080, "mass": 10, "power": 4.92, "optmass": 420, "maxmass": 630 },
|
||||
"3E": { "grp": "t", "class": 3, "rating": "E", "cost": 6271, "mass": 5, "power": 2.48, "optmass": 80, "maxmass": 120 },
|
||||
"3D": { "grp": "t", "class": 3, "rating": "D", "cost": 18812, "mass": 2, "power": 2.79, "optmass": 90, "maxmass": 135 },
|
||||
"3C": { "grp": "t", "class": 3, "rating": "C", "cost": 56435, "mass": 5, "power": 3.1, "optmass": 100, "maxmass": 150 },
|
||||
"3B": { "grp": "t", "class": 3, "rating": "B", "cost": 169304, "mass": 8, "power": 3.41, "optmass": 110, "maxmass": 165 },
|
||||
"3A": { "grp": "t", "class": 3, "rating": "A", "cost": 507912, "mass": 5, "power": 3.72, "optmass": 120, "maxmass": 180 },
|
||||
"2E": { "grp": "t", "class": 2, "rating": "E", "cost": 1978, "mass": 2.5, "power": 2, "optmass": 48, "maxmass": 72 },
|
||||
"2D": { "grp": "t", "class": 2, "rating": "D", "cost": 5934, "mass": 1, "power": 2.25, "optmass": 54, "maxmass": 81 },
|
||||
"2C": { "grp": "t", "class": 2, "rating": "C", "cost": 17803, "mass": 2.5, "power": 2.5, "optmass": 60, "maxmass": 90 },
|
||||
"2B": { "grp": "t", "class": 2, "rating": "B", "cost": 53408, "mass": 4, "power": 2.75, "optmass": 66, "maxmass": 99 },
|
||||
"2A": { "grp": "t", "class": 2, "rating": "A", "cost": 160224, "mass": 2.5, "power": 3, "optmass": 72, "maxmass": 108 }
|
||||
}
|
||||
"7E": { "grp": "t", "class": 7, "rating": "E", "M": 0.17, "P": 0.235, "cost": 633199, "mass": 80, "power": 6.08, "optmass": 1440, "maxmass": 2160 },
|
||||
"7D": { "grp": "t", "class": 7, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 1899597, "mass": 32, "power": 6.84, "optmass": 1620, "maxmass": 2430 },
|
||||
"7C": { "grp": "t", "class": 7, "rating": "C", "M": 0.10, "P": 1, "cost": 5698790, "mass": 80, "power": 7.6, "optmass": 1800, "maxmass": 2700 },
|
||||
"7B": { "grp": "t", "class": 7, "rating": "B", "M": 0.07, "P": 1.51, "cost": 17096371, "mass": 128, "power": 8.36, "optmass": 1980, "maxmass": 2970 },
|
||||
"7A": { "grp": "t", "class": 7, "rating": "A", "M": 0.04, "P": 2.33, "cost": 51289112, "mass": 80, "power": 9.12, "optmass": 2160, "maxmass": 3240 },
|
||||
|
||||
"6E": { "grp": "t", "class": 6, "rating": "E", "M": 0.17, "P": 0.235, "cost": 199747, "mass": 40, "power": 5.04, "optmass": 960, "maxmass": 1440 },
|
||||
"6D": { "grp": "t", "class": 6, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 599242, "mass": 16, "power": 5.67, "optmass": 1080, "maxmass": 1620 },
|
||||
"6C": { "grp": "t", "class": 6, "rating": "C", "M": 0.10, "P": 1, "cost": 1797726, "mass": 40, "power": 6.3, "optmass": 1200, "maxmass": 1800 },
|
||||
"6B": { "grp": "t", "class": 6, "rating": "B", "M": 0.07, "P": 1.51, "cost": 5393177, "mass": 64, "power": 6.93, "optmass": 1320, "maxmass": 1980 },
|
||||
"6A": { "grp": "t", "class": 6, "rating": "A", "M": 0.04, "P": 2.33, "cost": 16179531, "mass": 40, "power": 7.56, "optmass": 1440, "maxmass": 2160 },
|
||||
|
||||
"5E": { "grp": "t", "class": 5, "rating": "E", "M": 0.17, "P": 0.235, "cost": 63012, "mass": 20, "power": 4.08, "optmass": 560, "maxmass": 840 },
|
||||
"5D": { "grp": "t", "class": 5, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 189035, "mass": 8, "power": 4.59, "optmass": 630, "maxmass": 945 },
|
||||
"5C": { "grp": "t", "class": 5, "rating": "C", "M": 0.10, "P": 1, "cost": 567106, "mass": 20, "power": 5.1, "optmass": 700, "maxmass": 1050 },
|
||||
"5B": { "grp": "t", "class": 5, "rating": "B", "M": 0.07, "P": 1.51, "cost": 1701318, "mass": 32, "power": 5.61, "optmass": 770, "maxmass": 1155 },
|
||||
"5A": { "grp": "t", "class": 5, "rating": "A", "M": 0.04, "P": 2.33, "cost": 5103953, "mass": 20, "power": 6.12, "optmass": 840, "maxmass": 1260 },
|
||||
|
||||
"4E": { "grp": "t", "class": 4, "rating": "E", "M": 0.17, "P": 0.235, "cost": 19878, "mass": 10, "power": 3.82, "optmass": 280, "maxmass": 420 },
|
||||
"4D": { "grp": "t", "class": 4, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 59633, "mass": 4, "power": 3.69, "optmass": 315, "maxmass": 473 },
|
||||
"4C": { "grp": "t", "class": 4, "rating": "C", "M": 0.10, "P": 1, "cost": 178898, "mass": 10, "power": 4.1, "optmass": 350, "maxmass": 525 },
|
||||
"4B": { "grp": "t", "class": 4, "rating": "B", "M": 0.07, "P": 1.51, "cost": 536693, "mass": 16, "power": 4.51, "optmass": 385, "maxmass": 578 },
|
||||
"4A": { "grp": "t", "class": 4, "rating": "A", "M": 0.04, "P": 2.33, "cost": 1610080, "mass": 10, "power": 4.92, "optmass": 420, "maxmass": 630 },
|
||||
|
||||
"3E": { "grp": "t", "class": 3, "rating": "E", "M": 0.17, "P": 0.235, "cost": 6271, "mass": 5, "power": 2.48, "optmass": 80, "maxmass": 120 },
|
||||
"3D": { "grp": "t", "class": 3, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 18812, "mass": 2, "power": 2.79, "optmass": 90, "maxmass": 135 },
|
||||
"3C": { "grp": "t", "class": 3, "rating": "C", "M": 0.10, "P": 1, "cost": 56435, "mass": 5, "power": 3.1, "optmass": 100, "maxmass": 150 },
|
||||
"3B": { "grp": "t", "class": 3, "rating": "B", "M": 0.07, "P": 1.51, "cost": 169304, "mass": 8, "power": 3.41, "optmass": 110, "maxmass": 165 },
|
||||
"3A": { "grp": "t", "class": 3, "rating": "A", "M": 0.04, "P": 2.33, "cost": 507912, "mass": 5, "power": 3.72, "optmass": 120, "maxmass": 180 },
|
||||
|
||||
"2E": { "grp": "t", "class": 2, "rating": "E", "M": 0.17, "P": 0.235, "cost": 1978, "mass": 2.5, "power": 2, "optmass": 48, "maxmass": 72 },
|
||||
"2D": { "grp": "t", "class": 2, "rating": "D", "M": 0.14, "P": 0.5145, "cost": 5934, "mass": 1, "power": 2.25, "optmass": 54, "maxmass": 81 },
|
||||
"2C": { "grp": "t", "class": 2, "rating": "C", "M": 0.10, "P": 1, "cost": 17803, "mass": 2.5, "power": 2.5, "optmass": 60, "maxmass": 90 },
|
||||
"2B": { "grp": "t", "class": 2, "rating": "B", "M": 0.07, "P": 1.51, "cost": 53408, "mass": 4, "power": 2.75, "optmass": 66, "maxmass": 99 },
|
||||
"2A": { "grp": "t", "class": 2, "rating": "A", "M": 0.04, "P": 2.33, "cost": 160224, "mass": 2.5, "power": 3, "optmass": 72, "maxmass": 108 }
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"psg": [
|
||||
{ "id": "p6", "grp": "psg", "class": 1, "rating": "A", "cost": 132195, "mass": 2.5, "power": 2.52, "minmass": 13, "optmass": 25, "maxmass": 63, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p5", "grp": "psg", "class": 2, "rating": "A", "cost": 240336, "mass": 5, "power": 3.15, "minmass": 23, "optmass": 55, "maxmass": 138, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p4", "grp": "psg", "class": 3, "rating": "A", "cost": 761868, "mass": 10, "power": 3.78, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p3", "grp": "psg", "class": 4, "rating": "A", "cost": 2415120, "mass": 20, "power": 4.62, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p2", "grp": "psg", "class": 5, "rating": "A", "cost": 7655930, "mass": 40, "power": 5.46, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p1", "grp": "psg", "class": 6, "rating": "A", "cost": 24269297, "mass": 80, "power": 6.51, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p0", "grp": "psg", "class": 7, "rating": "A", "cost": 76933668, "mass": 160, "power": 7.35, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 },
|
||||
{ "id": "p7", "grp": "psg", "class": 8, "rating": "A", "cost": 243879729, "mass": 320, "power": 8.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 2.04, "optmul": 1.44, "maxmul": 0.84 }
|
||||
{ "id": "p6", "grp": "psg", "class": 1, "rating": "A", "cost": 132195, "mass": 2.5, "power": 2.52, "minmass": 13, "optmass": 25, "maxmass": 63, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p5", "grp": "psg", "class": 2, "rating": "A", "cost": 240336, "mass": 5, "power": 3.15, "minmass": 23, "optmass": 55, "maxmass": 138, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p4", "grp": "psg", "class": 3, "rating": "A", "cost": 761868, "mass": 10, "power": 3.78, "minmass": 83, "optmass": 165, "maxmass": 413, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p3", "grp": "psg", "class": 4, "rating": "A", "cost": 2415120, "mass": 20, "power": 4.62, "minmass": 143, "optmass": 285, "maxmass": 713, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p2", "grp": "psg", "class": 5, "rating": "A", "cost": 7655930, "mass": 40, "power": 5.46, "minmass": 203, "optmass": 405, "maxmass": 1013, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p1", "grp": "psg", "class": 6, "rating": "A", "cost": 24269297, "mass": 80, "power": 6.51, "minmass": 270, "optmass": 540, "maxmass": 1350, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p0", "grp": "psg", "class": 7, "rating": "A", "cost": 76933668, "mass": 160, "power": 7.35, "minmass": 530, "optmass": 1060, "maxmass": 2650, "minmul": 2, "optmul": 1.5, "maxmul": 1 },
|
||||
{ "id": "p7", "grp": "psg", "class": 8, "rating": "A", "cost": 243879729, "mass": 320, "power": 8.4, "minmass": 900, "optmass": 1800, "maxmass": 4500, "minmul": 2, "optmul": 1.5, "maxmul": 1 }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 39993,
|
||||
"speed": 220,
|
||||
"boost": 320,
|
||||
"boost": 321,
|
||||
"boostEnergy": 9,
|
||||
"agility": 8,
|
||||
"baseShieldStrength": 60,
|
||||
"baseArmour": 162,
|
||||
"hullMass": 35,
|
||||
"masslock": 7
|
||||
"masslock": 7,
|
||||
"pipSpeed": 0.13625
|
||||
},
|
||||
"retailCost": 87808,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 3,
|
||||
"hullCost": 141889932,
|
||||
"speed": 180,
|
||||
"boost": 240,
|
||||
"boost": 244,
|
||||
"boostEnergy": 29,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 350,
|
||||
"baseArmour": 945,
|
||||
"hullMass": 400,
|
||||
"masslock": 23
|
||||
"masslock": 23,
|
||||
"pipSpeed": 0.13875
|
||||
},
|
||||
"retailCost": 146969451,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 2,
|
||||
"hullCost": 6135658,
|
||||
"speed": 250,
|
||||
"boost": 340,
|
||||
"boost": 345,
|
||||
"boostEnergy": 14,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 140,
|
||||
"baseArmour": 378,
|
||||
"hullMass": 280,
|
||||
"masslock": 11
|
||||
"masslock": 11,
|
||||
"pipSpeed": 0.13
|
||||
},
|
||||
"retailCost": 6661153,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 235787,
|
||||
"speed": 280,
|
||||
"boost": 400,
|
||||
"boost": 402,
|
||||
"boostEnergy": 11,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 80,
|
||||
"baseArmour": 216,
|
||||
"hullMass": 180,
|
||||
"masslock": 8
|
||||
"masslock": 8,
|
||||
"pipSpeed": 0.125
|
||||
},
|
||||
"retailCost": 379718,
|
||||
"slots": {
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
"baseShieldStrength": 118,
|
||||
"baseArmour": 216,
|
||||
"hullMass": 170,
|
||||
"masslock": 8
|
||||
"masslock": 8,
|
||||
"pipSpeed": 0.09875
|
||||
},
|
||||
"retailCost": 564329,
|
||||
"minMassFilter": 180.5,
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
"baseShieldStrength": 146,
|
||||
"baseArmour": 270,
|
||||
"hullMass": 298,
|
||||
"masslock": 10
|
||||
"masslock": 10,
|
||||
"pipSpeed": 0.09625
|
||||
},
|
||||
"retailCost": 1894760,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 10446,
|
||||
"speed": 240,
|
||||
"boost": 350,
|
||||
"boost": 349,
|
||||
"boostEnergy": 9,
|
||||
"agility": 10,
|
||||
"baseShieldStrength": 60,
|
||||
"baseArmour": 72,
|
||||
"hullMass": 50,
|
||||
"masslock": 6
|
||||
"masslock": 6,
|
||||
"pipSpeed": 0.0625
|
||||
},
|
||||
"retailCost": 44800,
|
||||
"slots": {
|
||||
|
||||
@@ -5,14 +5,15 @@
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 2,
|
||||
"hullCost": 19071993,
|
||||
"speed": 216,
|
||||
"speed": 210,
|
||||
"boost": 361,
|
||||
"boostEnergy": 21,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 180,
|
||||
"baseShieldStrength": 200,
|
||||
"baseArmour": 540,
|
||||
"hullMass": 480,
|
||||
"masslock": 14
|
||||
"masslock": 14,
|
||||
"pipSpeed": 0.11125
|
||||
},
|
||||
"retailCost": 19814205,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 2,
|
||||
"hullCost": 18969990,
|
||||
"speed": 180,
|
||||
"boost": 300,
|
||||
"boost": 304,
|
||||
"boostEnergy": 21,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 200,
|
||||
"baseArmour": 540,
|
||||
"hullMass": 580,
|
||||
"masslock": 14
|
||||
"masslock": 14,
|
||||
"pipSpeed": 0.0725
|
||||
},
|
||||
"retailCost": 19814205,
|
||||
"slots": {
|
||||
|
||||
@@ -4,17 +4,18 @@
|
||||
"name": "Federal Gunship",
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 2,
|
||||
"hullCost": 34774802,
|
||||
"speed": 172,
|
||||
"hullCost": 44774591,
|
||||
"speed": 170,
|
||||
"boost": 284,
|
||||
"boostEnergy": 21,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 240,
|
||||
"baseShieldStrength": 250,
|
||||
"baseArmour": 630,
|
||||
"hullMass": 580,
|
||||
"masslock": 14
|
||||
"masslock": 14,
|
||||
"pipSpeed": 0.1025
|
||||
},
|
||||
"retailCost": 35814211,
|
||||
"retailCost": 45814000,
|
||||
"slots": {
|
||||
"common": [
|
||||
6,
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 2,
|
||||
"hullCost": 51232230,
|
||||
"speed": 260,
|
||||
"boost": 350,
|
||||
"boost": 357,
|
||||
"boostEnergy": 21,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 300,
|
||||
"baseArmour": 405,
|
||||
"hullMass": 250,
|
||||
"masslock": 12
|
||||
"masslock": 12,
|
||||
"pipSpeed": 0.03875
|
||||
},
|
||||
"retailCost": 51567040,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 29807,
|
||||
"speed": 200,
|
||||
"boost": 300,
|
||||
"boost": 305,
|
||||
"agility": 6,
|
||||
"boostEnergy": 7,
|
||||
"baseShieldStrength": 50,
|
||||
"baseArmour": 90,
|
||||
"hullMass": 14,
|
||||
"masslock": 6
|
||||
"masslock": 6,
|
||||
"pipSpeed": 0.1625
|
||||
},
|
||||
"retailCost": 52720,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 3,
|
||||
"hullCost": 21077784,
|
||||
"speed": 300,
|
||||
"boost": 380,
|
||||
"boost": 388,
|
||||
"boostEnergy": 21,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 180,
|
||||
"baseArmour": 486,
|
||||
"hullMass": 400,
|
||||
"masslock": 12
|
||||
"masslock": 12,
|
||||
"pipSpeed": 0.1
|
||||
},
|
||||
"retailCost": 22296860,
|
||||
"slots": {
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
"baseShieldStrength": 197,
|
||||
"baseArmour": 144,
|
||||
"hullMass": 35,
|
||||
"masslock": 7
|
||||
"masslock": 7,
|
||||
"pipSpeed": 0.05375
|
||||
},
|
||||
"retailCost": 2542931,
|
||||
"slots": {
|
||||
|
||||
@@ -5,14 +5,15 @@
|
||||
"manufacturer": "Core Dynamics",
|
||||
"class": 1,
|
||||
"hullCost": 72186,
|
||||
"speed": 303,
|
||||
"speed": 300,
|
||||
"boost": 405,
|
||||
"boostEnergy": 9,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 80,
|
||||
"baseArmour": 108,
|
||||
"hullMass": 50,
|
||||
"masslock": 6
|
||||
"masslock": 6,
|
||||
"pipSpeed": 0.075
|
||||
},
|
||||
"retailCost": 110833,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 3,
|
||||
"hullCost": 47798079,
|
||||
"speed": 300,
|
||||
"boost": 380,
|
||||
"boost": 385,
|
||||
"boostEnergy": 17,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 220,
|
||||
"baseArmour": 396,
|
||||
"hullMass": 580,
|
||||
"masslock": 13
|
||||
"masslock": 13,
|
||||
"pipSpeed": 0.08375
|
||||
},
|
||||
"retailCost": 48539887,
|
||||
"slots": {
|
||||
@@ -35,8 +36,8 @@
|
||||
0
|
||||
],
|
||||
"internal": [
|
||||
{ "class": 6, "eligible": { "Cargo Rack": 1, "Hull Reinforcement Package": 1 } },
|
||||
{ "class": 5, "eligible": { "Cargo Rack": 1, "Hull Reinforcement Package": 1 } },
|
||||
{ "class": 6, "eligible": { "cr": 1, "hr": 1 } },
|
||||
{ "class": 5, "eligible": { "cr": 1, "hr": 1 } },
|
||||
5,
|
||||
5,
|
||||
4,
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 2,
|
||||
"hullCost": 55171395,
|
||||
"speed": 230,
|
||||
"boost": 280,
|
||||
"boost": 305,
|
||||
"boostEnergy": 24,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 260,
|
||||
"baseArmour": 468,
|
||||
"hullMass": 350,
|
||||
"masslock": 17
|
||||
"masslock": 17,
|
||||
"pipSpeed": 0.0975
|
||||
},
|
||||
"retailCost": 56978179,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 12887,
|
||||
"speed": 220,
|
||||
"boost": 320,
|
||||
"boost": 321,
|
||||
"boostEnergy": 7,
|
||||
"agility": 8,
|
||||
"baseShieldStrength": 40,
|
||||
"baseArmour": 108,
|
||||
"hullMass": 25,
|
||||
"masslock": 6
|
||||
"masslock": 6,
|
||||
"pipSpeed": 0.1375
|
||||
},
|
||||
"retailCost": 32000,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 2,
|
||||
"hullCost": 865782,
|
||||
"speed": 220,
|
||||
"boost": 350,
|
||||
"boost": 355,
|
||||
"boostEnergy": 11,
|
||||
"agility": 3,
|
||||
"baseShieldStrength": 90,
|
||||
"baseArmour": 162,
|
||||
"hullMass": 155,
|
||||
"masslock": 8
|
||||
"masslock": 8,
|
||||
"pipSpeed": 0.1475
|
||||
},
|
||||
"retailCost": 1045945,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 3,
|
||||
"hullCost": 16881511,
|
||||
"speed": 180,
|
||||
"boost": 300,
|
||||
"boost": 301,
|
||||
"boostEnergy": 11,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 120,
|
||||
"baseArmour": 216,
|
||||
"hullMass": 420,
|
||||
"masslock": 10
|
||||
"masslock": 10,
|
||||
"pipSpeed": 0.16625
|
||||
},
|
||||
"retailCost": 17472252,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 3,
|
||||
"hullCost": 73255168,
|
||||
"speed": 130,
|
||||
"boost": 200,
|
||||
"boost": 201,
|
||||
"boostEnergy": 21,
|
||||
"agility": 0,
|
||||
"baseShieldStrength": 240,
|
||||
"baseArmour": 432,
|
||||
"hullMass": 1000,
|
||||
"masslock": 16
|
||||
"masslock": 16,
|
||||
"pipSpeed": 0.17375
|
||||
},
|
||||
"retailCost": 76555842,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 95893,
|
||||
"speed": 320,
|
||||
"boost": 400,
|
||||
"boost": 388,
|
||||
"boostEnergy": 11,
|
||||
"agility": 6,
|
||||
"baseShieldStrength": 105,
|
||||
"baseArmour": 126,
|
||||
"hullMass": 60,
|
||||
"masslock": 7
|
||||
"masslock": 7,
|
||||
"pipSpeed": 0.09375
|
||||
},
|
||||
"retailCost": 142931,
|
||||
"slots": {
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
"class": 1,
|
||||
"hullCost": 4689629,
|
||||
"speed": 210,
|
||||
"boost": 340,
|
||||
"boost": 348,
|
||||
"boostEnergy": 17,
|
||||
"agility": 9,
|
||||
"baseShieldStrength": 240,
|
||||
"baseArmour": 288,
|
||||
"hullMass": 230,
|
||||
"masslock": 10
|
||||
"masslock": 10,
|
||||
"pipSpeed": 0.02375
|
||||
},
|
||||
"retailCost": 4925615,
|
||||
"slots": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "coriolis_shipyard",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/cmmcleod/coriolis"
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
"class": 3,
|
||||
"hullCost": 141889932,
|
||||
"speed": 180,
|
||||
"boost": 240,
|
||||
"boost": 244,
|
||||
"boostEnergy": 29,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 350,
|
||||
|
||||
@@ -253,13 +253,15 @@
|
||||
"class": 3,
|
||||
"hullCost": 141889932,
|
||||
"speed": 180,
|
||||
"boost": 240,
|
||||
"topSpeed": 186.5,
|
||||
"boost": 244,
|
||||
"boostEnergy": 29,
|
||||
"agility": 2,
|
||||
"baseShieldStrength": 350,
|
||||
"baseArmour": 945,
|
||||
"hullMass": 400,
|
||||
"masslock": 23,
|
||||
"pipSpeed": 0.14,
|
||||
"shipCostMultiplier": 1,
|
||||
"componentCostMultiplier": 1,
|
||||
"fuelCapacity": 32,
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
describe('Database', function() {
|
||||
|
||||
var shipProperties = ['name', 'manufacturer', 'class', 'hullCost', 'speed', 'boost', 'agility', 'baseShieldStrength', 'baseArmour', 'hullMass', 'masslock'];
|
||||
var shipProperties = [
|
||||
'name',
|
||||
'manufacturer',
|
||||
'class',
|
||||
'hullCost',
|
||||
'speed',
|
||||
'boost',
|
||||
'boostEnergy',
|
||||
'agility',
|
||||
'baseShieldStrength',
|
||||
'baseArmour',
|
||||
'hullMass',
|
||||
'masslock',
|
||||
'pipSpeed'
|
||||
];
|
||||
|
||||
it('has ships and components', function() {
|
||||
expect(DB.ships).toBeDefined()
|
||||
|
||||
@@ -21,7 +21,8 @@ describe("Ship Factory", function() {
|
||||
ship.buildWith(shipData.defaults);
|
||||
|
||||
expect(ship.totalCost).toEqual(shipData.retailCost, s + ' retail cost does not match default build cost');
|
||||
expect(ship.priorityBands[0].retracted).toBeGreaterThan(0, s + ' cargo');
|
||||
expect(ship.cargoCapacity).toBeDefined(s + ' cargo');
|
||||
expect(ship.priorityBands[0].retracted).toBeGreaterThan(0, s + ' priorityBands');
|
||||
expect(ship.powerAvailable).toBeGreaterThan(0, s + ' powerAvailable');
|
||||
expect(ship.unladenRange).toBeGreaterThan(0, s + ' unladenRange');
|
||||
expect(ship.ladenRange).toBeGreaterThan(0, s + ' ladenRange');
|
||||
@@ -30,6 +31,7 @@ describe("Ship Factory", function() {
|
||||
expect(ship.ladenTotalRange).toBeGreaterThan(0, s + ' ladenTotalRange');
|
||||
expect(ship.shieldStrength).toBeGreaterThan(0, s + ' shieldStrength');
|
||||
expect(ship.armour).toBeGreaterThan(0, s + ' armour');
|
||||
expect(ship.topSpeed).toBeGreaterThan(0, s + ' topSpeed');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user