Compare commits

...

34 Commits

Author SHA1 Message Date
Colin McLeod
10bfaacb22 Linting fixes 2015-06-03 01:14:38 -07:00
Colin McLeod
799ff36ec4 Remove ticks on comparison page 2015-06-03 01:07:23 -07:00
Colin McLeod
9e4ce83784 Update charts on orientation change 2015-06-02 23:57:31 -07:00
Colin McLeod
08ee37b6b3 Bump version to 0.10.0 2015-06-02 23:52:49 -07:00
Colin McLeod
f0f947cad4 Added notification when appcache is updated 2015-06-02 23:52:23 -07:00
Colin McLeod
0ae4957976 Tweak colors, remove hover 2015-06-02 22:18:47 -07:00
Colin McLeod
b678b81d8d Tweak dmg/eps/dps formatting 2015-06-02 22:00:58 -07:00
Colin McLeod
5c02afdf89 Remove scp from package.json 2015-06-02 21:53:13 -07:00
Colin McLeod
57dc910bc5 Use column for builds menu 2015-06-02 21:52:44 -07:00
Colin McLeod
1ac9d30beb Sort buils menu by ship name 2015-06-02 21:52:44 -07:00
Colin McLeod
4040767427 Merge pull request #34 from spullara/master
Add the measured values in MJ for weapon damage and energy usage
2015-06-02 21:52:35 -07:00
Sam Pullara
d0bb8fbdba add the new damage and energy values to the UI 2015-06-02 21:38:51 -07:00
Sam Pullara
83c8d17f75 add actual MJ damage values to all weapons 2015-06-02 21:38:50 -07:00
Colin McLeod
97c6429ffc Update Jump Range chart, adding slider, more useful UI 2015-06-02 20:13:42 -07:00
Colin McLeod
adf4e64362 Add missing class 2 fragment cannons 2015-06-02 20:13:14 -07:00
Colin McLeod
8194a734bc Add Class 2 Burst Lasers 2015-06-02 20:12:52 -07:00
Colin McLeod
d9cecbdc17 Minor tweak to tablet outfit page css 2015-06-02 20:11:13 -07:00
Colin McLeod
d69fe3f687 Change min launcher damage type 2015-06-02 20:10:05 -07:00
Colin McLeod
180700b973 Fix shield cell bank capacities 2015-06-02 20:09:43 -07:00
Colin McLeod
8f52dd75f0 Fix rating for C1 gimballed pulse laser 2015-06-02 20:09:20 -07:00
Colin McLeod
4b74b125e1 Enhance ship jump range function 2015-06-02 20:07:08 -07:00
Colin McLeod
55986a64a5 Fix to jump range calculation / function 2015-06-02 20:06:30 -07:00
Colin McLeod
f26002df3d Updating disclaimer text 2015-06-02 20:06:01 -07:00
Colin McLeod
0cd78748f7 Sort ships by name 2015-06-02 20:05:34 -07:00
Colin McLeod
3cc76ba85e Rename to Diamondback Scout 2015-06-02 20:04:42 -07:00
Colin McLeod
4531afb198 Fix default shield for Cobra 2015-06-02 20:04:05 -07:00
Colin McLeod
f5ae2c3135 Remove unused dev dependencies 2015-06-02 20:03:38 -07:00
Colin McLeod
abec7e87d8 Optimize PNGs, reduce favicon size, less sillyness 2015-06-02 20:01:18 -07:00
Colin McLeod
bf1dcbdd5e Minor tweak to outfit page tablet layout 2015-06-02 20:01:18 -07:00
Colin McLeod
5c5740f13e Tweak build, add angular explicit dependency 2015-06-02 20:01:18 -07:00
Colin McLeod
ce9b6b75d3 Merge pull request #33 from spullara/patch-1
The weapon and system capacity for power distributors was reversed in…
2015-06-02 20:00:51 -07:00
Colin McLeod
2237529968 Merge pull request #31 from Qirion/dev
Added missing dependencies
2015-06-02 20:00:37 -07:00
Sam Pullara
da61f4dc76 The weapon and system capacity for power distributors was reversed in the UI
I've relabelled them.
2015-06-02 19:08:11 -07:00
Gabriel Correia
16e6853ab5 Added missing dependencies 2015-05-30 11:38:51 -03:00
83 changed files with 591 additions and 201 deletions

3
app/icons/fuel.svg Executable file
View File

@@ -0,0 +1,3 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<path d="M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM9.464 26.067c0.347-0.957 0.536-1.99 0.536-3.067 0-3.886-2.463-7.197-5.913-8.456 0.319-2.654 1.508-5.109 3.427-7.029 2.267-2.266 5.28-3.515 8.485-3.515s6.219 1.248 8.485 3.515c1.92 1.92 3.108 4.375 3.428 7.029-3.45 1.26-5.913 4.57-5.913 8.456 0 1.077 0.189 2.11 0.536 3.067-1.928 1.258-4.18 1.933-6.536 1.933s-4.608-0.675-6.536-1.933zM17.242 20.031c0.434 0.109 0.758 0.503 0.758 0.969v2c0 0.55-0.45 1-1 1h-2c-0.55 0-1-0.45-1-1v-2c0-0.466 0.324-0.86 0.758-0.969l0.742-14.031h1l0.742 14.031z"></path>
</svg>

After

Width:  |  Height:  |  Size: 688 B

BIN
app/images/logo/144x144.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
app/images/logo/192x192.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
app/images/logo/72x72.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

BIN
app/images/logo/96x96.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -6,7 +6,7 @@
<square150x150logo src="images/logo/mstile-150x150.png"/>
<square310x310logo src="images/logo/mstile-310x310.png"/>
<wide310x150logo src="images/logo/mstile-310x150.png"/>
<TileColor>#da532c</TileColor>
<TileColor>#000000</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -3,37 +3,25 @@
"short_name": "Coriolis",
"icons": [
{
"src": "images\/logo\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "images\/logo\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "images\/logo\/android-chrome-72x72.png",
"src": "images\/logo\/72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "images\/logo\/android-chrome-96x96.png",
"src": "images\/logo\/96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "images\/logo\/android-chrome-144x144.png",
"src": "images\/logo\/144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "images\/logo\/android-chrome-192x192.png",
"src": "images\/logo\/192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
app/images/splash/1024x748.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
app/images/splash/1136x640.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
app/images/splash/1242x2148.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
app/images/splash/1334x750.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 11 KiB

BIN
app/images/splash/1536x2008.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
app/images/splash/2048x1496.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 20 KiB

BIN
app/images/splash/2208x1242.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
app/images/splash/320x460.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
app/images/splash/640x1096.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
app/images/splash/640x920.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
app/images/splash/750x1294.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
app/images/splash/768x1004.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
app/images/splash/960x640.png Normal file → Executable file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@@ -8,52 +8,47 @@
<meta name="mobile-web-app-capable" content="yes">
<meta name="viewport" content="width = device-width, initial-scale = 1.0">
<link rel="manifest" href="/images/logo/manifest.json">
<link rel="icon" sizes="96x96" type="image/png" href="/images/logo/favicon-96x96.png">
<link rel="icon" sizes="194x194" type="image/png" href="/images/logo/favicon-194x194.png">
<link rel="icon" sizes="192x192" type="image/png" href="/images/logo/android-chrome-192x192.png">
<link rel="icon" sizes="152x152 192x192" type="image/png" href="/images/logo/192x192.png">
<link rel="shortcut icon" href="/images/logo/favicon.ico">
<!-- Apple/iOS headers -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="Coriolis">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="apple-touch-icon" sizes="76x76" href="/images/logo/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/images/logo/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/images/logo/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/images/logo/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/images/logo/apple-touch-icon-152x152.png">
<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 -->
<link href="/images/splash/480x320.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPhone 4, 4S, portrait -->
<link href="/images/splash/640x920.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 4, 4S, landscape -->
<link href="/images/splash/960x640.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 5, 5S, 5C, portrait -->
<link href="/images/splash/640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 5, 5S, 5C, landscape -->
<link href="/images/splash/1136x640.png" media="(device-width: 320px) and (device-height: 568px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 6, portrait -->
<link href="/images/splash/750x1294.png" media="(device-width: 375px) and (device-height: 667px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 6, landscape -->
<link href="/images/splash/1334x750.png" media="(device-width: 375px) and (device-height: 667px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 6+, portrait -->
<link href="/images/splash/1242x2148.png" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image">
<!-- iPhone 6+, landscape -->
<link href="/images/splash/2208x1242.png" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image">
<!-- iPad 1, 2, Mini, portrait -->
<link href="/images/splash/768x1004.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPad 1, 2, Mini, landscape -->
<link href="/images/splash/1024x748.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPad 3, 4, Air, Air 2, Mini 2, Mini 3, portrait -->
<link href="/images/splash/1536x2008.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPad 3, 4, Air, Air 2, Mini 2, Mini 3, landscape -->
<link href="/images/splash/2048x1496.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- 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 -->
<link href="/images/splash/480x320.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPhone 4, 4S, portrait -->
<link href="/images/splash/640x920.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 4, 4S, landscape -->
<link href="/images/splash/960x640.png" media="(device-width: 320px) and (device-height: 480px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 5, 5S, 5C, portrait -->
<link href="/images/splash/640x1096.png" media="(device-width: 320px) and (device-height: 568px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 5, 5S, 5C, landscape -->
<link href="/images/splash/1136x640.png" media="(device-width: 320px) and (device-height: 568px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 6, portrait -->
<link href="/images/splash/750x1294.png" media="(device-width: 375px) and (device-height: 667px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 6, landscape -->
<link href="/images/splash/1334x750.png" media="(device-width: 375px) and (device-height: 667px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPhone 6+, portrait -->
<link href="/images/splash/1242x2148.png" media="(device-width: 414px) and (device-height: 736px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image">
<!-- iPhone 6+, landscape -->
<link href="/images/splash/2208x1242.png" media="(device-width: 414px) and (device-height: 736px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image">
<!-- iPad 1, 2, Mini, portrait -->
<link href="/images/splash/768x1004.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPad 1, 2, Mini, landscape -->
<link href="/images/splash/1024x748.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 1)" rel="apple-touch-startup-image">
<!-- iPad 3, 4, Air, Air 2, Mini 2, Mini 3, portrait -->
<link href="/images/splash/1536x2008.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- iPad 3, 4, Air, Air 2, Mini 2, Mini 3, landscape -->
<link href="/images/splash/2048x1496.png" media="(device-width: 768px) and (device-height: 1024px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image">
<!-- Microsoft Windows Phone/Tablet headers -->
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-TileColor" content="#000000">
<meta name="msapplication-TileImage" content="/images/logo/mstile-144x144.png">
<meta name="msapplication-config" content="/images/logo/browserconfig.xml">
<meta name="theme-color" content="#000000">

View File

@@ -47,4 +47,15 @@ angular.module('app', ['ui.router', 'ct.ui.router.extras.sticky', 'ui.sortable',
$rootScope.$broadcast('close', e);
};
if ($window.applicationCache) {
// Listen for appcache updated event, present refresh to update view
$window.applicationCache.addEventListener('updateready', function() {
if ($window.applicationCache.status == $window.applicationCache.UPDATEREADY) {
// Browser downloaded a new app cache.
$rootScope.appCacheUpdate = true;
$rootScope.$apply();
}
}, false);
}
}]);

View File

@@ -1,4 +1,4 @@
angular.module('app').controller('OutfitController', ['$rootScope','$scope', '$state', '$stateParams', 'ShipsDB', 'Ship', 'Components', 'Serializer', 'Persist', function ($rootScope, $scope, $state, $p, Ships, Ship, Components, Serializer, Persist) {
angular.module('app').controller('OutfitController', ['$window','$rootScope','$scope', '$state', '$stateParams', 'ShipsDB', 'Ship', 'Components', 'Serializer', 'Persist', function ($window, $rootScope, $scope, $state, $p, Ships, Ship, Components, Serializer, Persist) {
var data = Ships[$p.shipId]; // Retrieve the basic ship properties, slots and defaults
var ship = new Ship($p.shipId, data.properties, data.slots); // Create a new Ship instance
@@ -26,16 +26,22 @@ angular.module('app').controller('OutfitController', ['$rootScope','$scope', '$s
$scope.selectedSlot = null;
$scope.savedCode = Persist.getBuild(ship.id, $scope.buildName);
$scope.canSave = Persist.isEnabled();
$scope.fuel = 0;
$scope.jrSeries = {
xMin: ship.unladenMass,
xMax: ship.ladenMass,
func: ship.jumpRangeWithMass.bind(ship)
xMin: 0,
xMax: ship.cargoCapacity,
// Slightly higher than actual based bacuse components are excluded
yMax: ship.jumpRangeWithMass(ship.unladenMass),
yMin: 0,
func: function(cargo) { // X Axis is Cargo
return ship.jumpRangeWithMass(ship.unladenMass + $scope.fuel + cargo, $scope.fuel);
}
};
$scope.jrChart = {
labels: {
xAxis: {
title:'Ship Mass',
title:'Cargo',
unit: 'T'
},
yAxis: {
@@ -156,11 +162,17 @@ angular.module('app').controller('OutfitController', ['$rootScope','$scope', '$s
ship.updateTotals();
};
$scope.fuelChange = function (fuel) {
$scope.fuel = fuel;
angular.element($window).triggerHandler('render');
};
// Utilify functions
function updateState() {
$state.go('outfit', {shipId: ship.id, code: $scope.code, bn: $scope.buildName}, {location:'replace', notify:false});
$scope.jrSeries.xMin = ship.unladenMass;
$scope.jrSeries.xMax = ship.ladenMass;
$scope.jrSeries.xMax = ship.cargoCapacity;
$scope.jrSeries.yMax = ship.jumpRangeWithMass(ship.unladenMass);
$scope.jrSeries.mass = ship.unladenMass;
}
// Hide any open menu/slot/etc if escape key is pressed

View File

@@ -5,9 +5,7 @@ angular.module('app').directive('areaChart', ['$window', function ($window) {
restrict: 'A',
scope:{
config: '=',
series: '=',
height: '=',
width: '='
series: '='
},
link: function(scope, element) {
var series = scope.series,
@@ -15,15 +13,17 @@ angular.module('app').directive('areaChart', ['$window', function ($window) {
labels = config.labels,
margin = {top: 15, right: 15, bottom: 35, left: 50},
fmt = d3.format('.3r'),
fmtLong = d3.format('.2f');
fmtLong = d3.format('.2f'),
// Define Axes
xAxis = d3.svg.axis().outerTickSize(0).orient("bottom").tickFormat(d3.format('.2r')),
yAxis = d3.svg.axis().outerTickSize(0).orient("left").tickFormat(fmt),
x = d3.scale.linear(),
y = d3.scale.linear();
// Create chart
var svg = d3.select(element[0]).append("svg");
var vis = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")");
// Define Axes
var xAxis = d3.svg.axis().outerTickSize(0).orient("bottom").tickFormat(fmt);
var yAxis = d3.svg.axis().outerTickSize(0).orient("left").tickFormat(fmt);
// Define Area
var area = d3.svg.area();
@@ -60,43 +60,47 @@ angular.module('app').directive('areaChart', ['$window', function ($window) {
// Create and Add tooltip
var tip = vis.append("g").style("display", "none");
tip.append("rect").attr("width","4em").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", -2);
tip.append("text").attr("class", 'label x').attr("y", "-0.1em");
tip.append("text").attr("class", 'label y').attr("y", '0.7em');
/**
* Watch for changes in the series data (mass changes, etc)
*/
scope.$watchCollection('series', render);
scope.$watchCollection('config.watch', render);
angular.element($window).bind('resize', render);
angular.element($window).bind('orientationchange resize render', render);
function render() {
var width = element[0].parentElement.offsetWidth,
height = width * 0.6,
w = width - margin.left - margin.right,
h = height - margin.top - margin.bottom,
x = d3.scale.linear().range([0, w]),
y = d3.scale.linear().range([h, 0]),
data = [],
func = series.func;
for (var d = series.xMin; d <= series.xMax; d++) {
data.push([ d, func(d) ]);
if (series.xMax == series.xMin) {
var yVal = func(series.xMin);
data.push([ series.xMin, yVal ]);
data.push([ series.xMin, yVal ]);
area.x(function(d,i) { return i * w; }).y0(h).y1(function(d) { return y(d[1]); });
} else {
for (var d = series.xMin; d <= series.xMax; d += 1) {
data.push([ d, func(d) ]);
}
area.x(function(d) { return x(d[0]); }).y0(h).y1(function(d) { return y(d[1]); });
}
// Update Chart Size
svg.attr("width", width).attr("height", height);
area.x(function(d) { return x(d[0]); }).y0(h).y1(function(d) { return y(d[1]); });
// Update domain and scale for axes;
x.domain([series.xMin, series.xMax]);
x.range([0, w]).domain([series.xMin, series.xMax]);
xAxis.scale(x);
xLbl.attr("transform", "translate(0," + h + ")");
xTxt.attr("x", w/2);
y.domain([data[data.length - 1][1], data[0][1]]);
y.range([h, 0]).domain([series.yMin, series.yMax]);
yAxis.scale(y);
yTxt.attr("x", -h/2);
vis.selectAll(".y.axis").call(yAxis);
@@ -114,8 +118,9 @@ angular.module('app').directive('areaChart', ['$window', function ($window) {
.on("mouseout", function() { tip.style("display", "none"); })
.on('mousemove', function() {
var xPos = d3.mouse(this)[0], x0 = x.invert(xPos), y0 = func(x0), flip = (xPos > w * 0.75);
tip.attr("transform", "translate(" + x(x0) + "," + y(y0) + ")");
tip.selectAll('text.label').attr("x", flip? -10 : 10).style("text-anchor", flip? 'end' : 'start');
tip.attr("transform", "translate(" + xPos + "," + y(y0) + ")");
tip.selectAll('rect').attr("x", flip? '-4.5em' : "0.5em").style("text-anchor", flip? 'end' : 'start');
tip.selectAll('text.label').attr("x", flip? "-1em" : "1em").style("text-anchor", flip? 'end' : 'start');
tip.select('text.label.x').text(fmtLong(x0) + ' ' + labels.xAxis.unit);
tip.select('text.label.y').text(fmtLong(y0) + ' ' + labels.yAxis.unit);
});

View File

@@ -8,6 +8,7 @@ angular.module('app').directive('shipyardHeader', ['lodash', '$rootScope', 'Pers
scope.openedMenu = null;
scope.ships = ships;
scope.allBuilds = Persist.builds;
scope.buildsList = Object.keys(scope.allBuilds).sort();
scope.allComparisons = Persist.comparisons;
scope.bs = Persist.state;
@@ -65,6 +66,10 @@ angular.module('app').directive('shipyardHeader', ['lodash', '$rootScope', 'Pers
$rootScope.hideAbout = function (){
$rootScope.showAbout = false;
};
scope.$watchCollection('allBuilds', function() {
scope.buildsList = Object.keys(scope.allBuilds).sort();
});
}
};
}]);

View File

@@ -0,0 +1,74 @@
angular.module('app').directive('slider', ['$window', function ($window) {
return {
restrict: 'A',
scope:{
max: '=',
unit: '=',
change: '&onChange'
},
link: function(scope, element) {
var margin = {top: -10, right: 130, bottom: 0, left: 50},
height = 40, // Height is fixed
h = height - margin.top - margin.bottom,
fmt = d3.format('.2f'),
pct = d3.format('.1%'),
unit = scope.unit,
val = scope.max,
svg = d3.select(element[0]).append("svg"),
vis = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")"),
xAxis = vis.append("g").attr("class", "x slider-axis").attr("transform", "translate(0," + h / 2 + ")"),
x = d3.scale.linear(),
slider = vis.append("g").attr("class", "slider"),
filled = slider.append('path').attr('class', 'filled').attr("transform", "translate(0," + h/2 + ")"),
brush = d3.svg.brush().x(x).extent([scope.max, scope.max]).on("brush", brushed),
handle = slider.append("circle").attr("class", "handle").attr("r", '0.75em'),
lbl = slider.append("g").append("text").attr("y", h/2);
slider.call(brush);
slider.select(".background").attr("height", h);
handle.attr("transform", "translate(0," + h / 2 + ")");
/**
* Watch for changes in the max, window size
*/
scope.$watch('max', function(newMax, oldMax) {
val = newMax * (val / oldMax); // Retain percentage filled
render();
});
angular.element($window).bind('orientationchange resize', render);
function render() {
var width = element[0].offsetWidth, w = width - margin.left - margin.right;
svg.attr("width", width).attr("height", height);
x.domain([0, scope.max]).range([0, w]).clamp(true);
handle.attr("cx", x(val));
xAxis
.call(d3.svg.axis()
.scale(x)
.orient("bottom")
.tickFormat(function(d) { return d + unit; })
.tickSize(0)
.tickPadding(12))
.select(".domain");
lbl.attr('x', w + 20).text(fmt(val) + ' ' + unit + ' (' + pct(val / scope.max) + ')');
slider.call(brush.extent([val, val])).call(brush.event);
slider.selectAll(".extent,.resize").remove();
}
function brushed() {
val = brush.extent()[0];
if (d3.event.sourceEvent) { // not a programmatic event
val = x.invert(d3.mouse(this)[0]);
brush.extent([val, val]);
}
lbl.text(fmt(val) + ' ' + unit + ' (' + pct(val / scope.max) + ')');
scope.change({val: val});
handle.attr("cx", x(val));
filled.attr("d", "M0,0V0H" + x(val) + "V0");
}
}
};
}]);

View File

@@ -167,12 +167,14 @@ angular.module('shipyard').factory('Ship', ['Components', 'calcShieldStrength',
};
/**
* [jumpRange description]
* @param {number} mass [description]
* Calculate jump range using the installed FSD and the
* specified mass which can be more or less than ships actual mass
* @param {number} mass Mass in tons
* @param {number} fuel Fuel available in tons
* @return {number} Jump range in Light Years
*/
Ship.prototype.jumpRangeWithMass = function (mass) {
return calcJumpRange(mass, this.common[2].c);
Ship.prototype.jumpRangeWithMass = function (mass, fuel) {
return calcJumpRange(mass, this.common[2].c, fuel);
};
/**

View File

@@ -153,7 +153,7 @@ angular.module('shipyard', ['ngLodash'])
* @return {number} Distance in Light Years
*/
.value('calcJumpRange', function(mass, fsd, fuel) {
return Math.pow(Math.min(fuel || Infinity, fsd.maxfuel) / fsd.fuelmul, 1 / fsd.fuelpower ) * fsd.optmass / mass;
return Math.pow(Math.min(fuel === undefined? fsd.maxfuel : fuel, fsd.maxfuel) / fsd.fuelmul, 1 / fsd.fuelpower ) * fsd.optmass / mass;
})
/**
* Calculate the a ships shield strength based on mass, shield generator and shield boosters used.

View File

@@ -13,6 +13,7 @@
@import 'select';
@import 'modal';
@import 'charts';
@import 'slider';
@import 'chart-tooltip';
@import 'buttons';
@import 'error';

View File

@@ -12,37 +12,44 @@
cursor: pointer;
}
}
}
svg {
svg {
.axis {
line, path {
fill: none;
stroke: @primary-disabled;
}
text {
font-size: 0.8em;
fill: @primary-disabled;
}
&.y {
text tspan:first-child {
fill: @primary;
}
}
.axis {
line, path {
fill: none;
stroke: @primary-disabled;
}
.marker {
fill: @secondary;
text {
font-size: 0.8em;
fill: @primary-disabled;
}
.label {
font-size: 0.9em;
fill: @fg;
&.y {
text tspan:first-child {
fill: @primary;
}
}
}
.marker {
fill: @secondary;
}
.label {
font-size: 0.9em;
fill: @fg;
}
.tip {
fill: @bgBlack;
stroke: @secondary;
stroke-width: 1px;
}
}

View File

@@ -4,11 +4,11 @@
@bgTransparency: 10%;
// Foreground colors
@fg: #DDD;
@fg: #CCC;
@primary: #FF8C0D; // Light Orange
@secondary: #1FB0FF; // Light blue
@warning: #FF3B00; // Dark Orange
@disabled: #888; // Light grey
@disabled: #555; // Light grey
@primary-disabled: darken(@primary, @disabledDarken);
@secondary-disabled: darken(@secondary, @disabledDarken);
@warning-disabled: darken(@warning, @disabledDarken);

View File

@@ -1,3 +1,20 @@
#app-update {
position: fixed;
top: 0;
left: 0;
right: 0;
height: 3em;
z-index: 3;
line-height: 3em;
text-align: center;
background-color: @bg;
a, a:visited {
text-decoration: none;
color: @warning;
}
}
header {
background-color: @bg;
margin: 0;
@@ -44,7 +61,7 @@ header {
.menu-list {
font-family: @fStandard;
position: absolute;
padding: 1em 1em;
padding: 0.5em 1em;
box-sizing: border-box;
min-width: 100%;
overflow-x: hidden;
@@ -56,16 +73,17 @@ header {
max-height: 400px;
&.dbl {
width: 22em;
-webkit-column-count: 2; /* Chrome, Safari, Opera */
-moz-column-count: 2; /* Firefox */
column-count: 2;
ul {
float: left;
width: 10em;
}
}
}
ul {
margin: 0 0 0.5em 0;
margin: 0 0 0.5em;
padding: 0;
line-height: 1.3em;
}

View File

@@ -6,7 +6,8 @@
.user-select-none();
.tablet({
min-width: 760px;
width: 100%;
min-width: 750px;
font-size: 0.8em;
});

42
app/less/slider.less Normal file
View File

@@ -0,0 +1,42 @@
.slider-axis {
line, path {
fill: none;
stroke: @primary-disabled;
}
text {
font-size: 0.8em;
fill: @primary-disabled;
}
.domain {
fill: none;
stroke: @primary;
stroke-opacity: .3;
stroke-width: 0.7em;
stroke-linecap: round;
}
}
.slider {
text {
dominant-baseline: central;
fill: @primary;
}
.filled {
stroke-width: 0.3em;
stroke-linecap: round;
stroke: @primary-disabled;
}
.handle {
fill: @primary;
stroke-opacity: .5;
cursor: crosshair;
}
}

View File

@@ -31,7 +31,7 @@
box-sizing: border-box;
background-color: @primary-bg;
border: 1px solid @primary-disabled;
color: @disabled;
color: @fg;
fill: @disabled;
.details {
@@ -47,7 +47,7 @@
}
.l {
margin-right: 1em;
margin-right: 0.8em;
}
.sz {
@@ -71,17 +71,6 @@
line-height: 1.7em;
}
&:hover{
color: @fg;
fill: @fg;
border: 1px solid @primary;
.sz {
color: @primary;
border-right: 1px solid @primary;
}
}
&.selected {
color: @primary-bg;
background-color: @primary;

View File

@@ -44,8 +44,7 @@ thead {
tbody tr {
&.tr {
color: @disabled;
fill: @disabled;
color: @fg;
text-align: right;
&:hover {

View File

@@ -1,3 +1,7 @@
<div id="app-update" ng-show="appCacheUpdate">
<a href="#" onclick="window.location.reload()">Update Available! Click to Refresh</a>
</div>
<header>
<a class="l" ui-sref="shipyard" style="margin-right: 1em;" title="Ships"><svg class="icon xl"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coriolis"></use></svg></a>
@@ -15,9 +19,9 @@
<svg class="icon warning" ng-class="{'warning-disabled': !bs.hasBuilds}"><use xlink:href="#hammer"></use></svg> Builds
</div>
<div class="menu-list dbl" ng-if="openedMenu=='b'" ng-click="$event.stopPropagation();">
<ul class="l" ng-repeat="(shipId,builds) in allBuilds">
<ul ng-repeat="shipId in buildsList">
{{ships[shipId].properties.name}}
<li ng-repeat="(name, build) in builds">
<li ng-repeat="(name, build) in allBuilds[shipId]">
<a ui-sref-active="active" class="name" ui-sref="outfit({shipId:shipId, code:build, bn:name})" ng-bind="name"></a>
</li>
</ul>

View File

@@ -4,9 +4,10 @@
<div class="l">{{hp.c.class}}{{hp.c.rating}}<span ng-if="hp.c.mode">/{{hp.c.mode}}{{hp.c.missile}}</span> {{hp.c.name || lbl}}</div>
<div class="r">{{hp.c.mass}} <u>T</u></div>
<div class="cb">
<div class="l" ng-if="hp.c.damage">DMG: {{hp.c.damage}}</div>
<div class="l" ng-if="hp.c.dps">DPS: {{hp.c.dps}}</div>
<div class="l" ng-if="hp.c.thermload">T-Load: {{hp.c.thermload}}</div>
<div class="l" ng-if="hp.c.damage">DMG: {{hp.c.damage}} <span ng-if="hp.c.ssdam">({{$r.fCrd(hp.c.ssdam)}} <u>MJ</u>)</span></div>
<div class="l" ng-if="hp.c.dps">DPS: {{hp.c.dps}} <span ng-if="hp.c.mjdps">({{$r.fCrd(hp.c.mjdps)}} <u>MJ</u>)</span></div>
<div class="l" ng-if="hp.c.mjeps">EPS: {{$r.fCrd(hp.c.mjeps)}} <u>MJ</u></div>
<div class="l" ng-if="hp.c.thermload">T-Load: {{hp.c.thermload}}</div>
<div class="l" ng-if="hp.c.type">Type: {{hp.c.type}}</div>
<div class="l" ng-if="hp.c.rof">ROF: {{hp.c.rof}}<u>/s</u></div>
<div class="l" ng-if="hp.c.armourpen">Pen: {{hp.c.armourpen}}</div>

View File

@@ -2,7 +2,7 @@
<p>The Coriolis project was inspired by <a href="http://www.edshipyard.com/" target="_blank">E:D Shipyard</a> and, of course,
<a href="http://www.elitedangerous.com" target="_blank">Elite Dangerous</a>. The ultimate goal of Coriolis is to provide rich features to support in-game play and planning while engaging the E:D community to support its development.</p>
<p>Coriolis was created for non-commercial purposes. It is not endorsed by nor reflects the views or opinions of Frontier Developments.</p>
<p>Coriolis was created using assets and imagery from Elite: Dangerous, with the permission of Frontier Developments plc, for non-commercial purposes. It is not endorsed by nor reflects the views or opinions of Frontier Developments.</p>
<div>
<a class="l" style="margin: 0.4em" href="https://github.com/cmmcleod/coriolis" target="_blank" title="Coriolis Github Project">

View File

@@ -25,10 +25,7 @@
<td colspan="2">
<ul id="facet-container" as-sortable="facetSortOpts" ng-model="facets" class="sortable" update="tblUpdate">
<li ng-repeat="(i,f) in facets" as-sortable-item class="facet" ng-class="{active: f.active}" ng-click="toggleFacet(i)">
<div as-sortable-item-handle>
<svg class="icon move"><use xlink:href="{{f.active? '#checkmark' : '#checkmark2'}}"></use></svg>
<span ng-bind="f.title"></span>
</div>
<div as-sortable-item-handle><span ng-bind="f.title"></span></div>
</li>
</ul>
</td>

View File

@@ -125,8 +125,8 @@
<div class="l">{{pd.id}} Power Distributor</div>
<div class="r">{{pd.c.mass}} <u>T</u></div>
<div class="cb"></div>
<div class="l">Sys: {{pd.c.weaponcapacity}} <u>Mj</u> / {{pd.c.weaponrecharge}} <u>MW</u></div>
<div class="l">Wep: {{pd.c.systemcapacity}} <u>Mj</u> / {{pd.c.systemrecharge}} <u>MW</u></div>
<div class="l">Wep: {{pd.c.weaponcapacity}} <u>Mj</u> / {{pd.c.weaponrecharge}} <u>MW</u></div>
<div class="l">Sys: {{pd.c.systemcapacity}} <u>Mj</u> / {{pd.c.systemrecharge}} <u>MW</u></div>
<div class="l">Eng: {{pd.c.enginecapacity}} <u>Mj</u> / {{pd.c.enginerecharge}} <u>MW</u></div>
</div>
<div component-select class="select" s="pd" opts="availCS.common[4]" ng-if="selectedSlot==pd" ng-click="select('c',pd,$event)"></div>
@@ -220,6 +220,9 @@
<div class="header">Jump Range</div>
<div class="cen">
<div class="chart" area-chart config="jrChart" series="jrSeries"></div>
<div slider max="ship.fuelCapacity" unit="'T'" on-change="::fuelChange(val)" style="position:relative; margin: 0 auto;">
<svg class="icon xl primary-disabled" style="position:absolute;height: 100%;"><use xlink:href="#fuel"></use></svg>
</div>
</div>
</div>

View File

@@ -25,9 +25,22 @@
"angular-ui-router": "^0.2.15",
"d3-tip": "~0.6.7",
"ng-sortable": "~1.2.1",
"lz-string": "~1.4.3"
"lz-string": "~1.4.3",
"angular": "!~1.4.0"
},
"overrides": {
"angular": {
"main": "angular.min.js"
},
"angular-ui-router": {
"main": "release/angular-ui-router.min.js"
},
"d3": {
"main": "d3.min.js"
},
"ng-lodash": {
"main": "build/ng-lodash.min.js"
},
"ui-router-extras": {
"main": [
"release/modular/ct-ui-router-extras.core.min.js",
@@ -35,9 +48,7 @@
]
},
"ng-sortable": {
"main": [
"dist/ng-sortable.min.js"
]
"main": "dist/ng-sortable.min.js"
}
}
}

View File

@@ -14,6 +14,8 @@
"armourpen": "A",
"rof": null,
"dps": 5,
"mjdps" : 30.33,
"mjeps" : 5.65,
"thermload": 5
},
{
@@ -30,6 +32,8 @@
"armourpen": "A",
"rof": null,
"dps": 4,
"mjdps" : 24.00,
"mjeps" : 5.59,
"thermload": 6
},
{
@@ -46,6 +50,8 @@
"armourpen": "A",
"rof": null,
"dps": 4,
"mjdps" : 14.44,
"mjeps" : 3.54,
"thermload": 4
},
{
@@ -62,6 +68,8 @@
"armourpen": "A",
"rof": null,
"dps": 4,
"mjdps" : 19.38,
"mjeps" : 3.42,
"thermload": 4
},
{
@@ -78,6 +86,8 @@
"armourpen": "A",
"rof": null,
"dps": 4,
"mjdps" : 13.85,
"mjeps" : 3.26,
"thermload": 4
},
{
@@ -94,6 +104,8 @@
"armourpen": "A",
"rof": null,
"dps": 3,
"mjdps" : 8.95,
"mjeps" : 2.10,
"thermload": 3
},
{
@@ -110,6 +122,8 @@
"armourpen": "A",
"rof": null,
"dps": 3,
"mjdps" : 11.61,
"mjeps" : 2.16,
"thermload": 3
},
{
@@ -126,6 +140,8 @@
"armourpen": "A",
"rof": null,
"dps": 3,
"mjdps" : 8.70,
"mjeps" : 2.05,
"thermload": 3
},
{
@@ -142,6 +158,8 @@
"armourpen": "A",
"rof": null,
"dps": 3,
"mjdps" : 5.49,
"mjeps" : 1.29,
"thermload": 2
}
]

View File

@@ -14,6 +14,9 @@
"armourpen": "B",
"rof": 1,
"dps": 4,
"mjdps" : 24.97,
"mjeps" : 3.52,
"ssdam" : 27.85,
"thermload": 1
},
{
@@ -30,6 +33,9 @@
"armourpen": "A",
"rof": 1.2,
"dps": 4,
"mjdps" : 18.56,
"mjeps" : 3.27,
"ssdam" : 18.56,
"thermload": 1
},
{
@@ -46,6 +52,57 @@
"armourpen": "A",
"rof": 0.9,
"dps": 4,
"mjdps" : 8.78,
"mjeps" : 1.69,
"ssdam" : 9.45,
"thermload": 1
},
{
"id": "7h",
"group": "ul",
"class":2,
"rating":"E",
"cost": 23000,
"mass": 4,
"power":1.05,
"mode":"F",
"type":"T",
"damage": 3,
"armourpen":"A",
"rof":1.3,
"dps": 4,
"thermload": 1
},
{
"id": "7i",
"group": "ul",
"class":2,
"rating":"F",
"cost": 48500,
"mass": 4,
"power":1.04,
"mode":"G",
"type":"T",
"damage": 3,
"armourpen":"A",
"rof":1.5,
"dps": 4,
"thermload": 1
},
{
"id": "7j",
"group": "ul",
"class":2,
"rating":"F",
"cost": 162800,
"mass": 4,
"power":0.98,
"mode":"T",
"type":"T",
"damage": 2,
"armourpen":"A",
"rof":1.1,
"dps": 3,
"thermload": 1
},
{
@@ -62,6 +119,9 @@
"armourpen": "A",
"rof": 1.6,
"dps": 3,
"mjdps" : 9.94,
"mjeps" : 1.40,
"ssdam" : 6.45,
"thermload": 1
},
{
@@ -78,6 +138,9 @@
"armourpen": "A",
"rof": 1.7,
"dps": 3,
"mjdps" : 7.95,
"mjeps" : 1.40,
"ssdam" : 4.53,
"thermload": 1
},
{
@@ -94,6 +157,9 @@
"armourpen": "B",
"rof": 1.3,
"dps": 2,
"mjdps" : 2.98,
"mjeps" : 0.63,
"ssdam" : 2.24,
"thermload": 1
}
]

View File

@@ -17,6 +17,8 @@
"thermload": 2,
"grp": "c",
"clip": 5,
"mjdps": 8.13,
"ssdam" : 37.13,
"ammo": 100
},
{
@@ -36,9 +38,11 @@
"thermload": 2,
"grp": "c",
"clip": 5,
"mjdps": 10.97,
"ssdam" : 30.94,
"ammo": 100
},
{
{
"id": "1n",
"grp": "c",
"class": 3,
@@ -55,6 +59,8 @@
"thermload": 2,
"grp": "c",
"clip": 5,
"mjdps": 8.13,
"ssdam" : 22.28,
"ammo": 100
},
{
@@ -74,6 +80,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 7.95,
"ssdam" : 21.04,
"ammo": 100
},
{
@@ -93,6 +101,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 3.58,
"ssdam" : 12.38,
"ammo": 100
},
{
@@ -112,6 +122,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 6.00,
"ssdam" : 15.47,
"ammo": 100
},
{
@@ -131,6 +143,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 6.24,
"ssdam" : 15.47,
"ammo": 100
},
{
@@ -150,6 +164,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 2.41,
"ssdam" : 7.74,
"ammo": 100
},
{
@@ -169,6 +185,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 4.00,
"ssdam" : 9.59,
"ammo": 100
},
{
@@ -188,6 +206,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 3.80,
"ssdam" : 8.97,
"ammo": 100
},
{
@@ -207,6 +227,8 @@
"thermload": 1,
"grp": "c",
"clip": 5,
"mjdps" : 1.35,
"ssdam" : 4.13,
"ammo": 100
}
]

View File

@@ -1,6 +1,6 @@
{
"Fragment Cannons": [
{
{
"id": "1t",
"grp": "fc",
"class": 3,
@@ -17,6 +17,8 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps": 15.19,
"ssdam" : 28.36,
"ammo": 30
},
{
@@ -36,6 +38,8 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps" : 12.77,
"ssdam" : 23.21,
"ammo": 30
},
{
@@ -55,6 +59,8 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps" : 6.85,
"ssdam" : 12.89,
"ammo": 30
},
{
@@ -74,6 +80,47 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps" : 9.50,
"ssdam" : 18.05,
"ammo": 30
},
{
"id": "7e",
"grp": "fc",
"class": 2,
"rating": "D",
"cost": 437800,
"mass": 4,
"power": 1.03,
"mode": "G",
"type": "K",
"damage": 2,
"armourpen": "A",
"rof": 5.3,
"dps": 9,
"thermload": 1,
"grp": "fc",
"clip": 3,
"ammo": 30
},
{
"id": "7f",
"grp": "fc",
"class": 2,
"rating": "D",
"cost": 1459200,
"mass": 4,
"power": 0.79,
"mode": "T",
"type": "K",
"damage": 2,
"armourpen": "A",
"rof": 3.7,
"dps": 9,
"thermload": 1,
"grp": "fc",
"clip": 3,
"ammo": 30
},
{
@@ -93,6 +140,8 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps" : 5.53,
"ssdam" : 10.31,
"ammo": 30
},
{
@@ -112,6 +161,8 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps" : 3.58,
"ssdam" : 6.45,
"ammo": 30
},
{
@@ -131,6 +182,8 @@
"thermload": 1,
"grp": "fc",
"clip": 3,
"mjdps" : 2.11,
"ssdam" : 3.87,
"ammo": 30
}
]

View File

@@ -9,7 +9,7 @@
"mass": 2,
"power": 0.4,
"mode": "F",
"type": "T",
"type": "E",
"armourpen": "C",
"thermload": 2,
"clip": 1,
@@ -24,7 +24,7 @@
"mass": 4,
"power": 0.4,
"mode": "F",
"type": "T",
"type": "E",
"armourpen": "C",
"thermload": 3,
"clip": 3,

View File

@@ -1,6 +1,6 @@
{
"Missile Racks": [
{
{
"id": "2f",
"grp": "mr",
"class": 2,
@@ -18,6 +18,8 @@
"grp": "mr",
"clip": 12,
"ammo": 24,
"mjdps": 1.72,
"ssdam" : 3.87,
"missile": "D"
},
{
@@ -38,6 +40,8 @@
"grp": "mr",
"clip": 6,
"ammo": 18,
"mjdps": 0.57,
"ssdam" : 2.58,
"missile": "S"
},
{
@@ -58,6 +62,8 @@
"grp": "mr",
"clip": 8,
"ammo": 16,
"mjdps": 1.63,
"ssdam" : 3.87,
"missile": "D"
},
{
@@ -78,6 +84,8 @@
"grp": "mr",
"clip": 6,
"ammo": 6,
"mjdps": 0.57,
"ssdam" : 2.58,
"missile": "S"
}
]

View File

@@ -17,6 +17,8 @@
"thermload": 1,
"grp": "mc",
"clip": 90,
"mjdps" : 6.02,
"ssdam" : 1.20,
"ammo": 2100
},
{
@@ -36,6 +38,8 @@
"thermload": 1,
"grp": "mc",
"clip": 90,
"mjdps" : 5.59,
"ssdam" : 1.03,
"ammo": 2100
},
{
@@ -55,6 +59,8 @@
"thermload": 1,
"grp": "mc",
"clip": 90,
"mjdps" : 2.15,
"ssdam" : 0.52,
"ammo": 2100
},
{
@@ -74,6 +80,8 @@
"thermload": 1,
"grp": "mc",
"clip": 90,
"mjdps" : 3.75,
"ssdam" : 0.69,
"ammo": 2100
},
{
@@ -93,6 +101,8 @@
"thermload": 1,
"grp": "mc",
"clip": 90,
"mjdps" : 2.03,
"ssdam" : 0.34,
"ammo": 2100
},
{
@@ -112,6 +122,8 @@
"thermload": 1,
"grp": "mc",
"clip": 90,
"mjdps" : 1.54,
"ssdam" : 0.34,
"ammo": 2100
}
]

View File

@@ -17,6 +17,8 @@
"thermload": 10,
"grp": "pa",
"clip": 5,
"mjdps" : 6.89,
"ssdam" : 27.85,
"ammo": 100
},
{
@@ -36,6 +38,8 @@
"thermload": 8,
"grp": "pa",
"clip": 5,
"mjdps" : 20.98,
"ssdam" : 92.82,
"ammo": 100
},
{
@@ -55,6 +59,8 @@
"thermload": 10,
"grp": "pa",
"clip": 5,
"mjdps" : 25.55,
"ssdam" : 123.76,
"ammo": 100
}
]

View File

@@ -1,6 +1,6 @@
{
"Pulse Lasers": [
{
{
"id": "1d",
"grp": "pl",
"class": 3,
@@ -14,6 +14,9 @@
"armourpen": "A",
"rof": 3,
"dps": 4,
"mjdps" : 21.62,
"mjeps" : 2.86,
"ssdam" : 7.07,
"thermload": 1
},
{
@@ -30,6 +33,9 @@
"armourpen": "A",
"rof": 3.2,
"dps": 4,
"mjdps" : 18.28,
"mjeps" : 2.98,
"ssdam" : 5.59,
"thermload": 1
},
{
@@ -46,6 +52,9 @@
"armourpen": "A",
"rof": 2.3,
"dps": 3,
"mjdps" : 7.05,
"mjeps" : 1.24,
"ssdam" : 3.15,
"thermload": 1
},
{
@@ -62,6 +71,9 @@
"armourpen": "A",
"rof": 3.4,
"dps": 3,
"mjdps" : 14.29,
"mjeps" : 1.89,
"ssdam" : 4.20,
"thermload": 1
},
{
@@ -78,6 +90,9 @@
"armourpen": "A",
"rof": 3.6,
"dps": 3,
"mjdps" : 11.62,
"mjeps" : 1.89,
"ssdam" : 3.24,
"thermload": 1
},
{
@@ -94,6 +109,9 @@
"armourpen": "A",
"rof": 2.5,
"dps": 3,
"mjdps" : 4.72,
"mjeps" : 0.83,
"ssdam" : 1.86,
"thermload": 1
},
{
@@ -110,13 +128,16 @@
"armourpen": "A",
"rof": 3.8,
"dps": 3,
"mjdps" : 9.35,
"mjeps" : 1.24,
"ssdam" : 2.48,
"thermload": 1
},
{
"id": "18",
"grp": "pl",
"class": 1,
"rating": "F",
"rating": "G",
"cost": 6600,
"mass": 2,
"power": 0.39,
@@ -126,6 +147,9 @@
"armourpen": "A",
"rof": 4,
"dps": 3,
"mjdps" : 7.30,
"mjeps" : 1.19,
"ssdam" : 1.88,
"thermload": 1
},
{
@@ -142,6 +166,9 @@
"armourpen": "A",
"rof": 2.8,
"dps": 2,
"mjdps" : 2.90,
"mjeps" : 0.51,
"ssdam" : 1.07,
"thermload": 1
}
]

View File

@@ -17,6 +17,8 @@
"thermload": 7,
"grp": "rg",
"clip": 1,
"mjdps" : 13.75,
"ssdam" : 24.75,
"ammo": 30
},
{
@@ -36,6 +38,8 @@
"thermload": 10,
"grp": "rg",
"clip": 1,
"mjdps" : 21.66,
"ssdam" : 43.32,
"ammo": 30
}
]

View File

@@ -8,7 +8,7 @@
"cost": 697584,
"mass": 160,
"power": 1.44,
"cells": 6,
"cells": 5,
"rechargeRating": "C",
"recharge": 0
},
@@ -20,7 +20,7 @@
"cost": 1743961,
"mass": 64,
"power": 1.92,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 0
},
@@ -32,7 +32,7 @@
"cost": 4359903,
"mass": 160,
"power": 2.4,
"cells": 5,
"cells": 4,
"rechargeRating": "B",
"recharge": 0
},
@@ -44,7 +44,7 @@
"cost": 10899756,
"mass": 256,
"power": 2.88,
"cells": 6,
"cells": 5,
"rechargeRating": "A",
"recharge": 0
},
@@ -56,7 +56,7 @@
"cost": 27249391,
"mass": 160,
"power": 3.36,
"cells": 5,
"cells": 4,
"rechargeRating": "A",
"recharge": 0
},
@@ -68,7 +68,7 @@
"cost": 249137,
"mass": 80,
"power": 1.24,
"cells": 6,
"cells": 5,
"rechargeRating": "D",
"recharge": 97
},
@@ -80,7 +80,7 @@
"cost": 622843,
"mass": 32,
"power": 1.66,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 130
},
@@ -92,7 +92,7 @@
"cost": 1557108,
"mass": 80,
"power": 2.07,
"cells": 5,
"cells": 4,
"rechargeRating": "B",
"recharge": 163
},
@@ -104,7 +104,7 @@
"cost": 3892770,
"mass": 128,
"power": 2.48,
"cells": 6,
"cells": 5,
"rechargeRating": "B",
"recharge": 197
},
@@ -116,7 +116,7 @@
"cost": 9731925,
"mass": 80,
"power": 2.9,
"cells": 5,
"cells": 4,
"rechargeRating": "A",
"recharge": 230
},
@@ -128,7 +128,7 @@
"cost": 88978,
"mass": 40,
"power": 1.06,
"cells": 6,
"cells": 5,
"rechargeRating": "D",
"recharge": 92
},
@@ -140,7 +140,7 @@
"cost": 222444,
"mass": 16,
"power": 1.42,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 120
},
@@ -152,7 +152,7 @@
"cost": 556110,
"mass": 40,
"power": 1.77,
"cells": 5,
"cells": 4,
"rechargeRating": "C",
"recharge": 148
},
@@ -164,7 +164,7 @@
"cost": 1390275,
"mass": 64,
"power": 2.12,
"cells": 6,
"cells": 5,
"rechargeRating": "B",
"recharge": 176
},
@@ -176,7 +176,7 @@
"cost": 3475688,
"mass": 40,
"power": 2.48,
"cells": 5,
"cells": 4,
"rechargeRating": "A",
"recharge": 204
},
@@ -188,7 +188,7 @@
"cost": 31778,
"mass": 20,
"power": 0.9,
"cells": 5,
"cells": 4,
"rechargeRating": "D",
"recharge": 82
},
@@ -200,7 +200,7 @@
"cost": 79444,
"mass": 8,
"power": 1.2,
"cells": 3,
"cells": 2,
"rechargeRating": "C",
"recharge": 109
},
@@ -212,7 +212,7 @@
"cost": 198611,
"mass": 20,
"power": 1.5,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 135
},
@@ -224,7 +224,7 @@
"cost": 496527,
"mass": 32,
"power": 1.8,
"cells": 5,
"cells": 4,
"rechargeRating": "B",
"recharge": 162
},
@@ -236,7 +236,7 @@
"cost": 1241317,
"mass": 20,
"power": 2.1,
"cells": 4,
"cells": 3,
"rechargeRating": "B",
"recharge": 189
},
@@ -248,7 +248,7 @@
"cost": 11349,
"mass": 10,
"power": 0.74,
"cells": 5,
"cells": 4,
"rechargeRating": "D",
"recharge": 72
},
@@ -260,7 +260,7 @@
"cost": 28373,
"mass": 4,
"power": 0.98,
"cells": 3,
"cells": 2,
"rechargeRating": "D",
"recharge": 94
},
@@ -272,7 +272,7 @@
"cost": 70932,
"mass": 10,
"power": 1.23,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 117
},
@@ -284,7 +284,7 @@
"cost": 177331,
"mass": 16,
"power": 1.48,
"cells": 5,
"cells": 4,
"rechargeRating": "C",
"recharge": 140
},
@@ -296,7 +296,7 @@
"cost": 443328,
"mass": 10,
"power": 1.72,
"cells": 4,
"cells": 3,
"rechargeRating": "B",
"recharge": 163
},
@@ -308,7 +308,7 @@
"cost": 4053,
"mass": 5,
"power": 0.61,
"cells": 5,
"cells": 4,
"rechargeRating": "D",
"recharge": 61
},
@@ -320,7 +320,7 @@
"cost": 10133,
"mass": 2,
"power": 0.82,
"cells": 3,
"cells": 2,
"rechargeRating": "D",
"recharge": 80
},
@@ -332,7 +332,7 @@
"cost": 25333,
"mass": 5,
"power": 1.02,
"cells": 4,
"cells": 3,
"rechargeRating": "D",
"recharge": 100
},
@@ -344,7 +344,7 @@
"cost": 63333,
"mass": 8,
"power": 1.22,
"cells": 5,
"cells": 4,
"rechargeRating": "C",
"recharge": 119
},
@@ -356,7 +356,7 @@
"cost": 158331,
"mass": 5,
"power": 1.43,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 138
},
@@ -368,7 +368,7 @@
"cost": 1448,
"mass": 2.5,
"power": 0.5,
"cells": 5,
"cells": 4,
"rechargeRating": "E",
"recharge": 46
},
@@ -380,7 +380,7 @@
"cost": 3619,
"mass": 1,
"power": 0.67,
"cells": 3,
"cells": 2,
"rechargeRating": "D",
"recharge": 61
},
@@ -392,7 +392,7 @@
"cost": 9048,
"mass": 2.5,
"power": 0.84,
"cells": 4,
"cells": 3,
"rechargeRating": "D",
"recharge": 77
},
@@ -404,7 +404,7 @@
"cost": 22619,
"mass": 4,
"power": 1.01,
"cells": 5,
"cells": 4,
"rechargeRating": "D",
"recharge": 92
},
@@ -416,7 +416,7 @@
"cost": 56547,
"mass": 2.5,
"power": 1.18,
"cells": 4,
"cells": 3,
"rechargeRating": "C",
"recharge": 107
},
@@ -428,7 +428,7 @@
"cost": 517,
"mass": 1.3,
"power": 0.41,
"cells": 4,
"cells": 3,
"rechargeRating": "E",
"recharge": 31
},
@@ -440,7 +440,7 @@
"cost": 1293,
"mass": 0.5,
"power": 0.55,
"cells": 2,
"cells": 1,
"rechargeRating": "E",
"recharge": 41
},
@@ -452,7 +452,7 @@
"cost": 3231,
"mass": 1.3,
"power": 0.69,
"cells": 3,
"cells": 2,
"rechargeRating": "D",
"recharge": 51
},
@@ -464,7 +464,7 @@
"cost": 8078,
"mass": 2,
"power": 0.83,
"cells": 4,
"cells": 3,
"rechargeRating": "D",
"recharge": 61
},
@@ -476,7 +476,7 @@
"cost": 20195,
"mass": 1.3,
"power": 0.97,
"cells": 3,
"cells": 2,
"rechargeRating": "D",
"recharge": 72
}

View File

@@ -62,7 +62,7 @@
"internal": [
"02",
"02",
"4e",
"49",
"00",
0,
"2h"

View File

@@ -2,7 +2,7 @@
"diamondback": {
"properties": {
"grp": "ex",
"name": "Diamondback",
"name": "Diamondback Scout",
"manufacturer": "Lakon",
"class": 1,
"cost": 564300,

View File

@@ -13,7 +13,6 @@ var gulp = require('gulp'),
runSequence = require('run-sequence'),
exec = require('child_process').exec,
RevAll = require('gulp-rev-all'),
scp = require( 'gulp-scp2' ),
gutil = require( 'gulp-util' ),
svgstore = require( 'gulp-svgstore' ),
svgmin = require( 'gulp-svgmin' ),
@@ -54,7 +53,7 @@ gulp.task('json-lint', function() {
gulp.task('bower', function(){
return gulp.src(mainBowerFiles())
.pipe(uglify({mangle: false}).on('error',function(e){
.pipe(uglify({mangle: false, compress: false}).on('error',function(e){
console.log('Bower File:', e.fileName);
console.log('Line:', e.lineNumber);
console.log('Message:', e.message);

View File

@@ -1,6 +1,6 @@
{
"name": "coriolis_shipyard",
"version": "0.9.0",
"version": "0.10.0",
"repository": {
"type": "git",
"url": "https://github.com/cmmcleod/coriolis"
@@ -8,6 +8,8 @@
"private": true,
"dependencies": {},
"devDependencies": {
"gulp-manifest": "^0.0.6",
"angular": "^1.4.0",
"async": "^0.9.0",
"del": "^1.1.1",
"gulp": "^3.8.11",

View File

@@ -26,7 +26,8 @@ async.parallel([
function done(err, json) { this(err,json); }
function writeDB(err, arr) {
var internal = {}, hardpoints = {};
var ships = {}, internal = {}, hardpoints = {};
var shipOrder = Object.keys(arr[0]).sort();
var internalOrder = Object.keys(arr[3]).sort();
var hpOrder = [
"Pulse Lasers",
@@ -56,9 +57,13 @@ function writeDB(err, arr) {
hardpoints[hpOrder[j]] = arr[2][hpOrder[j]];
}
for (var s = 0; s < shipOrder.length; s++) {
ships[shipOrder[s]] = arr[0][shipOrder[s]];
}
try {
var db = {
ships: arr[0],
ships: ships,
components: {
common: arr[1],
hardpoints: hardpoints,