Skip to content

Instantly share code, notes, and snippets.

@Sleavely
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Sleavely/6bb4c37280b29a9e8ece to your computer and use it in GitHub Desktop.
Save Sleavely/6bb4c37280b29a9e8ece to your computer and use it in GitHub Desktop.
POT Minimap patch
<?
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
);
}
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