Files
2024-08-23 15:49:34 +08:00

145 lines
5.1 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/********************************************************************
文件名: Obj_Snare.cs
创建时间: 2014/05/11 14:55
全路径: TLOL\Version\Main\Project\Client\Assets\MLDJ\Script\Obj
创建人: 罗勇
功能说明: 陷阱
修改记录:
*********************************************************************/
using Games.GlobeDefine;
using Games.Scene;
using GCGame.Table;
using UnityEngine;
namespace Games.LogicObj
{
public class Obj_Snare_Init_Data : Obj_Character_Init_Data
{
public int m_state; //0 未激活 1 激活
public Obj_Snare_Init_Data()
{
CleanUp();
}
public override void CleanUp()
{
base.CleanUp();
m_state = 0;
}
}
public class Obj_Snare : Obj
{
private int m_nOwerobjID = -1;
private ulong m_OwnerGuid = GlobeVar.INVALID_GUID;
private int m_State;
private int? _effectState;
public Obj_Snare()
{
m_ObjType = GameDefine_Globe.OBJ_TYPE.OBJ_SNARE;
}
public int OwerobjID
{
get { return m_nOwerobjID; }
set { m_nOwerobjID = value; }
}
public ulong OwnerGuid
{
get { return m_OwnerGuid; }
set { m_OwnerGuid = value; }
}
public override bool Init(ObjParent_Init_Data initData1)
{
var result = base.Init(initData1);
if (result == false)
return false;
var initData = initData1 as Obj_Snare_Init_Data;
if (initData == null)
return false;
//服务器发过来的信息
OwerobjID = initData.m_OwnerObjId;
OwnerGuid = initData.m_OwerGuid;
//var ownerCharacter = Singleton<ObjManager>.GetInstance().FindObjCharacterInScene(OwerobjID);
////修正陷阱的高度和陷阱释放者一样
//if (ownerCharacter != null)
//{
// var newPosVector3 = m_ObjTransform.position;
// newPosVector3.y = ownerCharacter.ObjTransform.position.y;
// m_ObjTransform.position = newPosVector3;
//}
var snareInfo = TableManager.GetSnareObjInfoByID(RoleBaseID, 0);
if (snareInfo == null)
return false;
var charModel = TableManager.GetCharModelByID(snareInfo.CharModelId, 0);
if (null == charModel) return false;
CreateModel(snareInfo.CharModelId);
ObjManager.Instance.AddPoolObj(this);
// RotationType 等于0表示面向摄像机否则使用ObjParent层的面向。
if (snareInfo.RotationType == 0)
{
// 面朝摄像机正方向
if (SceneLogic.CameraController != null && SceneLogic.CameraController.MainCamera != null)
{
var forward = Vector3.Cross(Vector3.up, SceneLogic.CameraController.MainCamera.transform.right);
m_ObjTransform.rotation = Quaternion.LookRotation(forward, Vector3.up);
}
}
PlayerEffect(initData.m_state);
return true;
}
public void PlayerEffect(int state)
{
m_State = state;
if (_effectState != state)
{
_effectState = state;
var snareInfo = TableManager.GetSnareObjInfoByID(RoleBaseID, 0);
if (snareInfo != null) // && ObjEffectLogic != null)
{
var effectCount = snareInfo.getAliveEffectIdCount();
if (state == 0)
{
// 移除激活期特效
StopEffect(snareInfo.ActivateEffectId);
// 启动闲置期特效
for (var i = 0; i < effectCount; i++)
{
var effectId = snareInfo.GetAliveEffectIdbyIndex(i);
if (effectId >= 0)
PlayEffect(effectId);
}
var soundCount = snareInfo.getAliveSoundIdCount();
for (var i = 0; i < soundCount; i++)
{
var soundId = snareInfo.GetAliveSoundIdbyIndex(i);
if (soundId >= 0)
GameManager.gameManager.SoundManager.PlaySoundEffect(soundId);
}
}
else
{
// 移除闲置期特效
for (var i = 0; i < effectCount; i++)
{
var effectId = snareInfo.GetAliveEffectIdbyIndex(i);
if (effectId >= 0)
StopEffect(effectId);
}
// 启动激活期特效
PlayEffect(snareInfo.ActivateEffectId);
}
}
}
}
}
}