UNPKG

jsgam

Version:

JavaScript Graphic Adventure Maker

88 lines (69 loc) 1.96 kB
import { gsap } from "gsap"; class Credits{ constructor(){ this.container=new PIXI.Container(); this.container.visible=false; this.container.interactive=true; this.container.buttonMode=true; } create(){ let config=this.game.data.credits; if(config.Background!==undefined){ this.background=new PIXI.Sprite(PIXI.Texture.from(config.Background)); this.container.addChild(this.background); } this.buildText(); this.speed=null; if(this.game.data.credits.Time!==undefined){ this.speed=this.game.data.credits.Time; }else{ this.speed=20; } this.structuredText = new PIXI.BitmapText(this.text,this.game.settings.Text.Credits); this.structuredText.anchor.set(0.5,0); this.tween=null; this.container.addChild(this.structuredText); this.adjust(); this.container.on('pointerup', this.mainMenu.bind(this)); } show(){ this.container.visible=true; this.animate(); } animate(){ gsap.set(this.structuredText,{y: this.game.height}); this.tween=gsap.to(this.structuredText, {duration:20, y: 0 - this.structuredText.height,onComplete:this.mainMenu.bind(this)}); } hide(){ this.container.visible=false; } buildText(){ let credits=this.game.data.credits; this.text=""; let i; for (i=0; i < credits.Lines.length; i++) { this.text += credits.Lines[i].Title[this.game.activeLanguage]; this.text += "\n"; let j; for (j = 0; j < credits.Lines[i].Text.length; j++) { this.text += credits.Lines[i].Text[j]; this.text += "\n"; } this.text += "\n"; } } adjust(){ this.structuredText.x = this.game.width / 2; this.structuredText.y=this.game.height; } changeLanguage(){ this.buildText(); this.structuredText.text=this.text; this.adjust(); } mainMenu(){ this.tween.kill(); this.game.scenes["Title"].mainMenu(); } } export default Credits;