2022-11-19 20:58:07 +08:00
const BaseCharacter = require ( "./BaseCharacter" );
window . ATK_CHARACTER_STATE = {
Idle1 : [ 0 , "Idle1" ],
Walking : [ 1 , "Walking" ],
Atk1 : [ 2 , "Atk1" ],
2022-11-23 12:30:30 +08:00
Atked1 : [ 3 , "Atked1" ],
2022-11-19 20:58:07 +08:00
};
2022-11-20 21:07:45 +08:00
window . ATK_CHARACTER_STATE_ARR = [];
for ( let k in window . ATK_CHARACTER_STATE ) {
window . ATK_CHARACTER_STATE_ARR . push ( window . ATK_CHARACTER_STATE [ k ]);
}
2022-11-19 20:58:07 +08:00
cc . Class ({
extends : BaseCharacter ,
properties : {
animNode : {
type : cc . Node ,
default : null
},
},
ctor () {
2022-11-20 18:53:33 +08:00
this . speciesName = null ;
2022-11-22 17:12:51 +08:00
this . hp = 100 ;
this . maxHp = 100 ;
this . framesToRecover = 0 ;
2022-11-20 18:53:33 +08:00
},
setSpecies ( speciesName ) {
this . speciesName = speciesName ;
this . effAnimNode = this . animNode . getChildByName ( this . speciesName );
this . animComp = this . effAnimNode . getComponent ( dragonBones . ArmatureDisplay );
this . animComp . playAnimation ( ATK_CHARACTER_STATE . Idle1 [ 1 ]);
this . effAnimNode . active = true ;
2022-11-19 20:58:07 +08:00
},
onLoad () {
BaseCharacter . prototype . onLoad . call ( this );
},
2022-11-25 11:20:05 +08:00
updateCharacterAnim ( rdfPlayer , prevRdfPlayer , forceAnimSwitch ) {
// Update directions
if ( this . animComp && this . animComp . node ) {
if ( 0 > rdfPlayer . dirX ) {
this . animComp . node . scaleX = ( - 1.0 );
} else if ( 0 < rdfPlayer . dirX ) {
this . animComp . node . scaleX = ( 1.0 );
2022-11-20 21:07:45 +08:00
}
2022-11-19 20:58:07 +08:00
}
2022-11-23 15:04:32 +08:00
// Update per character state
let newCharacterState = rdfPlayer . characterState ;
2022-11-25 11:20:05 +08:00
let prevCharacterState = ( null == prevRdfPlayer ? window . ATK_CHARACTER_STATE . Idle1 [ 0 ] : prevRdfPlayer . characterState );
if ( newCharacterState != prevCharacterState ) {
// Anim is edge-triggered
const newAnimName = window . ATK_CHARACTER_STATE_ARR [ newCharacterState ][ 1 ];
if ( newAnimName != this . animComp . animationName ) {
this . animComp . playAnimation ( newAnimName );
console . log ( `JoinIndex= ${ rdfPlayer . joinIndex } , Resetting anim to ${ newAnimName } , state changed: ( ${ prevCharacterState } , prevRdfPlayer is null? ${ null == prevRdfPlayer } ) -> ( ${ newCharacterState } )` );
}
2022-11-23 15:04:32 +08:00
}
2022-11-19 20:58:07 +08:00
},
});