public bool Request(ItemAsset.ItemObject item) { if (null == item) { return(false); } if (item.protoId == ReviveItemProtoId) { return(false); } Pathea.SkAliveEntity a = Entity.GetCmpt <Pathea.SkAliveEntity>(); if (a != null) { if (a.isDead) { return(false); } } //net if (NetworkInterface.IsClient && null != mNet) { float cd = GetCdByItemProtoId(item.protoId); if (cd > 0) { return(false); } //ConsumeItem(item.GetCmpt<ItemAsset.Consume>()); ItemAsset.Equip equip = item.GetCmpt <ItemAsset.Equip>(); if (null != equip) { if (mNet.network is PlayerNetwork) { Pathea.EquipmentCmpt cmpt = (mNet.network as PlayerNetwork).PlayerEntity.GetCmpt <Pathea.EquipmentCmpt>(); if (null != cmpt) { if (!cmpt.NetTryPutOnEquipment(item)) { return(false); } } } } LearnReplicatorFormula(item.GetCmpt <ItemAsset.ReplicatorFormula>(), false); LearnMetalScan(item.GetCmpt <ItemAsset.MetalScan>(), false); mNet.RequestUseItem(item.instanceId); return(true); } else { return(Use(item)); } }
public override void InitEquipment(PeEntity entity, ItemAsset.ItemObject itemObj) { base.InitEquipment(entity, itemObj); m_MotionEquip = m_Entity.GetCmpt <Motion_Equip>(); m_MotionMgr = m_Entity.GetCmpt <MotionMgrCmpt>(); m_Durability = itemObj.GetCmpt <ItemAsset.Durability>(); }
public static RailwayTrain GetTrain(int itemInstanceId) { ItemAsset.ItemObject trainItem = ItemAsset.ItemMgr.Instance.Get(itemInstanceId); if (null == trainItem) { return(null); } ItemAsset.Instantiate train = trainItem.GetCmpt <ItemAsset.Instantiate>(); if (null == train) { return(null); } GameObject obj = train.CreateViewGameObj(null); if (null == obj) { return(null); } obj.transform.parent = railRoot; return(obj.GetComponent <RailwayTrain>()); }
public override void InitEquipment(Pathea.PeEntity entity, ItemAsset.ItemObject itemObj) { base.InitEquipment(entity, itemObj); m_Equip.SetJetPackLogic(this); m_ItemAttr = itemObj.GetCmpt <ItemAsset.JetPkg>(); m_Time = new UTimer(); m_Time.ElapseSpeed = -1f; m_Time.Second = GameConfig.NetUpdateInterval; m_LastNetValue = enCurrent; }
public static ItemAsset.Drag CreateItemDrag(int protoId) { ItemAsset.ItemObject itemObj = ItemAsset.ItemMgr.Instance.CreateItem(protoId); if (null == itemObj) { Debug.LogError("create item failed, protoId:" + protoId); return(null); } return(itemObj.GetCmpt <ItemAsset.Drag>()); }
public bool Use(ItemAsset.ItemObject item) { CheckMainPlayerUseItem(item.protoId); bool destroy = false; destroy = ExtractBundle(item.GetCmpt <ItemAsset.Bundle>()) || destroy; destroy = ConsumeItem(item.GetCmpt <ItemAsset.Consume>()) || destroy; destroy = LearnReplicatorFormula(item.GetCmpt <ItemAsset.ReplicatorFormula>()) || destroy; destroy = LearnMetalScan(item.GetCmpt <ItemAsset.MetalScan>()) || destroy; bool remove = TakeOnEquipment(item.GetCmpt <ItemAsset.Equip>()); if (mPkg != null) { if (destroy) { mPkg.DestroyItem(item, 1); } else if (remove) { mPkg.Remove(item); } } bool ret = destroy || remove; if (ret) { eventor.Dispatch(new EventArg() { itemObj = item }, this); } return(ret); }
protected void PutDown(bool isCreation = false) { ItemAsset.Drag dragging = itemDragging; //some item stack count > 1, seed eg. if (itemDragging.itemObj.stackCount > 1) { ItemAsset.ItemObject itemobj = ItemAsset.ItemMgr.Instance.CreateItem(itemDragging.itemObj.protoId); dragging = itemobj.GetCmpt <ItemAsset.Drag>(); } /*DragArticleAgent agent = */ DragArticleAgent.Create(dragging, transform.position, transform.localScale, transform.rotation, SceneMan.InvalidID, null, isCreation); RemoveFromBag(); }
void RPC_SO_InitData(uLink.BitStream stream, uLink.NetworkMessageInfo info) { ItemAsset.ItemObject itemObj = stream.Read <ItemAsset.ItemObject>(); transform.position = stream.Read <Vector3>(); transform.rotation = stream.Read <Quaternion>(); if (null == itemObj) { return; } ItemAsset.Drag drag = itemObj.GetCmpt <ItemAsset.Drag>(); if (null == drag) { return; } DragArticleAgent item = DragArticleAgent.Create(drag, transform.position, transform.localScale, transform.rotation, Id, this); if (item.itemLogic != null) { DragItemLogicFlag flag = item.itemLogic as DragItemLogicFlag; if (flag != null) { _entity = Pathea.EntityMgr.Instance.Get(Id); OnSpawned(flag.gameObject); } } if (null == _flagPos) { _flagPos = new PeMap.StaticPoint(); _flagPos.icon = PeMap.MapIcon.FlagIcon; _flagPos.fastTravel = true; _flagPos.text = "Flag_" + Id; //_flagPos.campId = TeamId; _flagPos.position = transform.position; PeMap.LabelMgr.Instance.Add(_flagPos); } StartCoroutine(RefreshFlag()); }
void RPC_SO_InitData(uLink.BitStream stream, uLink.NetworkMessageInfo info) { ItemAsset.ItemObject itemObj = stream.Read <ItemAsset.ItemObject>(); _pos = transform.position = stream.Read <Vector3>(); rot = transform.rotation = stream.Read <Quaternion>(); if (null == itemObj) { return; } ItemAsset.Drag drag = itemObj.GetCmpt <ItemAsset.Drag>(); if (null == drag) { return; } DragArticleAgent item = DragArticleAgent.Create(drag, _pos, transform.localScale, rot, Id, this); if (item.itemLogic != null) { DragItemLogicFlag flag = item.itemLogic as DragItemLogicFlag; if (flag != null) { OnSpawned(flag.gameObject); Pathea.PeEntity FlagEntity = flag.gameObject.GetComponent <Pathea.PeEntity>(); if (null != FlagEntity) { Pathea.NetCmpt net = FlagEntity.GetCmpt <Pathea.NetCmpt>(); if (null == net) { net = FlagEntity.Add <Pathea.NetCmpt>(); } net.network = this; } } } OnResetFlag(); }
IEnumerator WaitForMainPlayer() { while (null == PlayerNetwork.mainPlayer) { yield return(null); } if (hasOwnerAuth) { if (-1 == _missionId && -1 == _targetId) { ItemAsset.ItemObject item = ItemAsset.ItemMgr.Instance.Get(Id); if (null == item) { yield break; } ItemAsset.Drag drag = item.GetCmpt <ItemAsset.Drag>(); if (null == drag) { yield break; } DragArticleAgent.Create(drag, _pos, Vector3.one, Quaternion.identity, Id, this); StartCoroutine(WaitForActivate()); } else { SceneEntityCreator.self.AddMissionPoint(_missionId, _targetId, Id); StartCoroutine(WaitForActivate()); } } else { RPCServer(EPacketType.PT_InGame_TDInitData); } }
public override void InitEquipment(PeEntity entity, ItemAsset.ItemObject itemObj) { base.InitEquipment(entity, itemObj); m_Equip.SetEnergyGunLogic(this); m_ItemAmmoAttr = itemObj.GetCmpt <ItemAsset.GunAmmo>(); if (null != m_ItemAmmoAttr) { if (null != m_Magazine) { if (m_ItemAmmoAttr.count < 0) { m_ItemAmmoAttr.count = (int)magazineSize; } m_Magazine.m_Value = m_ItemAmmoAttr.count; } } m_Time = new UTimer(); m_Time.ElapseSpeed = -1f; m_Time.Second = GameConfig.NetUpdateInterval; m_LastNetValue = enCurrent; }
/// <summary> /// 仅在创建游戏实体时初始化, 拖拽效果不会调用 /// </summary> public void InitController(int itemInstanceId) { _creationController = GetComponent <CreationController>(); _srcItem = ItemAsset.ItemMgr.Instance.Get(itemInstanceId); _lifeCmpt = _srcItem.GetCmpt <ItemAsset.LifeLimit>(); _energyCmpt = _srcItem.GetCmpt <ItemAsset.Energy>(); // PeEntity int id = WorldInfoMgr.Instance.FetchNonRecordAutoId(); _creationPeEntity = EntityMgr.Instance.InitEntity(id, gameObject); _creationPeEntity.carrier = this as CarrierController; // ViewCmpt var view = gameObject.AddComponent <CreationViewCmpt>(); _creationPeEntity.viewCmpt = view; view.Init(creationController); // PeTrans PeTrans tr = gameObject.AddComponent <PeTrans>(); _creationPeEntity.peTrans = tr; tr.SetModel(transform); tr.bound = _creationController.bounds; // SkEntity _creationSkEntity = gameObject.AddComponent <CreationSkEntity>(); _creationSkEntity.Init(this); _creationPeEntity.skEntity = _creationSkEntity; _creationSkEntity.m_Attrs = new PESkEntity.Attr[5]; for (int i = 0; i < _creationSkEntity.m_Attrs.Length; i++) { _creationSkEntity.m_Attrs[i] = new PESkEntity.Attr(); } _creationSkEntity.m_Attrs[0].m_Type = AttribType.Hp; _creationSkEntity.m_Attrs[0].m_Value = _lifeCmpt.floatValue.current; _creationSkEntity.m_Attrs[1].m_Type = AttribType.HpMax; _creationSkEntity.m_Attrs[1].m_Value = _lifeCmpt.valueMax; _creationSkEntity.m_Attrs[2].m_Type = AttribType.CampID; _creationSkEntity.m_Attrs[2].m_Value = 0; _creationSkEntity.m_Attrs[3].m_Type = AttribType.DamageID; _creationSkEntity.m_Attrs[3].m_Value = 0; _creationSkEntity.m_Attrs[4].m_Type = AttribType.DefaultPlayerID; _creationSkEntity.m_Attrs[4].m_Value = 99; _creationSkEntity.onHpChange += (skEntity, deltaHp) => { _lifeCmpt.floatValue.current = _creationSkEntity.GetAttribute(AttribType.Hp); OnHpChange(deltaHp, _lifeCmpt.floatValue.current <= 0); }; _creationSkEntity.InitEntity(); // Physics _rigidbody = gameObject.AddComponent <Rigidbody>(); _rigidbody.mass = mass; _rigidbody.centerOfMass = centerOfMass; // 椭球体的惯性张量 作为基数 var size = creationController.bounds.size; _rigidbody.inertiaTensor = Vector3.Scale( inertiaTensorScale, _rigidbody.mass * 0.05f * new Vector3( size.y * size.y + size.z * size.z, size.x * size.x + size.z * size.z, size.x * size.x + size.y * size.y)); _rigidbody.collisionDetectionMode = CollisionDetectionMode.Continuous; _rigidbody.interpolation = RigidbodyInterpolation.None; _rigidbody.useGravity = true; _rigidbody.isKinematic = true; _rigidbody.maxAngularVelocity = PEVCConfig.instance.maxRigidbodyAngularSpeed; InitDrags(out _standardDrag, out _underwaterDrag, out _standardAngularDrag, out _underwaterAngularDrag); // Network InitNetwork(); // Weapons LoadParts(ref _weapons); for (int i = 0; i < _weapons.Length; i++) { _weapons[i].Init(i); } SetOwner(null); // InitOtherThings InitOtherThings(); // Damage Controller gameObject.AddComponent <CreationDamageController>().Init(this); // LOD gameObject.AddComponent <DragCreationLodCmpt>(); gameObject.AddComponent <DragItemLogicCreation>(); }
public void UseFromNet(ItemAsset.ItemObject item) { ConsumeItem(item.GetCmpt <ItemAsset.Consume>()); }