Skip to content
This repository was archived by the owner on Oct 30, 2020. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 2 additions & 21 deletions inc/chrome-fit.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,27 +105,8 @@ function print_formatted_mastery(&$fit, $relative, array $prereqs_per_type) {
}
}

$sp = function($level, $rank) {
if($level == 0) return 0;
return ceil(pow(2, 2.5 * ($level - 1.0)) * 250.0 * $rank);
};

foreach($prereqs_unique as $stid => $level) {
$current = isset($fit['skillset']['override'][$stid])
? $fit['skillset']['override'][$stid] : $fit['skillset']['default'];

$rank = \Osmium\Fit\get_skill_rank($stid);
$needed = ceil(250.0 * $rank * pow(2, 2.5 * ($level - 1.0)));

$totalsp += $needed;

if($current >= $level) {
continue;
}

$missing_unique[$stid] = $level;
$missingsp += $needed - ceil(250.0 * $rank * ($current ? pow(2, 2.5 * ($current - 1.0)) : 0));
}
$missing_unique = \Osmium\Skills\get_missing_prerequisites_unique($prereqs_unique, $fit['skillset']);
list($totalsp, $missingsp) = \Osmium\Skills\sum_sp($prereqs_unique, $fit['skillset']);

foreach($types_per_prereqs as &$arr) {
$arr = array_reverse(array_keys($arr));
Expand Down
3 changes: 3 additions & 0 deletions inc/chrome.php
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,11 @@ function format_duration($seconds) {
}

function format_long_duration($seconds, $precision = 6) {
$tz = date_default_timezone_get();
date_default_timezone_set('UTC');
list($y, $m, $d, $h, $i, $s) = explode('-', date('Y-m-d-H-i-s', 0));
list($Y, $M, $D, $H, $I, $S) = explode('-', date('Y-m-d-H-i-s', $seconds));
date_default_timezone_set($tz);

$years = $Y - $y;
$months = $M - $m;
Expand Down
78 changes: 38 additions & 40 deletions inc/fit-db.php
Original file line number Diff line number Diff line change
Expand Up @@ -1179,6 +1179,41 @@ function fetch_fit_uri($loadoutid) {
return get_fit_uri($loadoutid, $visibility, $ptoken);
}

/**
* Grabs a skillset associated with the current account.
*
* @todo have some proper way to specify the default skillset.
* @see use_skillset()
*/
function use_default_skillset(&$fit, $a) {
if(!isset($a['accountid'])) {
use_skillset($fit, array(), 5, 'All V');
return 'All V';
}

$row = \Osmium\Db\fetch_assoc(
\Osmium\Db\query_params(
'SELECT importedskillset, overriddenskillset, name FROM osmium.accountcharacters
WHERE accountid = $1 LIMIT 1',
array($a['accountid'])
));
if($row === false) {
/* No skillsets */
use_skillset($fit, array(), 5, 'All V');
return 'All V';
}

$skillset = json_decode($row['importedskillset'], true);
$overridden = json_decode($row['overriddenskillset'], true);
if(!is_array($skillset)) $skillset = array();
if(!is_array($overridden)) $overridden = array();
foreach($overridden as $typeid => $l) {
$skillset[$typeid] = $l;
}
use_skillset($fit, $skillset, 0, $row['name']);
return $row['name'];
}

/**
* Parses a skillset title and fetches it using characters of account
* $a.
Expand Down Expand Up @@ -1242,29 +1277,6 @@ function get_available_skillset_names_for_account() {
return $names;
}

/**
* Takes in an array of item/module type IDs; fills the $result array with entries like:
* input_type_id => array(
* skill_type_id => required_level,
* ...
* )
*/
function get_skill_prerequisites_for_types(array $types, array &$result) {
foreach ($types as $typeid) {
if(!isset($result[$typeid])) {
$result[$typeid] = [];
}

foreach(get_required_skills($typeid) as $stid => $slevel) {
if(!isset($result[$stid])) {
get_skill_prerequisites_for_types([ $stid ], $result);
}

$result[$typeid][$stid] = $slevel;
}
}
}

function get_skill_prerequisites_and_missing_prerequisites($fit) {
$types = array();

Expand Down Expand Up @@ -1293,23 +1305,9 @@ function get_skill_prerequisites_and_missing_prerequisites($fit) {
}

$types = array_keys($types);
$prereqs = $missing = array();

get_skill_prerequisites_for_types($types, $prereqs);

foreach($types as $tid) {
if(!isset($prereqs[$tid])) continue;

foreach($prereqs[$tid] as $stid => $level) {
$current = isset($fit['skillset']['override'][$stid])
? $fit['skillset']['override'][$stid] : $fit['skillset']['default'];

if($current < $level) {
$missing[$tid] = 1;
break;
}
}
}
$prereqs = array();
\Osmium\Skills\get_skill_prerequisites_for_types($types, $prereqs);
$missing = \Osmium\Skills\get_missing_prerequisites($prereqs, $fit['skillset']);

return [ $prereqs, $missing ];
}
60 changes: 0 additions & 60 deletions inc/fit-names.php
Original file line number Diff line number Diff line change
Expand Up @@ -156,45 +156,6 @@ function get_groupname($groupid) {
);
}

function get_required_skills($typeid) {
$typeid = (int)$typeid;
$key = 'NameCache_required_skills_'.$typeid;
$cache = \Osmium\State\get_cache_memory($key);

if($cache !== null) {
return $cache;
}

static $rs = [
182 => 277, /* RequiredSkill1 => RequiredSkill1Level */
183 => 278, /* etc… */
184 => 279,
1285 => 1286,
1289 => 1287,
1290 => 1288,
];

$vals = [];

static $ctx = null;
if($ctx === null) dogma_init_context($ctx);

/* XXX: this is hackish */
dogma_init_context($ctx);
dogma_set_ship($ctx, $typeid);
foreach($rs as $rsattid => $rslattid) {
if(dogma_get_ship_attribute($ctx, $rsattid, $skill) === DOGMA_OK
&& dogma_get_ship_attribute($ctx, $rslattid, $level) === DOGMA_OK) {
if($skill > 0 && $level > 0) {
$vals[$skill] = $level;
}
}
}

\Osmium\State\put_cache_memory($key, $vals, 86400);
return $vals;
}

function get_implant_slot($typeid) {
$typeid = (int)$typeid;
$key = 'NameCache_implantness_'.$typeid;
Expand All @@ -219,24 +180,3 @@ function get_implant_slot($typeid) {
\Osmium\State\put_cache_memory($key, $slot, 86400);
return $slot;
}

function get_skill_rank($typeid) {
$typeid = (int)$typeid;
$key = 'NameCache_skill_rank_'.$typeid;
$cache = \Osmium\State\get_cache_memory($key);

if($cache !== null) {
return $cache;
}

static $ctx = null;
if($ctx === null) dogma_init_context($ctx);

/* XXX */
dogma_set_ship($ctx, $typeid);

dogma_get_ship_attribute($ctx, ATT_SkillTimeConstant, $rank);

\Osmium\State\put_cache_memory($key, $rank, 86400);
return $rank;
}
1 change: 1 addition & 0 deletions inc/root.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@
require ROOT.'/inc/log.php';
require ROOT.'/inc/notification.php';
require ROOT.'/inc/reputation.php';
require ROOT.'/inc/skills.php';

\Osmium\Forms\post_redirect_get();

Expand Down
Loading