Last active
August 29, 2015 14:02
-
-
Save Sleavely/6bb4c37280b29a9e8ece to your computer and use it in GitHub Desktop.
POT Minimap patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
require('app/libraries/POT/POT.php'); | |
// Will now be either an array with 3 values (RGB) or false if this itemid doesnt have a minimap color. | |
$grassColor = ColorsFetcher::getItem(4526); | |
class ColorsFetcher { | |
private static $items = array(); | |
/** | |
* Fetch an item color from cache or OTB. | |
* | |
* @param $itemid | |
* @return false|array RGB | |
*/ | |
public static function getItem($itemid) | |
{ | |
//Check for a cached color we've already fetched | |
if(!isset(self::$items[$itemid])) | |
{ | |
if(!POT::areItemsLoaded()) POT::loadItems( '/path/to/tibiafiles' ); | |
$list = POT::getItemsList(); | |
if($list->hasItemTypeId($itemid)) | |
{ | |
$item = $list->getItemType($itemid); | |
if($item->hasAttribute('minimapColor')) | |
{ | |
//Cache the RGB array to avoid having to look it up all the time | |
self::$items[$itemid] = self::$rgbs[$item->getAttribute('minimapColor')]; | |
} | |
} | |
//If the value is still not set it means its "transparent". Cache that. | |
if(!isset(self::$items[$itemid])) self::$items[$itemid] = false; | |
} | |
return self::$items[$itemid]; | |
} | |
private static $rgbs = array( | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //0 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //4 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //8 | |
array(0,102,0), array(0,0,0), array(0,0,0), array(0,0,0), //12 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //16 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //20 | |
array(0,204,0), array(0,0,0), array(0,0,0), array(0,0,0), //24 | |
array(0,0,0), array(0,0,0), array(0,255,0), array(0,0,0), //28 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //32 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //36 | |
array(51,0,204), array(0,0,0), array(0,0,0), array(0,0,0), //40 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //44 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //48 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //52 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //56 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //60 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //64 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //68 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //72 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //76 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //80 | |
array(0,0,0), array(0,0,0), array(102,102,102),array(0,0,0), //84 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //88 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //92 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //96 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //100 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //104 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //108 | |
array(0,0,0), array(0,0,0), array(163,51,0), array(0,0,0), //112 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //116 | |
array(0,0,0), array(153,102,51), array(0,0,0), array(0,0,0), //120 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //124 | |
array(0,0,0), array(153,153,153),array(0,0,0), array(0,0,0), //128 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //132 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //136 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //140 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //144 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //148 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //152 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //156 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //160 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //164 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //168 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //172 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(204,255,255), //176 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //180 | |
array(0,0,0), array(0,0,0), array(255,51,0), array(0,0,0), //184 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //188 | |
array(255,102,0),array(0,0,0), array(0,0,0), array(0,0,0), //192 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //196 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //200 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(255,204,153), //204 | |
array(0,0,0), array(0,0,0), array(255,255,0), array(0,0,0), //208 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(255,255,255), //212 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //216 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //220 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //224 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //228 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //232 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //236 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //240 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //244 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0), //248 | |
array(0,0,0), array(0,0,0), array(0,0,0), array(0,0,0) //252 | |
); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 3ec96e871d2e561faeef82524ed91bb98698f6a1 Mon Sep 17 00:00:00 2001 | |
From: Joakim Hedlund | |
Date: Thu, 12 Jun 2014 18:44:52 +0200 | |
Subject: [PATCH] Parse and tuck away minimap colors | |
--- | |
app/libraries/POT/OTS_ItemsList.php | 68 ++++++++++++++++++++++++++++++++----- | |
1 file changed, 59 insertions(+), 9 deletions(-) | |
diff --git a/app/libraries/POT/OTS_ItemsList.php b/app/libraries/POT/OTS_ItemsList.php | |
index 73efbe8..39fe736 100644 | |
--- a/app/libraries/POT/OTS_ItemsList.php | |
+++ b/app/libraries/POT/OTS_ItemsList.php | |
@@ -146,6 +146,11 @@ class OTS_ItemsList extends OTS_FileLoader implements IteratorAggregate, Countab | |
*/ | |
const ITEM_ATTR_SPEED = 20; | |
/** | |
+ * Minimap color. | |
+ */ | |
+ //Sleavely: Additional attribute for fun and profit | |
+ const ITEM_ATTR_MINIMAPCOLOR = 33; | |
+/** | |
* Light. | |
* | |
* @version 0.0.8 | |
@@ -252,16 +257,41 @@ class OTS_ItemsList extends OTS_FileLoader implements IteratorAggregate, Countab | |
foreach( $xml->documentElement->getElementsByTagName('item') as $tag) | |
{ | |
// composes basic item info | |
- $item = new OTS_ItemType( $tag->getAttribute('id') ); | |
- $item->setName( $tag->getAttribute('name') ); | |
- | |
- // reads attributes | |
- foreach( $tag->getElementsByTagName('attribute') as $attribute) | |
+ if($tag->getAttribute('id')) | |
{ | |
- $item->setAttribute( $attribute->getAttribute('key'), $attribute->getAttribute('value') ); | |
+ $item = new OTS_ItemType( $tag->getAttribute('id') ); | |
+ $item->setName( $tag->getAttribute('name') ); | |
+ | |
+ // reads attributes | |
+ foreach( $tag->getElementsByTagName('attribute') as $attribute) | |
+ { | |
+ $item->setAttribute( $attribute->getAttribute('key'), $attribute->getAttribute('value') ); | |
+ } | |
+ | |
+ $this->items[ $item->getId() ] = $item; | |
+ } | |
+ else if($tag->getAttribute('fromid') && $tag->getAttribute('toid')) | |
+ { | |
+ $from = (int) $tag->getAttribute('fromid'); | |
+ $to = (int) $tag->getAttribute('toid'); | |
+ for($current = $from; $current <= $to; $current++) | |
+ { | |
+ $item = new OTS_ItemType( $current ); | |
+ $item->setName( $tag->getAttribute('name') ); | |
+ | |
+ // reads attributes | |
+ foreach( $tag->getElementsByTagName('attribute') as $attribute) | |
+ { | |
+ $item->setAttribute( $attribute->getAttribute('key'), $attribute->getAttribute('value') ); | |
+ } | |
+ | |
+ $this->items[ $current ] = $item; | |
+ } | |
+ } | |
+ else | |
+ { | |
+ throw new Exception('Item tag could not be parsed. Its probably retarded and its parents never loved it.'); | |
} | |
- | |
- $this->items[ $item->getId() ] = $item; | |
} | |
} | |
@@ -318,6 +348,8 @@ class OTS_ItemsList extends OTS_FileLoader implements IteratorAggregate, Countab | |
$lightLevel = null; | |
$lightColor = null; | |
$topOrder = null; | |
+ //Sleavely: map that minimap, yo! | |
+ $minimapColor = null; | |
// reads flags | |
$flags = $node->getLong(); | |
@@ -386,6 +418,18 @@ class OTS_ItemsList extends OTS_FileLoader implements IteratorAggregate, Countab | |
$topOrder = $node->getChar(); | |
break; | |
+ //Sleavely: need to consider minimap colors | |
+ // Minimap color | |
+ case self::ITEM_ATTR_MINIMAPCOLOR: | |
+ // checks length | |
+ if($length != 2) | |
+ { | |
+ throw E_OTS_FileLoaderError(E_OTS_FileLoaderError::ERROR_INVALID_FORMAT); | |
+ } | |
+ | |
+ $minimapColor = $node->getShort(); | |
+ break; | |
+ | |
// skips unknown attributes | |
default: | |
$node->skip($length); | |
@@ -425,6 +469,12 @@ class OTS_ItemsList extends OTS_FileLoader implements IteratorAggregate, Countab | |
$type->setAttribute('topOrder', $topOrder); | |
} | |
+ //Sleavely: more minimap logic, should be the last of it. maybe. | |
+ if( isset($minimapColor) ) | |
+ { | |
+ $type->setAttribute('minimapColor', $minimapColor); | |
+ } | |
+ | |
switch( $node->getType() ) | |
{ | |
// container | |
-- | |
1.9.2.msysgit.0 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment