Cleaning Demo-PhpComponent
This commit is contained in:
Родитель
c682ceb28e
Коммит
19832ca5a2
|
@ -60,12 +60,12 @@ class Background extends Entity
|
|||
{
|
||||
parent::__construct(["x" => 0, "y" => 0], $size);
|
||||
|
||||
$this["attributes"]["class"]->add("asteroids-background");
|
||||
|
||||
$this["attributes"]["style"]["height"] = $size["height"] . "px";
|
||||
$this["attributes"]["style"]["width"] = $size["width"] . "px";
|
||||
$this["attributes"]["style"]["top"] = "0px";
|
||||
$this["attributes"]["style"]["left"] = "0px";
|
||||
$this->attributes["class"]->add("asteroids-background");
|
||||
|
||||
$this->attributes["style"]["height"] = $size["height"] . "px";
|
||||
$this->attributes["style"]["width"] = $size["width"] . "px";
|
||||
$this->attributes["style"]["top"] = "0px";
|
||||
$this->attributes["style"]["left"] = "0px";
|
||||
}
|
||||
|
||||
public static function createDefault() : Background
|
||||
|
@ -80,13 +80,13 @@ class Asteroid extends MovableEntity
|
|||
{
|
||||
parent::__construct($position, $direction, $size);
|
||||
|
||||
$this["attributes"]["class"]->add("asteroids-asteroid");
|
||||
|
||||
$this["attributes"]["style"]["height"] = $this->size["height"] . "px";
|
||||
$this["attributes"]["style"]["z-index"] = 1;
|
||||
$this["attributes"]["style"]["width"] = $this->size["width"] . "px";
|
||||
$this["attributes"]["style"]["top"] = $this->position["y"] . "px";
|
||||
$this["attributes"]["style"]["left"] = $this->position["x"] . "px";
|
||||
$this->attributes["class"]->add("asteroids-asteroid");
|
||||
|
||||
$this->attributes["style"]["height"] = $this->size["height"] . "px";
|
||||
$this->attributes["style"]["z-index"] = 1;
|
||||
$this->attributes["style"]["width"] = $this->size["width"] . "px";
|
||||
$this->attributes["style"]["top"] = $this->position["y"] . "px";
|
||||
$this->attributes["style"]["left"] = $this->position["x"] . "px";
|
||||
}
|
||||
|
||||
public static function createDefault(array $position) : Asteroid
|
||||
|
@ -97,8 +97,8 @@ class Asteroid extends MovableEntity
|
|||
public function move(float $time) : void
|
||||
{
|
||||
parent::move($time);
|
||||
$this["attributes"]["style"]["top"] = $this->position["y"] . "px";
|
||||
$this["attributes"]["style"]["left"] = $this->position["x"] . "px";
|
||||
$this->attributes["style"]["top"] = $this->position["y"] . "px";
|
||||
$this->attributes["style"]["left"] = $this->position["x"] . "px";
|
||||
}
|
||||
|
||||
public function penetration(array $position, array $size) : bool
|
||||
|
@ -118,20 +118,20 @@ class Bullet extends MovableEntity
|
|||
{
|
||||
parent::__construct($position, $direction, $size);
|
||||
|
||||
$this["attributes"]["class"]->add("asteroids-bullet");
|
||||
|
||||
$this["attributes"]["style"]["height"] = $this->size["height"] . "px";
|
||||
$this["attributes"]["style"]["z-index"] = 1;
|
||||
$this["attributes"]["style"]["width"] = $this->size["width"] . "px";
|
||||
$this["attributes"]["style"]["top"] = $this->position["y"] . "px";
|
||||
$this["attributes"]["style"]["left"] = $this->position["x"] . "px";
|
||||
$this->attributes["class"]->add("asteroids-bullet");
|
||||
|
||||
$this->attributes["style"]["height"] = $this->size["height"] . "px";
|
||||
$this->attributes["style"]["z-index"] = 1;
|
||||
$this->attributes["style"]["width"] = $this->size["width"] . "px";
|
||||
$this->attributes["style"]["top"] = $this->position["y"] . "px";
|
||||
$this->attributes["style"]["left"] = $this->position["x"] . "px";
|
||||
}
|
||||
|
||||
public function move(float $time) : void
|
||||
{
|
||||
parent::move($time);
|
||||
$this["attributes"]["style"]["top"] = $this->position["y"] . "px";
|
||||
$this["attributes"]["style"]["left"] = $this->position["x"] . "px";
|
||||
$this->attributes["style"]["top"] = $this->position["y"] . "px";
|
||||
$this->attributes["style"]["left"] = $this->position["x"] . "px";
|
||||
}
|
||||
|
||||
public static function createDefault(array $position)
|
||||
|
@ -146,13 +146,13 @@ class Rocket extends MovableEntity
|
|||
{
|
||||
parent::__construct($position, $direction, $size);
|
||||
|
||||
$this["attributes"]["class"]->add("asteroids-rocket");
|
||||
|
||||
$this["attributes"]["style"]["height"] = $this->size["height"] . "px";
|
||||
$this["attributes"]["style"]["z-index"] = 1;
|
||||
$this["attributes"]["style"]["width"] = $this->size["width"] . "px";
|
||||
$this["attributes"]["style"]["top"] = $this->position["y"] . "px";
|
||||
$this["attributes"]["style"]["left"] = $this->position["x"] . "px";
|
||||
$this->attributes["class"]->add("asteroids-rocket");
|
||||
|
||||
$this->attributes["style"]["height"] = $this->size["height"] . "px";
|
||||
$this->attributes["style"]["z-index"] = 1;
|
||||
$this->attributes["style"]["width"] = $this->size["width"] . "px";
|
||||
$this->attributes["style"]["top"] = $this->position["y"] . "px";
|
||||
$this->attributes["style"]["left"] = $this->position["x"] . "px";
|
||||
}
|
||||
|
||||
public static function createDefault(array $position)
|
||||
|
@ -166,8 +166,8 @@ class Rocket extends MovableEntity
|
|||
public function move(float $time) : void
|
||||
{
|
||||
parent::move($time);
|
||||
$this["attributes"]["style"]["top"] = $this->position["y"] . "px";
|
||||
$this["attributes"]["style"]["left"] = $this->position["x"] . "px";
|
||||
$this->attributes["style"]["top"] = $this->position["y"] . "px";
|
||||
$this->attributes["style"]["left"] = $this->position["x"] . "px";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -186,13 +186,13 @@ class Application extends \PhpBlazor\Tag
|
|||
parent::__construct("div");
|
||||
$this->gameSettings = $settings;
|
||||
|
||||
$this["attributes"]["class"]->add("asteroids-app");
|
||||
$this["attributes"]["style"]["height"] = $this->gameSettings["height"] . "px";
|
||||
$this["attributes"]["style"]["width"] = $this->gameSettings["width"] . "px";
|
||||
$this["attributes"]["tabindex"] = 0;
|
||||
|
||||
$this["attributes"]->addEvent("onkeydown", function($seq, $builder) {$builder->AddEventKeyboardCallback($seq, "onkeydown", function($e) {$this->HandleKeyDown($e);});});
|
||||
$this["attributes"]->addEvent("onkeyup", function($seq, $builder) {$builder->AddEventKeyboardCallback($seq, "onkeyup", function($e) {$this->HandleKeyUp();});});
|
||||
$this->attributes["class"]->add("asteroids-app");
|
||||
$this->attributes["style"]["height"] = $this->gameSettings["height"] . "px";
|
||||
$this->attributes["style"]["width"] = $this->gameSettings["width"] . "px";
|
||||
$this->attributes["tabindex"] = 0;
|
||||
|
||||
$this->attributes->addEvent("onkeydown", function($seq, $builder) {$builder->AddEventKeyboardCallback($seq, "onkeydown", function($e) {$this->HandleKeyDown($e);});});
|
||||
$this->attributes->addEvent("onkeyup", function($seq, $builder) {$builder->AddEventKeyboardCallback($seq, "onkeyup", function($e) {$this->HandleKeyUp();});});
|
||||
|
||||
$this->addButtons();
|
||||
$this->initGame();
|
||||
|
@ -201,41 +201,41 @@ class Application extends \PhpBlazor\Tag
|
|||
public function addButtons() : void
|
||||
{
|
||||
$button= new \PhpBlazor\Tag("button");
|
||||
$button["attributes"]["style"]["position"] = "absolute";
|
||||
$button["attributes"]["style"]["top"] = "700px";
|
||||
$button["attributes"]["style"]["left"] = "0px";
|
||||
$button->attributes["style"]["position"] = "absolute";
|
||||
$button->attributes["style"]["top"] = "700px";
|
||||
$button->attributes["style"]["left"] = "0px";
|
||||
|
||||
$button->attributes->addEvent("onmousedown", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmousedown", function($e) {$this->HandleMouseDownMoveRight();});});
|
||||
$button->attributes->addEvent("onmouseup", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmouseup", function($e) {$this->HandleMouseUp();});});
|
||||
|
||||
$button->content[] = new \PhpBlazor\Text("Move Right");
|
||||
|
||||
$button["attributes"]->addEvent("onmousedown", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmousedown", function($e) {$this->HandleMouseDownMoveRight();});});
|
||||
$button["attributes"]->addEvent("onmouseup", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmouseup", function($e) {$this->HandleMouseUp();});});
|
||||
|
||||
$button["content"][] = new \PhpBlazor\Text("Move Right");
|
||||
|
||||
$this["content"][] = $button;
|
||||
$this->content[] = $button;
|
||||
unset($button);
|
||||
|
||||
$button= new \PhpBlazor\Tag("button");
|
||||
$button["attributes"]["style"]["position"] = "absolute";
|
||||
$button["attributes"]["style"]["top"] = "700px";
|
||||
$button["attributes"]["style"]["left"] = "100px";
|
||||
$button->attributes["style"]["position"] = "absolute";
|
||||
$button->attributes["style"]["top"] = "700px";
|
||||
$button->attributes["style"]["left"] = "100px";
|
||||
|
||||
$button["attributes"]->addEvent("onclick", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onclick", function($e) {$this->HandleFire();});});
|
||||
$button->attributes->addEvent("onclick", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onclick", function($e) {$this->HandleFire();});});
|
||||
|
||||
$button["content"][] = new \PhpBlazor\Text("Fire");
|
||||
$button->content[] = new \PhpBlazor\Text("Fire");
|
||||
|
||||
$this["content"][] = $button;
|
||||
$this->content[] = $button;
|
||||
unset($button);
|
||||
|
||||
$button= new \PhpBlazor\Tag("button");
|
||||
$button["attributes"]["style"]["position"] = "absolute";
|
||||
$button["attributes"]["style"]["top"] = "700px";
|
||||
$button["attributes"]["style"]["left"] = "200px";
|
||||
|
||||
$button["attributes"]->addEvent("onmousedown", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmousedown", function($e) {$this->HandleMouseDownMoveLeft();});});
|
||||
$button["attributes"]->addEvent("onmouseup", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmouseup", function($e) {$this->HandleMouseUp();});});
|
||||
|
||||
$button["content"][] = new \PhpBlazor\Text("Move Left");
|
||||
$button->attributes["style"]["position"] = "absolute";
|
||||
$button->attributes["style"]["top"] = "700px";
|
||||
$button->attributes["style"]["left"] = "200px";
|
||||
|
||||
$button->attributes->addEvent("onmousedown", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmousedown", function($e) {$this->HandleMouseDownMoveLeft();});});
|
||||
$button->attributes->addEvent("onmouseup", function($seq, $builder) {$builder->AddEventMouseCallback($seq, "onmouseup", function($e) {$this->HandleMouseUp();});});
|
||||
|
||||
$button->content[] = new \PhpBlazor\Text("Move Left");
|
||||
|
||||
$this["content"][] = $button;
|
||||
$this->content[] = $button;
|
||||
unset($button);
|
||||
}
|
||||
|
||||
|
@ -244,11 +244,11 @@ class Application extends \PhpBlazor\Tag
|
|||
$this->bullets = array();
|
||||
$this->asteroids = array();
|
||||
$this->background = Background::createDefault();
|
||||
$this["content"][] = &$this->background;
|
||||
$this->content[] = &$this->background;
|
||||
|
||||
// 40 is a default height of rocket
|
||||
$this->rocket = Rocket::createDefault(["x" => 0, "y" => $this->gameSettings["height"] - 140 ]);
|
||||
$this["content"][] = &$this->rocket;
|
||||
$this->content[] = &$this->rocket;
|
||||
|
||||
$this->time = 0;
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ class Application extends \PhpBlazor\Tag
|
|||
{
|
||||
$builder->OpenElement($startIndex++, $this->name);
|
||||
|
||||
$startIndex = $this["attributes"]->writeWithTreeBuilder($builder, $startIndex);
|
||||
$startIndex = $this->attributes->writeWithTreeBuilder($builder, $startIndex);
|
||||
|
||||
$startIndex = $this->rocket->writeWithTreeBuilder($builder, $startIndex);
|
||||
$startIndex = $this->background->writeWithTreeBuilder($builder, $startIndex);
|
||||
|
|
|
@ -45,9 +45,9 @@ namespace PhpBlazor
|
|||
[PhpType]
|
||||
public class Tag : iBlazorWritable
|
||||
{
|
||||
protected string name;
|
||||
protected AttributeCollection attributes;
|
||||
protected List<iBlazorWritable> content;
|
||||
public string name;
|
||||
public AttributeCollection attributes;
|
||||
public List<iBlazorWritable> content;
|
||||
|
||||
public Tag():this("div")
|
||||
{ }
|
||||
|
@ -64,24 +64,6 @@ namespace PhpBlazor
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
public PhpAlias this[string index]
|
||||
{
|
||||
get
|
||||
{
|
||||
switch (index)
|
||||
{
|
||||
case "content":
|
||||
return PhpValue.FromClass(content).AsPhpAlias();
|
||||
case "attributes":
|
||||
return PhpValue.FromClass(attributes).AsPhpAlias();
|
||||
case "name":
|
||||
return new PhpAlias(name);
|
||||
default:
|
||||
throw new ArgumentException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region iBlazorWritable
|
||||
public int writeWithTreeBuilder(Context ctx, RenderTreeBuilder builder, int startIndex)
|
||||
{
|
||||
|
|
|
@ -10,88 +10,88 @@ namespace PhpBlazor
|
|||
[PhpType]
|
||||
public class RenderTreeBuilder
|
||||
{
|
||||
private Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder _builder;
|
||||
PhpComponent _component;
|
||||
public Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder Builder;
|
||||
public PhpComponent Component;
|
||||
|
||||
public RenderTreeBuilder(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder builder, PhpComponent component)
|
||||
{
|
||||
this._builder = builder;
|
||||
this._component = component;
|
||||
this.Builder = builder;
|
||||
this.Component = component;
|
||||
}
|
||||
|
||||
public void OpenElement(int sequence, string elementName) => _builder.OpenElement(sequence, elementName);
|
||||
public void CloseElement() => _builder.CloseElement();
|
||||
public void OpenElement(int sequence, string elementName) => Builder.OpenElement(sequence, elementName);
|
||||
public void CloseElement() => Builder.CloseElement();
|
||||
|
||||
public void AddAttribute(int sequence, string name, string? value) => _builder.AddAttribute(sequence, name, value);
|
||||
public void AddAttribute(int sequence, string name, string? value) => Builder.AddAttribute(sequence, name, value);
|
||||
|
||||
public void AddContent(int sequence, string textContent) => Builder.AddContent(sequence, textContent);
|
||||
|
||||
public void AddMarkupContent(int sequence, string textContent) => Builder.AddMarkupContent(sequence, textContent);
|
||||
|
||||
public void AddContent(int sequence, string textContent) => _builder.AddContent(sequence, textContent);
|
||||
|
||||
//TODO: Implement reminding function from RenderTreeBuilder...
|
||||
|
||||
#region events
|
||||
public void AddEventCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create(_component, new Action(() => value.Invoke(ctx))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create(Component, new Action(() => value.Invoke(ctx))));
|
||||
}
|
||||
|
||||
public void AddEventClipboardCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ClipboardEventArgs>(_component, new Action<ClipboardEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ClipboardEventArgs>(Component, new Action<ClipboardEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventDragCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<DragEventArgs>(_component, new Action<DragEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<DragEventArgs>(Component, new Action<DragEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventErrorCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ErrorEventArgs>(_component, new Action<ErrorEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ErrorEventArgs>(Component, new Action<ErrorEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventEventCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<EventArgs>(_component, new Action<EventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<EventArgs>(Component, new Action<EventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventFocusCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<FocusEventArgs>(_component, new Action<FocusEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<FocusEventArgs>(Component, new Action<FocusEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventChangeCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ChangeEventArgs>(_component, new Action<ChangeEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ChangeEventArgs>(Component, new Action<ChangeEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventKeyboardCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<KeyboardEventArgs>(_component, new Action<KeyboardEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<KeyboardEventArgs>(Component, new Action<KeyboardEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventMouseCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<MouseEventArgs>(_component, new Action<MouseEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<MouseEventArgs>(Component, new Action<MouseEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventPointerCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<PointerEventArgs>(_component, new Action<PointerEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<PointerEventArgs>(Component, new Action<PointerEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventWheelCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<WheelEventArgs>(_component, new Action<WheelEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<WheelEventArgs>(Component, new Action<WheelEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventProgressCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ProgressEventArgs>(_component, new Action<ProgressEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<ProgressEventArgs>(Component, new Action<ProgressEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
|
||||
public void AddEventTouchCallback(Context ctx, int sequence, string name, IPhpCallable value)
|
||||
{
|
||||
_builder.AddAttribute(sequence, name, EventCallback.Factory.Create<TouchEventArgs>(_component, new Action<TouchEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
Builder.AddAttribute(sequence, name, EventCallback.Factory.Create<TouchEventArgs>(Component, new Action<TouchEventArgs>((e) => value.Invoke(ctx, PhpValue.FromClass(e)))));
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче