// 执行技能受伤 public void execHurt(SkillHurtItem item) { Ctx.m_instance.m_logSys.fightLog("[Fight] 开始执行技能被击 execHurt"); LinkEffect effect = null; if (item.bDamage) // 检查是否是伤血 { effect = m_card.effectControl.addLinkEffect(HurtItemBase.DAMAGE_EFFECTID); // 掉血特效必然播放 effect.addEffectPlayEndHandle(item.onHurtExecEnd); // 播放伤害数字 if (item.svrCard.popDamValue > 0) { m_card.playFlyNum((int)-item.svrCard.popDamValue); } } else if ((int)item.svrCard.popHpValue > 0) // 回血 { //if (!item.bStateChange()) //{ m_card.playFlyNum((int)item.svrCard.popHpValue); item.onHurtExecEnd(null); // 直接结束当前技能被击 Item //} } else // 不伤血也不加血,直接结束 { item.onHurtExecEnd(null); // 直接结束当前技能被击 Item } m_card.sceneCardBaseData.m_effectControl.updateAttHurtStateEffect(item); // 更新自己的属性显示 m_card.updateCardDataChangeBySvr(item.svrCard); }
// 添加边框特效 protected void addFrameEffect() { if (m_frameEffect == null) { m_frameEffect = addLinkEffect(m_frameEffectId, false, true); } }
// 执行普通死亡 public void execHurt(DieItem item) { LinkEffect effect = null; effect = m_card.effectControl.addLinkEffect(item.dieEffectId); // 死亡特效 effect.addEffectPlayEndHandle(item.onHurtExecEnd); }
// 添加边框特效 protected void addFrameEffect() { if (m_effect == null) { m_effect = Ctx.m_instance.m_sceneEffectMgr.addLinkEffect(30, gameObject(), false, true) as LinkEffect; } }
// 每一个状态对应一个特效,这个特效是循环特效,每一次战斗都要更新状态,双方的场牌,英雄卡、技能卡 override public void updateAttHurtStateEffect(FightItemBase item) { LinkEffect effect = null; if (item.bStateChange()) // 每一个状态对应一个特效,需要播放特效 { int idx = 0; TableStateItemBody stateTabelItem = null; for (idx = 1; idx < (int)StateID.CARD_STATE_MAX; ++idx) { if (UtilMath.checkState((StateID)idx, item.changedState)) // 如果这个状态改变 { if (UtilMath.checkState((StateID)idx, item.curState)) // 如果是增加状态 { stateTabelItem = Ctx.m_instance.m_tableSys.getItem(TableID.TABLE_STATE, (uint)idx).m_itemBody as TableStateItemBody; if (stateTabelItem.m_effectId > 0) { effect = m_card.effectControl.startStateEffect((StateID)idx, stateTabelItem.m_effectId); } } else // 删除状态,停止特效 { m_card.effectControl.stopStateEffect((StateID)idx); } } } } }
public void showResult() { if (m_firstEffect == null) { m_firstEffect = Ctx.m_instance.m_sceneEffectMgr.addLinkEffect(m_firstEffectId, gameObject(), true, false) as LinkEffect; } m_firstEffect.addEffectPlayEndHandle(onFirstEffectPlayEndHandle); }
protected void testSpriteEffect() { m_linkEffect = Ctx.m_instance.m_sceneEffectMgr.createAndAdd(EffectType.eLinkEffect, EffectRenderType.eSpriteEffectRender) as LinkEffect; m_linkEffect.setGameObject(m_spriteGo); m_linkEffect.setTableID(1); m_linkEffect.setLoop(true); m_linkEffect.play(); }
protected void onFirstEffectPlayEndHandle(IDispatchObject dispObj) { UtilApi.addEventHandle(m_model.selfGo, OnBtnClk); m_firstEffect = null; if (m_sndEffect == null) { m_sndEffect = Ctx.m_instance.m_sceneEffectMgr.addLinkEffect(m_sndEffectId, gameObject(), false, true) as LinkEffect; } }
override public void dispose() { base.dispose(); if (m_effect != null) { m_effect.dispose(); m_effect = null; } }
// 添加连接特效,固定不动,连接特效在关联的实体释放的时候,需要释放资源 public LinkEffect addLinkEffect(int id, bool bAutoRemove = true, bool bLoop = false, bool bPlay = true) { addFrameSpriteGO(); LinkEffect effect = Ctx.m_instance.m_sceneEffectMgr.addLinkEffect(id, m_effectRootGO, bAutoRemove, bLoop, bPlay) as LinkEffect; m_linkEffectList.Add(effect); effect.addEffectPlayEndHandle(onLinkEffectPlayEnd); effect.linkedEntity = this.m_card; return(effect); }
public void playEffect() { if (m_effect == null) { m_effect = Ctx.m_instance.m_sceneEffectMgr.addLinkEffect(15, m_model.selfGo, false); m_effect.linkedEntity = this; } else { m_effect.play(); } }
override public void dispose() { if (m_firstEffect != null) { m_firstEffect.dispose(); m_firstEffect = null; } if (m_sndEffect != null) { m_sndEffect.dispose(); m_sndEffect = null; } }
// 添加技能准备特效,主要是法术卡,但是释放的时候基本都是英雄卡上 public void startSkillAttPrepareEffect(int effectId) { if (m_skillAttPrepareEffect == null) { m_skillAttPrepareEffect = addLinkEffect(effectId, false, true); } else { m_skillAttPrepareEffect.setTableID(effectId); if (m_skillAttPrepareEffect.bPlay()) { m_skillAttPrepareEffect.stop(); // 直接停止掉 } m_skillAttPrepareEffect.play(); } }
// 执行普通受伤 public void execHurt(ComHurtItem item) { Ctx.m_instance.m_logSys.fightLog("[Fight] 执行普通受伤 execHurt"); LinkEffect effect = null; if (item.bDamage) // 如果受伤 { if (item.hurtEffectId > 0) // 如果有特效需要播放,并且被击结束以特效为标准 { Ctx.m_instance.m_logSys.fightLog("[Fight] 执行普通播放受伤特效"); effect = m_card.effectControl.addLinkEffect(item.hurtEffectId); // 被击特效 m_card.effectControl.addLinkEffect(HurtItemBase.DAMAGE_EFFECTID); // 掉血特效必然播放 effect.addEffectPlayEndHandle(item.onHurtExecEnd); } // 播放伤害数字 m_card.playFlyNum(-item.damage); } else if (item.bAddHp) // 回血 { // 仅仅改变属性 //if (!item.bStateChange()) // 如果没有状态变化,直接结束,如果有,会释放特效结束 //{ m_card.playFlyNum(item.addHp); item.onHurtExecEnd(null); //} } else // 不伤血也不加血,直接结束 { item.onHurtExecEnd(null); } m_card.sceneCardBaseData.m_effectControl.updateAttHurtStateEffect(item); // 更新自己的属性显示 m_card.updateCardDataChangeBySvr(item.svrCard); }
// 每一次回合开始就更新牌的状态,双方的场牌,英雄卡、技能卡 override public void updateStateEffect() { LinkEffect effect = null; int idx = 0; TableStateItemBody stateTabelItem = null; for (idx = 1; idx < (int)StateID.CARD_STATE_MAX; ++idx) { if (UtilMath.checkState((StateID)idx, m_card.sceneCardItem.svrCard.state)) // 如果这个状态改变 { stateTabelItem = Ctx.m_instance.m_tableSys.getItem(TableID.TABLE_STATE, (uint)idx).m_itemBody as TableStateItemBody; if (stateTabelItem.m_effectId > 0) { effect = m_card.effectControl.startStateEffect((StateID)idx, stateTabelItem.m_effectId); } } else // 删除状态,停止特效 { m_card.effectControl.stopStateEffect((StateID)idx); } } }
override public void dispose() { base.dispose(); if (m_selfTex != null) { Ctx.m_instance.m_texMgr.unload(m_selfTex.GetPath(), null); m_selfTex = null; } if (m_enemyTex != null) { Ctx.m_instance.m_texMgr.unload(m_enemyTex.GetPath(), null); m_enemyTex = null; } if (m_effect != null) { m_effect.dispose(); m_effect = null; } }
public override void dispose() { if (m_frameEffect != null) { //m_frameEffect.dispose(); m_frameEffect = null; } if (m_skillAttPrepareEffect != null) { m_skillAttPrepareEffect = null; } m_stateEffectList.Clear(); foreach (var effect in m_linkEffectList.list) { effect.dispose(); } m_linkEffectList.Clear(); base.dispose(); }