FML Improvements
This commit is contained in:
		| @@ -89,6 +89,15 @@ class CheckBoxFeature extends ScriptFeature { | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get the managed Entry | ||||
| 	 * | ||||
| 	 * @return \FML\Controls\Entry | ||||
| 	 */ | ||||
| 	public function getEntry() { | ||||
| 		return $this->entry; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set the Enabled Design | ||||
| 	 * | ||||
| @@ -134,6 +143,7 @@ class CheckBoxFeature extends ScriptFeature { | ||||
| Void " . self::FUNCTION_UPDATE_QUAD_DESIGN . "(CMlQuad _Quad) { | ||||
| 	declare " . self::VAR_CHECKBOX_ENABLED . " as Enabled for _Quad = True; | ||||
| 	Enabled = !Enabled; | ||||
| 	_Quad.StyleSelected = Enabled; | ||||
| 	declare " . self::VAR_CHECKBOX_DESIGNS . " as Designs for _Quad = Text[Boolean]; | ||||
| 	declare Design = Designs[Enabled]; | ||||
| 	declare DesignParts = TextLib::Split(\"|\", Design); | ||||
|   | ||||
| @@ -22,7 +22,6 @@ class ControlScript extends ScriptFeature { | ||||
| 	protected $control = null; | ||||
| 	protected $labelName = null; | ||||
| 	protected $text = null; | ||||
| 	protected $isolated = null; | ||||
|  | ||||
| 	/** | ||||
| 	 * Construct a new Custom Script Text | ||||
| @@ -30,13 +29,11 @@ class ControlScript extends ScriptFeature { | ||||
| 	 * @param Control $control   Event Control | ||||
| 	 * @param string  $text      Script Text | ||||
| 	 * @param string  $labelName (optional) Script Label Name | ||||
| 	 * @param bool    $isolated  (optional) Whether to isolate the Script Text | ||||
| 	 */ | ||||
| 	public function __construct(Control $control, $text, $labelName = ScriptLabel::MOUSECLICK, $isolated = true) { | ||||
| 	public function __construct(Control $control, $text, $labelName = ScriptLabel::MOUSECLICK) { | ||||
| 		$this->setControl($control); | ||||
| 		$this->setText($text); | ||||
| 		$this->setLabelName($labelName); | ||||
| 		$this->setIsolated($isolated); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| @@ -76,36 +73,47 @@ class ControlScript extends ScriptFeature { | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Set whether the Script should be isolated | ||||
| 	 * | ||||
| 	 * @param bool $isolated Whether to isolate the Script Text | ||||
| 	 * @return \FML\Script\Features\ControlScript | ||||
| 	 */ | ||||
| 	public function setIsolated($isolated = true) { | ||||
| 		$this->isolated = (bool)$isolated; | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * @see \FML\Script\Features\ScriptFeature::prepare() | ||||
| 	 */ | ||||
| 	public function prepare(Script $script) { | ||||
| 		$script->appendGenericScriptLabel($this->labelName, $this->getEncapsulatedText(), $this->isolated); | ||||
| 		$script->appendGenericScriptLabel($this->labelName, $this->buildScriptText(), true); | ||||
| 		return $this; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Get the Script Text encapsulated for the Control Event | ||||
| 	 * Build the Script Text for the Control | ||||
| 	 * | ||||
| 	 * @return string | ||||
| 	 */ | ||||
| 	protected function getEncapsulatedText() { | ||||
| 	protected function buildScriptText() { | ||||
| 		$controlId  = $this->control->getId(true); | ||||
| 		$scriptText = " | ||||
| if (Event.ControlId == \"{$controlId}\") { | ||||
| 	{$this->text} | ||||
| }"; | ||||
| 		$scriptText = ''; | ||||
| 		$closeBlock = false; | ||||
|  | ||||
| 		if (ScriptLabel::isEventLabel($this->labelName)) { | ||||
| 			$scriptText .= ' | ||||
| if (Event.ControlId == "' . $controlId . '") { | ||||
| declare Control <=> Event.Control;'; | ||||
| 			$closeBlock = true; | ||||
| 		} else { | ||||
| 			$scriptText .= ' | ||||
| declare Control <=> Page.GetFirstChild("' . $controlId . '");'; | ||||
| 		} | ||||
|  | ||||
| 		$class = $this->control->getManiaScriptClass(); | ||||
| 		$name  = preg_replace('/^CMl/', '', $class, 1); | ||||
| 		$scriptText .= ' | ||||
| declare ' . $name . ' <=> (Control as ' . $class . '); | ||||
| '; | ||||
|  | ||||
| 		$scriptText .= $this->text . ' | ||||
| '; | ||||
|  | ||||
| 		if ($closeBlock) { | ||||
| 			$scriptText .= '}'; | ||||
| 		} | ||||
|  | ||||
| 		return $scriptText; | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -3,16 +3,37 @@ | ||||
| namespace FML\Script\Features; | ||||
|  | ||||
| use FML\Script\Script; | ||||
| use FML\Types\ScriptFeatureable; | ||||
|  | ||||
| /** | ||||
|  * ManiaLink Script Feature Class | ||||
|  * | ||||
|  * @author steeffeen | ||||
|  * @author    steeffeen | ||||
|  * @copyright FancyManiaLinks Copyright © 2014 Steffen Schröder | ||||
|  * @license http://www.gnu.org/licenses/ GNU General Public License, Version 3 | ||||
|  * @license   http://www.gnu.org/licenses/ GNU General Public License, Version 3 | ||||
|  */ | ||||
| abstract class ScriptFeature { | ||||
|  | ||||
| 	/** | ||||
| 	 * Collect the Script Features of the given Objects | ||||
| 	 * | ||||
| 	 * @param object $scriptFeatureable ScriptFeatureable Object | ||||
| 	 * @param object $_                 (optional) Various Amount of additional Objects | ||||
| 	 * @return array | ||||
| 	 */ | ||||
| 	public static function collect($scriptFeatureable, $_ = null) { | ||||
| 		$params         = func_get_args(); | ||||
| 		$scriptFeatures = array(); | ||||
| 		foreach ($params as $object) { | ||||
| 			if ($object instanceof ScriptFeatureable) { | ||||
| 				$scriptFeatures = array_merge($scriptFeatures, $object->getScriptFeatures()); | ||||
| 			} else if ($object instanceof ScriptFeature) { | ||||
| 				array_push($scriptFeatures, $object); | ||||
| 			} | ||||
| 		} | ||||
| 		return $scriptFeatures; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Prepare the given Script for Rendering by adding the needed Labels, etc. | ||||
| 	 * | ||||
|   | ||||
		Reference in New Issue
	
	Block a user