//场景特效 /** 创建场景特效 */ public UnitData createSceneEffectData(int id) { UnitData data = GameC.factory.createUnitData(); SceneEffectIdentityData iData; if (data.identity == null) { data.identity = iData = new SceneEffectIdentityData(); iData.type = UnitType.SceneEffect; //初始化部分 initBaseUnitData(data); } else { iData = (SceneEffectIdentityData)data.identity; } iData.force = SceneForceType.None; iData.playerID = -1;//无归属 iData.id = id; iData.signedEffectID = -1; return(data); }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { base.toShadowCopy(data); if (!(data is SceneEffectIdentityData)) { return; } SceneEffectIdentityData mData = (SceneEffectIdentityData)data; this.id = mData.id; }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { if (!base.toDataEquals(data)) { return(false); } SceneEffectIdentityData mData = (SceneEffectIdentityData)data; if (this.id != mData.id) { return(false); } return(true); }
/** 特效播放完毕 */ public void effectPlayOver(UnitEffect effect) { int id = effect.id; int num = _effectNumDic.get(id); if (num <= 0) { Ctrl.throwError("出错,effect数目小于0"); return; } _effectNumDic.put(id, --num); _effectList.removeObj(effect); effect.dispose(); GameC.pool.unitEffectPool.back(effect); //场景特效 if (_unit.type == UnitType.SceneEffect) { SceneEffectIdentityData iData = _data.getSceneEffectIdentity(); if (iData.signedEffectID > 0) { if (id == iData.signedEffectID) { sceneEffectOver(); } } else { SceneEffectConfig config = SceneEffectConfig.get(iData.id); if (config.effectID > 0) { sceneEffectOver(); } } } }
//--主显示部分--// /** 初始化主显示 */ protected virtual void initMainShow() { bool hasModel = false; if (_data.avatar != null && _data.avatar.modelID > 0) { hasModel = true; setModel(_data.avatar.modelID); _data.avatar.parts.forEach((k, v) => { setPart(k, _unit.avatar.getShowPart(k)); }); } if (BaseC.constlist.unit_canFight(_data.identity.type)) { int fightUnitID = _data.getFightIdentity().getFightUnitID(); if (fightUnitID > 0) { FightUnitConfig fConfig = FightUnitConfig.get(fightUnitID); if (!hasModel && fConfig.modelID > 0) { setModel(fConfig.modelID); } if (fConfig.effectID > 0) { addEffect(fConfig.effectID); } } } //特殊的 switch (_unit.type) { case UnitType.SceneEffect: { SceneEffectIdentityData iData = _data.getSceneEffectIdentity(); if (iData.signedEffectID > 0) { addOrPlayEffect(iData.signedEffectID); } else { SceneEffectConfig config = SceneEffectConfig.get(((SceneEffectIdentityData)_data.identity).signedEffectID); if (config.modelID > 0) { setModel(config.modelID); } if (config.effectID > 0) { addOrPlayEffect(config.effectID); } } } break; case UnitType.FieldItem: { FieldItemIdentityData iData = (FieldItemIdentityData)_data.identity; ItemConfig itemConfig = ItemConfig.get(iData.item.id); if (itemConfig.fieldItemModelID > 0) { setModel(itemConfig.fieldItemModelID); } } break; } }