Files
JJBB/Assets/Project/Script/Obj/Obj_Characters/Obj_Snare.cs

145 lines
5.1 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
/********************************************************************
: 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);
}
}
}
}
}
}