added rounded buttons
This commit is contained in:
		
							parent
							
								
									606232d1d1
								
							
						
					
					
						commit
						851fd050a7
					
				| 
						 | 
					@ -12,6 +12,8 @@ export default class UIElement extends CanvasNode{
 | 
				
			||||||
	fontSize: number;
 | 
						fontSize: number;
 | 
				
			||||||
	hAlign: string;
 | 
						hAlign: string;
 | 
				
			||||||
	vAlign: string;
 | 
						vAlign: string;
 | 
				
			||||||
 | 
						borderRadius: number;
 | 
				
			||||||
 | 
						borderWidth: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// EventAttributes
 | 
						// EventAttributes
 | 
				
			||||||
	onClick: Function;
 | 
						onClick: Function;
 | 
				
			||||||
| 
						 | 
					@ -36,6 +38,8 @@ export default class UIElement extends CanvasNode{
 | 
				
			||||||
		this.fontSize = 30;
 | 
							this.fontSize = 30;
 | 
				
			||||||
		this.hAlign = "center";
 | 
							this.hAlign = "center";
 | 
				
			||||||
		this.vAlign = "center";
 | 
							this.vAlign = "center";
 | 
				
			||||||
 | 
							this.borderRadius = 5;
 | 
				
			||||||
 | 
							this.borderWidth = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		this.onClick = null;
 | 
							this.onClick = null;
 | 
				
			||||||
		this.onClickEventId = null;
 | 
							this.onClickEventId = null;
 | 
				
			||||||
| 
						 | 
					@ -143,6 +147,10 @@ export default class UIElement extends CanvasNode{
 | 
				
			||||||
		return this.backgroundColor.toStringRGBA();
 | 
							return this.backgroundColor.toStringRGBA();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						protected calculateBorderColor(): string {
 | 
				
			||||||
 | 
							return this.borderColor.toStringRGBA();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected calculateTextColor(): string {
 | 
						protected calculateTextColor(): string {
 | 
				
			||||||
		return this.textColor.toStringRGBA();
 | 
							return this.textColor.toStringRGBA();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -152,7 +160,11 @@ export default class UIElement extends CanvasNode{
 | 
				
			||||||
		let offset = this.calculateOffset(ctx);
 | 
							let offset = this.calculateOffset(ctx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ctx.fillStyle = this.calculateBackgroundColor();
 | 
							ctx.fillStyle = this.calculateBackgroundColor();
 | 
				
			||||||
		ctx.fillRect(this.position.x - origin.x, this.position.y - origin.y, this.size.x, this.size.y);
 | 
							ctx.fillRoundedRect(this.position.x - origin.x, this.position.y - origin.y, this.size.x, this.size.y, this.borderRadius);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							ctx.strokeStyle = this.calculateBorderColor();
 | 
				
			||||||
 | 
							ctx.lineWidth = this.borderWidth;
 | 
				
			||||||
 | 
							ctx.strokeRoundedRect(this.position.x - origin.x, this.position.y - origin.y, this.size.x, this.size.y, this.borderRadius);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ctx.fillStyle = this.calculateTextColor();
 | 
							ctx.fillStyle = this.calculateTextColor();
 | 
				
			||||||
		ctx.fillText(this.text, this.position.x + offset.x - origin.x, this.position.y + offset.y - origin.y);
 | 
							ctx.fillText(this.text, this.position.x + offset.x - origin.x, this.position.y + offset.y - origin.y);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								src/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/index.d.ts
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					export {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare global {
 | 
				
			||||||
 | 
						interface CanvasRenderingContext2D {
 | 
				
			||||||
 | 
							roundedRect(x: number, y: number, w: number, h: number, r: number): void
 | 
				
			||||||
 | 
							strokeRoundedRect(x: number, y: number, w: number, h: number, r: number): void
 | 
				
			||||||
 | 
							fillRoundedRect(x: number, y: number, w: number, h: number, r: number): void
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								src/main.ts
									
									
									
									
									
								
							| 
						 | 
					@ -5,6 +5,7 @@ import UIElement from "./Nodes/UIElement";
 | 
				
			||||||
import ColoredCircle from "./Nodes/ColoredCircle";
 | 
					import ColoredCircle from "./Nodes/ColoredCircle";
 | 
				
			||||||
import Color from "./Utils/Color";
 | 
					import Color from "./Utils/Color";
 | 
				
			||||||
import Button from "./Nodes/UIElements/Button";
 | 
					import Button from "./Nodes/UIElements/Button";
 | 
				
			||||||
 | 
					import {} from "./index";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function main(){
 | 
					function main(){
 | 
				
			||||||
    // Create the game object
 | 
					    // Create the game object
 | 
				
			||||||
| 
						 | 
					@ -100,4 +101,42 @@ function main(){
 | 
				
			||||||
    game.start();
 | 
					    game.start();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CanvasRenderingContext2D.prototype.roundedRect = function(x: number, y: number, w: number, h: number, r: number): void {
 | 
				
			||||||
 | 
					    // Clamp the radius between 0 and the min of the width or height
 | 
				
			||||||
 | 
					    if(r < 0) r = 0;
 | 
				
			||||||
 | 
					    if(r > Math.min(w, h)) r = Math.min(w, h);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Draw the rounded rect
 | 
				
			||||||
 | 
					    this.beginPath();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Top
 | 
				
			||||||
 | 
					    this.moveTo(x + r, y);
 | 
				
			||||||
 | 
					    this.lineTo(x + w - r, y);
 | 
				
			||||||
 | 
					    this.arcTo(x + w, y, x + w, y + r, r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Right
 | 
				
			||||||
 | 
					    this.lineTo(x + w, y + h - r);
 | 
				
			||||||
 | 
					    this.arcTo(x + w, y + h, x + w - r, y + h, r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Bottom
 | 
				
			||||||
 | 
					    this.lineTo(x + r, y + h);
 | 
				
			||||||
 | 
					    this.arcTo(x, y + h, x, y + h - r, r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Left
 | 
				
			||||||
 | 
					    this.lineTo(x, y + r);
 | 
				
			||||||
 | 
					    this.arcTo(x, y, x + r, y, r)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.closePath();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CanvasRenderingContext2D.prototype.strokeRoundedRect = function(x, y, w, h, r){
 | 
				
			||||||
 | 
					    this.roundedRect(x, y, w, h, r);
 | 
				
			||||||
 | 
					    this.stroke();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CanvasRenderingContext2D.prototype.fillRoundedRect = function(x, y, w, h, r){
 | 
				
			||||||
 | 
					    this.roundedRect(x, y, w, h, r);
 | 
				
			||||||
 | 
					    this.fill();
 | 
				
			||||||
 | 
					}  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
main();
 | 
					main();
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user