reverted UIElementRenderer
This commit is contained in:
parent
928027f1f5
commit
f58333aaaa
|
@ -15,7 +15,7 @@ export default class UIElementRenderer {
|
|||
protected scene: Scene;
|
||||
protected ctx: CanvasRenderingContext2D;
|
||||
|
||||
constructor(ctx: CanvasRenderingContext2D){
|
||||
constructor(ctx: CanvasRenderingContext2D) {
|
||||
this.resourceManager = ResourceManager.getInstance();
|
||||
this.ctx = ctx;
|
||||
}
|
||||
|
@ -33,33 +33,81 @@ export default class UIElementRenderer {
|
|||
* @param label The label to render
|
||||
*/
|
||||
renderLabel(label: Label): void {
|
||||
// // If the size is unassigned (by the user or automatically) assign it
|
||||
// label.handleInitialSizing(this.ctx);
|
||||
|
||||
// // Grab the global alpha so we can adjust it for this render
|
||||
// let previousAlpha = this.ctx.globalAlpha;
|
||||
|
||||
// // Get the font and text position in label
|
||||
// this.ctx.font = label.getFontString();
|
||||
// let offset = label.calculateTextOffset(this.ctx);
|
||||
|
||||
// // Stroke and fill a rounded rect and give it text
|
||||
// this.ctx.globalAlpha = label.backgroundColor.a;
|
||||
// this.ctx.fillStyle = label.calculateBackgroundColor().toStringRGBA();
|
||||
// this.ctx.fillRoundedRect(-label.size.x/2, -label.size.y/2,
|
||||
// label.size.x, label.size.y, label.borderRadius);
|
||||
|
||||
// this.ctx.strokeStyle = label.calculateBorderColor().toStringRGBA();
|
||||
// this.ctx.globalAlpha = label.borderColor.a;
|
||||
// this.ctx.lineWidth = label.borderWidth;
|
||||
// this.ctx.strokeRoundedRect(-label.size.x/2, -label.size.y/2,
|
||||
// label.size.x, label.size.y, label.borderRadius);
|
||||
|
||||
// this.ctx.fillStyle = label.calculateTextColor();
|
||||
// this.ctx.globalAlpha = label.textColor.a;
|
||||
// this.ctx.fillText(label.text, offset.x - label.size.x/2, offset.y - label.size.y/2);
|
||||
|
||||
// this.ctx.globalAlpha = previousAlpha;
|
||||
// If the size is unassigned (by the user or automatically) assign it
|
||||
let lines = label.text.split('\n');
|
||||
let tempText = label.text;
|
||||
if (lines.length > 1) {
|
||||
let max = 0;
|
||||
let maxLengthIndex = 0;
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
if (lines[i].length > max) {
|
||||
max = lines[i].length;
|
||||
maxLengthIndex = i;
|
||||
}
|
||||
}
|
||||
label.text = lines[maxLengthIndex];
|
||||
}
|
||||
label.handleInitialSizing(this.ctx);
|
||||
|
||||
// Grab the global alpha so we can adjust it for this render
|
||||
let previousAlpha = this.ctx.globalAlpha;
|
||||
// Grab the global alpha so we can adjust it for this render
|
||||
let previousAlpha = this.ctx.globalAlpha;
|
||||
|
||||
// Get the font and text position in label
|
||||
this.ctx.font = label.getFontString();
|
||||
let offset = label.calculateTextOffset(this.ctx);
|
||||
this.ctx.font = label.getFontString();
|
||||
let offset = label.calculateTextOffset(this.ctx);
|
||||
|
||||
// Stroke and fill a rounded rect and give it text
|
||||
this.ctx.globalAlpha = label.backgroundColor.a;
|
||||
this.ctx.fillStyle = label.calculateBackgroundColor().toStringRGBA();
|
||||
this.ctx.fillRoundedRect(-label.size.x/2, -label.size.y/2,
|
||||
label.size.x, label.size.y, label.borderRadius);
|
||||
|
||||
this.ctx.strokeStyle = label.calculateBorderColor().toStringRGBA();
|
||||
this.ctx.globalAlpha = label.borderColor.a;
|
||||
this.ctx.lineWidth = label.borderWidth;
|
||||
this.ctx.strokeRoundedRect(-label.size.x/2, -label.size.y/2,
|
||||
label.size.x, label.size.y, label.borderRadius);
|
||||
// Stroke and fill a rounded rect and give it text
|
||||
this.ctx.globalAlpha = label.backgroundColor.a;
|
||||
this.ctx.fillStyle = label.calculateBackgroundColor().toStringRGBA();
|
||||
this.ctx.fillRoundedRect(-label.size.x / 2, -label.size.y / 2,
|
||||
label.size.x, label.size.y, label.borderRadius);
|
||||
|
||||
this.ctx.fillStyle = label.calculateTextColor();
|
||||
this.ctx.globalAlpha = label.textColor.a;
|
||||
this.ctx.fillText(label.text, offset.x - label.size.x/2, offset.y - label.size.y/2);
|
||||
|
||||
this.ctx.globalAlpha = previousAlpha;
|
||||
this.ctx.strokeStyle = label.calculateBorderColor().toStringRGBA();
|
||||
this.ctx.globalAlpha = label.borderColor.a;
|
||||
this.ctx.lineWidth = label.borderWidth;
|
||||
this.ctx.strokeRoundedRect(-label.size.x / 2, -label.size.y / 2,
|
||||
label.size.x, label.size.y + ((lines.length - 1) * label.fontSize), label.borderRadius);
|
||||
|
||||
this.ctx.fillStyle = label.calculateTextColor();
|
||||
this.ctx.globalAlpha = label.textColor.a;
|
||||
if (lines.length === 1) {
|
||||
this.ctx.fillText(label.text, offset.x - label.size.x / 2, (offset.y - label.size.y / 2));
|
||||
} else {
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
let additionalY = i * (label.size.y / 2 + (label.fontSize === 40 ? 20 : 10));
|
||||
label.text = lines[i];
|
||||
offset = label.calculateTextOffset(this.ctx);
|
||||
this.ctx.fillText(lines[i], (offset.x - label.size.x / 2), (offset.y - label.size.y / 2 + additionalY));
|
||||
}
|
||||
}
|
||||
this.ctx.globalAlpha = previousAlpha;
|
||||
label.text = tempText;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -75,24 +123,24 @@ export default class UIElementRenderer {
|
|||
* @param slider The slider to render
|
||||
*/
|
||||
renderSlider(slider: Slider): void {
|
||||
// Grab the global alpha so we can adjust it for this render
|
||||
let previousAlpha = this.ctx.globalAlpha;
|
||||
this.ctx.globalAlpha = slider.getLayer().getAlpha();
|
||||
// Grab the global alpha so we can adjust it for this render
|
||||
let previousAlpha = this.ctx.globalAlpha;
|
||||
this.ctx.globalAlpha = slider.getLayer().getAlpha();
|
||||
|
||||
// Calcualate the slider size
|
||||
let sliderSize = new Vec2(slider.size.x, 2);
|
||||
|
||||
// Draw the slider
|
||||
this.ctx.fillStyle = slider.sliderColor.toString();
|
||||
this.ctx.fillRoundedRect(-sliderSize.x/2, -sliderSize.y/2,
|
||||
this.ctx.fillStyle = slider.sliderColor.toString();
|
||||
this.ctx.fillRoundedRect(-sliderSize.x / 2, -sliderSize.y / 2,
|
||||
sliderSize.x, sliderSize.y, slider.borderRadius);
|
||||
|
||||
// Calculate the nib size and position
|
||||
let x = MathUtils.lerp(-slider.size.x/2, slider.size.x/2, slider.getValue());
|
||||
let x = MathUtils.lerp(-slider.size.x / 2, slider.size.x / 2, slider.getValue());
|
||||
|
||||
// Draw the nib
|
||||
this.ctx.fillStyle = slider.nibColor.toString();
|
||||
this.ctx.fillRoundedRect(x-slider.nibSize.x/2, -slider.nibSize.y/2,
|
||||
this.ctx.fillStyle = slider.nibColor.toString();
|
||||
this.ctx.fillRoundedRect(x - slider.nibSize.x / 2, -slider.nibSize.y / 2,
|
||||
slider.nibSize.x, slider.nibSize.y, slider.borderRadius);
|
||||
|
||||
// Reset the alpha
|
||||
|
@ -105,19 +153,19 @@ export default class UIElementRenderer {
|
|||
*/
|
||||
renderTextInput(textInput: TextInput): void {
|
||||
// Show a cursor sometimes
|
||||
if(textInput.focused && textInput.cursorCounter % 60 > 30){
|
||||
if (textInput.focused && textInput.cursorCounter % 60 > 30) {
|
||||
textInput.text += "|";
|
||||
}
|
||||
|
||||
this.renderLabel(textInput);
|
||||
|
||||
if(textInput.focused){
|
||||
if(textInput.cursorCounter % 60 > 30){
|
||||
if (textInput.focused) {
|
||||
if (textInput.cursorCounter % 60 > 30) {
|
||||
textInput.text = textInput.text.substring(0, textInput.text.length - 1);
|
||||
}
|
||||
|
||||
textInput.cursorCounter += 1;
|
||||
if(textInput.cursorCounter >= 60){
|
||||
if (textInput.cursorCounter >= 60) {
|
||||
textInput.cursorCounter = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -495,6 +495,9 @@ export default class GameLevel extends Scene {
|
|||
//enemy.position.set(tilePos.x*32, tilePos.y*32);
|
||||
enemy.position.copy(tilePos);
|
||||
enemy.scale.set(2, 2);
|
||||
//TODO - add custom collision shape for each enemy in an option variable
|
||||
//enemy.addPhysics(aiOptions.size.clone());
|
||||
|
||||
enemy.addPhysics(new AABB(Vec2.ZERO, new Vec2(16, 25)));
|
||||
enemy.colliderOffset.set(0, 6);
|
||||
enemy.addAI(EnemyAI, aiOptions); //TODO - add individual enemy AI
|
||||
|
@ -517,9 +520,11 @@ export default class GameLevel extends Scene {
|
|||
tilemap: "Main",
|
||||
//actions:actions,
|
||||
goal: Statuses.REACHED_GOAL,
|
||||
//TODO - test Add collision shape for each enemy type
|
||||
//size: new AABB(Vec2.ZERO, new Vec2(16, 25))
|
||||
})
|
||||
break;
|
||||
case "snake":
|
||||
case "snake": //snake enemies drop from sky("trees")? or could just be very abundant
|
||||
this.addEnemy("snake", enemy.position.scale(32), {
|
||||
player: this.player,
|
||||
health: 100,
|
||||
|
@ -528,7 +533,7 @@ export default class GameLevel extends Scene {
|
|||
goal: Statuses.REACHED_GOAL,
|
||||
})
|
||||
break;
|
||||
case "tiger":
|
||||
case "tiger": //tiger can be miniboss for now?
|
||||
this.addEnemy("tiger", enemy.position.scale(32), {
|
||||
player: this.player,
|
||||
health: 100,
|
||||
|
|
Loading…
Reference in New Issue
Block a user