196 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace FML\Controls;
 | |
| 
 | |
| use FML\Types\Styleable;
 | |
| 
 | |
| /**
 | |
|  * Gauge Control
 | |
|  * (CMlGauge)
 | |
|  *
 | |
|  * @author    steeffeen
 | |
|  * @copyright FancyManiaLinks Copyright © 2014 Steffen Schröder
 | |
|  * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3
 | |
|  */
 | |
| class Gauge extends Control implements Styleable {
 | |
| 	/*
 | |
| 	 * Constants
 | |
| 	 */
 | |
| 	const STYLE_BgCard           = 'BgCard';
 | |
| 	const STYLE_EnergyBar        = 'EnergyBar';
 | |
| 	const STYLE_ProgressBar      = 'ProgressBar';
 | |
| 	const STYLE_ProgressBarSmall = 'ProgressBarSmall';
 | |
| 
 | |
| 	/*
 | |
| 	 * Protected Properties
 | |
| 	 */
 | |
| 	protected $ratio = 0.;
 | |
| 	protected $grading = 1.;
 | |
| 	protected $color = '';
 | |
| 	protected $rotation = 0.;
 | |
| 	protected $centered = 0;
 | |
| 	protected $clan = 0;
 | |
| 	protected $drawBg = 1;
 | |
| 	protected $drawBlockBg = 1;
 | |
| 	protected $style = '';
 | |
| 
 | |
| 	/**
 | |
| 	 * Construct a new Gauge Control
 | |
| 	 *
 | |
| 	 * @param string $id (optional) Control Id
 | |
| 	 */
 | |
| 	public function __construct($id = null) {
 | |
| 		parent::__construct($id);
 | |
| 		$this->tagName = 'gauge';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Create a new Gauge Control
 | |
| 	 *
 | |
| 	 * @param string $id (optional) Control Id
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public static function create($id = null) {
 | |
| 		$gauge = new Gauge($id);
 | |
| 		return $gauge;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @see \FML\Controls\Control::getManiaScriptClass()
 | |
| 	 */
 | |
| 	public function getManiaScriptClass() {
 | |
| 		return 'CMlGauge';
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Ratio
 | |
| 	 *
 | |
| 	 * @param float $ratio Ratio Value
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setRatio($ratio) {
 | |
| 		$this->ratio = (float)$ratio;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Grading
 | |
| 	 *
 | |
| 	 * @param float $grading Grading Value
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setGrading($grading) {
 | |
| 		$this->grading = (float)$grading;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Color
 | |
| 	 *
 | |
| 	 * @param string $color Gauge Color
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setColor($color) {
 | |
| 		$this->color = (string)$color;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Rotation
 | |
| 	 *
 | |
| 	 * @param float $rotation Gauge Rotation
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setRotation($rotation) {
 | |
| 		$this->rotation = (float)$rotation;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Centered
 | |
| 	 *
 | |
| 	 * @param bool $centered Whether Gauge is centered
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setCentered($centered) {
 | |
| 		$this->centered = ($centered ? 1 : 0);
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Clan
 | |
| 	 *
 | |
| 	 * @param int $clan Clan number
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setClan($clan) {
 | |
| 		$this->clan = (int)$clan;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Draw Background
 | |
| 	 *
 | |
| 	 * @param bool $drawBg Whether Gauge Background should be drawn
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setDrawBg($drawBg) {
 | |
| 		$this->drawBg = ($drawBg ? 1 : 0);
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set Draw Block Background
 | |
| 	 *
 | |
| 	 * @param bool $drawBlockBg Whether Gauge Block Background should be drawn
 | |
| 	 * @return \FML\Controls\Gauge
 | |
| 	 */
 | |
| 	public function setDrawBlockBg($drawBlockBg) {
 | |
| 		$this->drawBlockBg = ($drawBlockBg ? 1 : 0);
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @see \FML\Types\Styleable::setStyle()
 | |
| 	 */
 | |
| 	public function setStyle($style) {
 | |
| 		$this->style = (string)$style;
 | |
| 		return $this;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * @see \FML\Control::render()
 | |
| 	 */
 | |
| 	public function render(\DOMDocument $domDocument) {
 | |
| 		$xmlElement = parent::render($domDocument);
 | |
| 		if ($this->ratio) {
 | |
| 			$xmlElement->setAttribute('ratio', $this->ratio);
 | |
| 		}
 | |
| 		if ($this->grading != 1.) {
 | |
| 			$xmlElement->setAttribute('grading', $this->grading);
 | |
| 		}
 | |
| 		if ($this->color) {
 | |
| 			$xmlElement->setAttribute('color', $this->color);
 | |
| 		}
 | |
| 		if ($this->rotation) {
 | |
| 			$xmlElement->setAttribute('rotation', $this->rotation);
 | |
| 		}
 | |
| 		if ($this->centered) {
 | |
| 			$xmlElement->setAttribute('centered', $this->centered);
 | |
| 		}
 | |
| 		if ($this->clan) {
 | |
| 			$xmlElement->setAttribute('clan', $this->clan);
 | |
| 		}
 | |
| 		if (!$this->drawBg) {
 | |
| 			$xmlElement->setAttribute('drawbg', $this->drawBg);
 | |
| 		}
 | |
| 		if (!$this->drawBlockBg) {
 | |
| 			$xmlElement->setAttribute('drawblockbg', $this->drawBlockBg);
 | |
| 		}
 | |
| 		if ($this->style) {
 | |
| 			$xmlElement->setAttribute('style', $this->style);
 | |
| 		}
 | |
| 		return $xmlElement;
 | |
| 	}
 | |
| }
 |