Commit 87225b41 authored by 李维's avatar 李维

dev cimmit

parent 009042e8
...@@ -135,6 +135,7 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -135,6 +135,7 @@ export class PlayComponent implements OnInit, OnDestroy {
// ------------ 游戏逻辑数据 ------------ // ------------ 游戏逻辑数据 ------------
m_startGame = false; m_startGame = false;
m_allDrums = []
// ------------------------------------ // ------------------------------------
...@@ -214,6 +215,7 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -214,6 +215,7 @@ export class PlayComponent implements OnInit, OnDestroy {
cleanGameVar(){ cleanGameVar(){
this.m_startGame = false; this.m_startGame = false;
this.m_allDrums = []
} }
startGame(){ startGame(){
...@@ -226,9 +228,10 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -226,9 +228,10 @@ export class PlayComponent implements OnInit, OnDestroy {
} }
endGame(){ endGame(){
this.g_enableMapDown = false;
this.curtainContral(false, ()=>{ this.curtainContral(false, ()=>{
this.g_cartoon.getCartoonElement("restart-button").in() this.g_cartoon.getCartoonElement("restart-button").in()
this.g_cartoon.getCartoonElement("boy").endReadyAni() this.g_cartoon.getCartoonElement("boy").reset()
this.g_enableMapDown = true; this.g_enableMapDown = true;
}) })
} }
...@@ -275,16 +278,34 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -275,16 +278,34 @@ export class PlayComponent implements OnInit, OnDestroy {
} }
initBoy(){ initBoy(){
let standPos = [
[
{x: this.g_canvasWidth / 2, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale}
],
[
{x: this.g_canvasWidth / 2 + 317 * this.g_mapScale / 2, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale}
],
[
{x: this.g_canvasWidth / 2, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale}
],
[
{x: this.g_canvasWidth / 2 + 317 * this.g_mapScale / 2, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale},
{x: this.g_canvasWidth / 2 - 317 * this.g_mapScale / 2, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale}
],
[
{x: this.g_canvasWidth / 2, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale},
{x: this.g_canvasWidth / 2 - 317 * this.g_mapScale, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale},
{x: this.g_canvasWidth / 2 + 317 * this.g_mapScale, y: this.g_canvasHeight / 2 + 45 * this.g_mapScale}
]
]
let element = this.g_cartoon.createCartoonElementImageFunc("boy", "boy_1", (w ,h)=>{ let element = this.g_cartoon.createCartoonElementImageFunc("boy", "boy_1", (w ,h)=>{
return { return {
sx: 550 * this.g_mapScale / w, sx: 550 * this.g_mapScale / w,
sy: 800 * this.g_mapScale / h sy: 800 * this.g_mapScale / h
} }
}, (w, h)=>{ }, (w, h)=>{
return { return standPos[this.g_formData.dataArray.length][0]
x: this.g_canvasWidth / 2,
y: this.g_canvasHeight / 2 + 45 * this.g_mapScale
}
}) })
this.render(element.ref, zIndexMap.boy) this.render(element.ref, zIndexMap.boy)
element.ref.visible = true element.ref.visible = true
...@@ -345,40 +366,156 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -345,40 +366,156 @@ export class PlayComponent implements OnInit, OnDestroy {
this.render(element.rightHand.ref, zIndexMap.hand) this.render(element.rightHand.ref, zIndexMap.hand)
element.rightHand.ref.visible = false element.rightHand.ref.visible = false
if(this.g_formData.dataArray.length == 4){
element.leftHandIndex = 1
element.rightHandIndex = 2
}else if(this.g_formData.dataArray.length == 3){
element.leftHandIndex = 0.5
element.rightHandIndex = 1.5
}else if(this.g_formData.dataArray.length == 2){
element.leftHandIndex = 0
element.rightHandIndex = 1
}else if(this.g_formData.dataArray.length == 1){
element.leftHandIndex = -1
element.rightHandIndex = 0.5
}else{
element.leftHandIndex = -1
element.rightHandIndex = -1
}
element.currentPosition = 0
element.firstClick = true; element.firstClick = true;
element.currentSide = ""
element.updateHandPos = () => {
element.leftHand.ref.x = element.ref.x - 160 * this.g_mapScale
element.rightHand.ref.x= element.ref.x + 160 * this.g_mapScale
}
// 敲打动画 // 敲打动画
element.beat = (side, callback?) =>{ element.beat = (index, callback?) =>{
element.currentSide = ""
if(this.g_formData.dataArray.length == 4){
if(element.currentPosition == 0){
if(index == 0){
element.ref.x = standPos[this.g_formData.dataArray.length][1].x
element.currentPosition = 1;
element.currentSide = "left"
}else if(index == 1){
element.currentSide = "left"
}else if(index == 2){
element.currentSide = "right"
}else{
element.ref.x = standPos[this.g_formData.dataArray.length][2].x
element.currentPosition = 2;
element.currentSide = "right"
}
}else if(element.currentPosition == 1){
if(index == 0){
element.currentSide = "left"
}else if(index == 1){
element.currentSide = "right"
}else if(index == 2){
element.ref.x = standPos[this.g_formData.dataArray.length][0].x
element.currentPosition = 0;
element.currentSide = "right"
}else{
element.ref.x = standPos[this.g_formData.dataArray.length][2].x
element.currentPosition = 2;
element.currentSide = "right"
}
}else{
if(index == 0){
element.ref.x = standPos[this.g_formData.dataArray.length][1].x
element.currentPosition = 1;
element.currentSide = "left"
}else if(index == 1){
element.ref.x = standPos[this.g_formData.dataArray.length][0].x
element.currentPosition = 0;
element.currentSide = "left"
}else if(index == 2){
element.currentSide = "left"
}else{
element.currentSide = "right"
}
}
} else if(this.g_formData.dataArray.length == 3){
if(element.currentPosition == 0){
if(index == 0){
element.ref.x = standPos[this.g_formData.dataArray.length][1].x
element.currentPosition = 1;
element.currentSide = "left"
}else if(index == 1){
element.currentSide = "left"
}else {
element.currentSide = "right"
}
}else if(element.currentPosition == 1){
if(index == 0){
element.currentSide = "left"
}else if(index == 1){
element.currentSide = "right"
}else {
element.ref.x = standPos[this.g_formData.dataArray.length][0].x
element.currentPosition = 0;
element.currentSide = "right"
}
}else{
if(index == 0){
element.ref.x = standPos[this.g_formData.dataArray.length][1].x
element.currentPosition = 1;
element.currentSide = "left"
}else if(index == 1){
element.ref.x = standPos[this.g_formData.dataArray.length][0].x
element.currentPosition = 0;
element.currentSide = "left"
}else {
element.currentSide = "left"
}
}
} else if(this.g_formData.dataArray.length == 2){
if(index == 0){
element.currentSide = "left"
}else{
element.currentSide = "right"
}
}else if(this.g_formData.dataArray.length == 1){
element.currentSide = "left"
}else{
element.currentSide = "left"
}
element.updateHandPos();
element.currentSide = element.currentSide? element.currentSide: "left"
if(element.firstClick){ if(element.firstClick){
element.endReadyAni() element.endReadyAni()
element.leftHand.ref.visible = true element.leftHand.ref.visible = true
element.rightHand.ref.visible = true element.rightHand.ref.visible = true
element.firstClick = false; element.firstClick = false;
} }
element.beatAnimate = this.g_cartoon.createAnimation(`beat_${side}`, 30, 1000, ()=>{ element.beatAnimate = this.g_cartoon.createAnimation(`beat_${element.currentSide}`, 30, 1000, ()=>{
callback && callback() callback && callback()
}) })
if(side=="left"){ if(element.currentSide=="left"){
element.beatAnimate.x = element.leftHand.ref.x element.beatAnimate.x = element.leftHand.ref.x
element.beatAnimate.y = element.leftHand.ref.y element.beatAnimate.y = element.leftHand.ref.y
}else{ }else{
element.beatAnimate.x = element.rightHand.ref.x element.beatAnimate.x = element.rightHand.ref.x
element.beatAnimate.y = element.rightHand.ref.y element.beatAnimate.y = element.rightHand.ref.y
} }
if(side == "left"){ if(element.currentSide == "left"){
element.leftHand.ref.visible = false element.leftHand.ref.visible = false
}else{ }else{
element.rightHand.ref.visible = false element.rightHand.ref.visible = false
} }
// element.beatAnimate.setScaleXY(this.g_mapScale * 1.2)
this.render(element.beatAnimate, zIndexMap.animation) this.render(element.beatAnimate, zIndexMap.animation)
element.beatAnimate.play() element.beatAnimate.play()
} }
element.beatReset = (side, callback) => { element.beatReset = (callback) => {
element.beatAnimate.visible = false; element.beatAnimate.visible = false;
this.deleteElementInRender(element.beatAnimate.id) this.deleteElementInRender(element.beatAnimate.id)
if(side == "left"){ if(element.currentSide == "left"){
element.leftHand.ref.visible = true element.leftHand.ref.visible = true
}else{ }else{
element.rightHand.ref.visible = true element.rightHand.ref.visible = true
...@@ -386,6 +523,12 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -386,6 +523,12 @@ export class PlayComponent implements OnInit, OnDestroy {
callback && callback() callback && callback()
} }
element.reset = () => {
element.endReadyAni()
element.leftHand.ref.visible = false
element.rightHand.ref.visible = false
}
} }
initCurtain(){ initCurtain(){
...@@ -585,6 +728,7 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -585,6 +728,7 @@ export class PlayComponent implements OnInit, OnDestroy {
this.g_formData.dataArray.forEach((item, index) => { this.g_formData.dataArray.forEach((item, index) => {
let element = this.createDrum(index, item, baseX[totalDrumNum]) let element = this.createDrum(index, item, baseX[totalDrumNum])
this.m_allDrums.push(element.id)
this.render(element.ref, zIndexMap.drum) this.render(element.ref, zIndexMap.drum)
}); });
...@@ -615,20 +759,28 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -615,20 +759,28 @@ export class PlayComponent implements OnInit, OnDestroy {
y: 0 y: 0
} }
}) })
element.ref.addChild(element.light.ref) element.ref.addChild(element.light.ref)
element.light.ref.visible = false; element.light.ref.visible = false;
if(index<=1){
element.handSide = "left"
}else{
element.handSide = "right"
}
element.highlight = () => { element.highlight = () => {
this.m_setTimeoutIDs.push(setTimeout(() => { this.m_setTimeoutIDs.push(setTimeout(() => {
this.g_cartoon.getCartoonElement("boy").beatReset("left") this.g_cartoon.getCartoonElement("boy").beatReset()
tweenChange(element.ref, {scaleX: element.initScaleX, scaleY: element.initScaleY}, 0.2, ()=>{ tweenChange(element.ref, {scaleX: element.initScaleX, scaleY: element.initScaleY}, 0.2, ()=>{
element.light.ref.visible = false; element.light.ref.visible = false;
this.setRenderZIndex(element.ref, zIndexMap.drum) this.setRenderZIndex(element.ref, zIndexMap.drum)
this.checkAllOpen()
this.g_enableMapDown = true; this.g_enableMapDown = true;
}) })
}, 2000)) }, 2000))
} }
element.isOpen = false;
this.subscribeMapDownEvent(element.id, ()=>{ this.subscribeMapDownEvent(element.id, ()=>{
if(!this.m_startGame){ if(!this.m_startGame){
this.g_enableMapDown = true; this.g_enableMapDown = true;
...@@ -637,7 +789,8 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -637,7 +789,8 @@ export class PlayComponent implements OnInit, OnDestroy {
this.setRenderZIndex(element.ref, zIndexMap.drum + 1) this.setRenderZIndex(element.ref, zIndexMap.drum + 1)
tweenChange(element.ref, {scaleX: element.initScaleX * 1.2, scaleY: element.initScaleY * 1.2}, 0.2, ()=>{ tweenChange(element.ref, {scaleX: element.initScaleX * 1.2, scaleY: element.initScaleY * 1.2}, 0.2, ()=>{
element.light.ref.visible = true; element.light.ref.visible = true;
this.g_cartoon.getCartoonElement("boy").beat("left", ()=>{ element.isOpen = true;
this.g_cartoon.getCartoonElement("boy").beat(index, ()=>{
element.highlight() element.highlight()
}) })
}) })
...@@ -647,6 +800,17 @@ export class PlayComponent implements OnInit, OnDestroy { ...@@ -647,6 +800,17 @@ export class PlayComponent implements OnInit, OnDestroy {
return element return element
} }
checkAllOpen(){
let endGame = true
for(let index = 0; index<this.m_allDrums.length; index++){
if(!this.g_cartoon.getCartoonElement(this.m_allDrums[index]).isOpen){
endGame = false;
}
}
if(endGame){
this.endGame()
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment