private void CreateItemFromItemDrop(IEventArgs fr, Vector3 p, ItemDrop drop, string realName) { FreeMoveEntity en = fr.GameContext.freeMove.CreateEntity(); en.AddEntityKey(new EntityKey(fr.GameContext.session.commonSession.EntityIdGenerator.GetNextEntityId(), (short)EEntityType.FreeMove)); en.AddPosition(); en.position.Value = new Vector3(p.x, p.y, p.z); en.AddFreeData(FreeUtil.ReplaceVar(name, fr), null); en.AddPositionFilter(Core.Components.PositionFilterType.Filter2D, 1000); if (type == 1) { en.freeData.Cat = FreeEntityConstant.DeadBox; } else if (type == 2) { en.freeData.Cat = FreeEntityConstant.DropBox; } en.AddFlagImmutability(fr.GameContext.session.currentTimeObject.CurrentTime); SimpleItemInfo info = new SimpleItemInfo(realName, drop.cat, drop.id, drop.count, en.entityKey.Value.EntityId); en.freeData.Value = SingletonManager.Get <DeadBoxParser>().ToString(info); en.isFlagSyncNonSelf = true; }
public override UnitPosition Select(IEventArgs args) { IniCon(); UnitPosition up = new UnitPosition(); FreeRuleEventArgs fr = (FreeRuleEventArgs)args; if (!string.IsNullOrEmpty(player)) { object obj = fr.GetEntity(player); if (obj != null) { if (obj is PlayerEntity) { PlayerEntity playerEntity = (PlayerEntity)obj; fr.TempUse("current", (FreeData)playerEntity.freeData.FreeData); UnityPositionUtil.SetPlayerToUnitPosition(playerEntity, up); if (fromEye) { up.SetY(up.GetY() + 1.7f); } fr.Resume("current"); } if (obj is FreeMoveEntity) { FreeMoveEntity playerEntity = (FreeMoveEntity)obj; fr.TempUse("current", (FreeEntityData)playerEntity.freeData.FreeData); UnityPositionUtil.SetEntityToUnitPosition(playerEntity.position, up); fr.Resume("current"); } } } else if (!string.IsNullOrEmpty(condition)) { if (con == null || con.Meet(args)) { foreach (PlayerEntity unit in args.GameContext.player.GetInitializedPlayerEntities()) { if (unit.hasFreeData) { fr.TempUse("current", (FreeData)unit.freeData.FreeData); UnityPositionUtil.SetPlayerToUnitPosition(unit, up); fr.Resume("current"); } } } } return(GetPosition(args, up, FreeUtil.ReplaceFloat(angle, args) + up.GetYaw())); }
private void CalcuWhenObserveFreeMove(PlayerEntity playerEntity, FreeMoveEntity observedFreeMove) { var camera = playerEntity.cameraFinalOutputNew; var calsOut = playerEntity.cameraStateOutputNew; CalcuFreeMoveEularAngle(observedFreeMove, camera, calsOut); CalcuFreeMovePos(observedFreeMove, camera); }
protected IMoveSpeed GetSpeed(IEventArgs args, FreeMoveEntity entity) { if (speed == null) { speed = new AlwaysOneSpeed((float)iniSpeed / 100f); } return(speed); }
public override bool Frame(FreeRuleEventArgs args, FreeMoveEntity entity, int interval) { if (dynamic) { tempPosition = targetPos.Select(args); } float speedMeter = GetSpeed(args, entity).GetSpeed(args, interval); float dis = speedMeter * (float)interval / 1000f; if (tempPosition.Distance(GetEntityPosition(entity)) < dis) { UnityPositionUtil.SetUnitPositionToEntity(entity.position, tempPosition); if (action != null && !firstTime) { args.TempUsePara(new FloatPara("x", entity.position.Value.x)); args.TempUsePara(new FloatPara("y", entity.position.Value.y)); args.TempUsePara(new FloatPara("z", entity.position.Value.z)); action.Act(args); args.ResumePara("x"); args.ResumePara("y"); args.ResumePara("z"); firstTime = true; } if (!stayTarget) { return(true); } } else { Vector3 from = entity.position.Value; UnitPosition ep = GetEntityPosition(entity); UnityPositionUtil.Move(ep, tempPosition, dis); entity.position.Value = new Vector3(ep.GetX(), ep.GetY(), ep.GetZ()); if (hitType > 0) { bool hit = CheckHit(args, (FreeEntityData)entity.freeData.FreeData, from, entity.position.Value, dis); if (hit) { return(true); } } } return(false); }
public override void StartMove(FreeRuleEventArgs args, FreeMoveEntity entity) { tempPosition = targetPos.Select(args); if (!string.IsNullOrEmpty(useTime)) { realTime = FreeUtil.ReplaceFloat(useTime, args); } UnityPositionUtil.SetUnitPositionToEntity(entity.position, startPos.Select(args)); }
public virtual void Start(FreeRuleEventArgs args, FreeMoveEntity entity) { startTime = args.Rule.ServerTime; UnitPosition up = startPos.Select(args); entity.position.Value = new Vector3(up.GetX(), up.GetY(), up.GetZ()); StartMove(args, entity); }
protected UnitPosition GetEntityPosition(FreeMoveEntity entity) { if (_entityPosition == null) { _entityPosition = new UnitPosition(); } _entityPosition.SetX(entity.position.Value.x); _entityPosition.SetY(entity.position.Value.y); _entityPosition.SetZ(entity.position.Value.z); return(_entityPosition); }
public object Frame(int frameTime) { if (started) { FreeMoveEntity move = SingletonManager.Get <FreeUiManager>().Contexts1.freeMove.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.FreeMove)); if (move != null) { return(((FreeDataComponent)move.freeData.FreeData).Scale); } } return(null); }
private bool HasNoObstacle(FreeMoveEntity item, PlayerEntity player) { if (item.hasUnityGameObject) { var noObstacle = !CommonObjectCastUtil.HasObstacleBetweenPlayerAndItem(player, item.position.Value, item.unityGameObject.UnityObject); return(noObstacle); } else { var noObstacle = !CommonObjectCastUtil.HasObstacleBetweenPlayerAndItem(player, item.position.Value, null); return(noObstacle); } }
public object Frame(int frameTime) { if (started) { FreeMoveEntity move = SingletonManager.Get <FreeUiManager>().Contexts1.freeMove.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.FreeMove)); if (move != null && move.hasFreeData) { return(new Vector3(move.freeData.ScaleX, move.freeData.ScaleY, move.freeData.ScaleZ)); } } return(null); }
private static void CalcuFreeMoveEularAngle(FreeMoveEntity observedFreeMove, CameraFinalOutputNewComponent camera, CameraStateOutputNewComponent calsOut) { if (observedFreeMove.hasFreeMoveController && observedFreeMove.freeMoveController.ControllType == (byte)EFreeMoveControllType.FixFocusPos) { var aimAt = observedFreeMove.freeMoveController.FocusOnPosition.ShiftedVector3(); var vect = aimAt - observedFreeMove.position.Value; camera.EulerAngle = Quaternion.LookRotation(vect).eulerAngles; } else { camera.EulerAngle = calsOut.ArchorEulerAngle + calsOut.EulerAngle; } }
public bool Meet(IEventArgs args) { FreeData fd = (FreeData)args.GetUnit(player); object obj = ((FreeRuleEventArgs)args).GetEntity(entity); if (fd != null && obj != null) { PlayerEntity playerEntity = fd.Player; FreeMoveEntity objEntity = (FreeMoveEntity)obj; float yaw = CommonMathUtil.TransComAngle(playerEntity.orientation.Yaw); float ang = CommonMathUtil.GetAngle(new Vector2(objEntity.position.Value.x, objEntity.position.Value.z), new Vector2(playerEntity.position.Value.x, playerEntity.position.Value.z)); return(CommonMathUtil.GetDiffAngle(ang, yaw) <= FreeUtil.ReplaceFloat(angle, args) && Vector3.Distance(playerEntity.position.Value, objEntity.position.Value) <= FreeUtil.ReplaceFloat(distance, args)); } return(false); }
private void CalcuWhenObserveFreeMove(PlayerEntity playerEntity, FreeMoveEntity observedFreeMove) { var camera = playerEntity.cameraFinalOutputNew; var calsOut = playerEntity.cameraStateOutputNew; camera.EulerAngle = calsOut.ArchorEulerAngle + calsOut.EulerAngle; var rotation = Quaternion.Euler(camera.EulerAngle); var archorPos = observedFreeMove.position.Value + observeOffset; float actualDistance = CameraUtility.ScatterCast(archorPos, rotation, observeDistance, _samplePoints, _collisionLayers); var finalPostOffset = -rotation.Forward() * actualDistance; camera.Position = archorPos + finalPostOffset; }
public override void DoAction(IEventArgs args) { FreeMoveEntity en = args.GameContext.freeMove.CreateEntity(); en.AddEntityKey(new EntityKey(args.GameContext.session.commonSession.EntityIdGenerator.GetNextEntityId(), (short)EEntityType.FreeMove)); if (pos == null) { en.AddPosition(); en.position.Value = new Vector3(FreeUtil.ReplaceFloat(x, args), FreeUtil.ReplaceFloat(y, args), FreeUtil.ReplaceFloat(z, args)); } else { UnitPosition up = pos.Select(args); en.AddPosition(); en.position.Value = new Vector3(up.GetX(), up.GetY(), up.GetZ()); } string realCat = FreeUtil.ReplaceVar(cat, args); if (realCat == null) { realCat = ""; } string realValue = FreeUtil.ReplaceVar(value, args); if (realValue == null) { realValue = ""; } en.AddFreeData(FreeUtil.ReplaceVar(key, args), null); en.freeData.Cat = realCat; en.freeData.Value = realValue; en.isFlagSyncNonSelf = true; en.AddFlagImmutability(args.GameContext.session.currentTimeObject.CurrentTime); if (distance > 0) { en.AddPositionFilter(Core.Components.PositionFilterType.Filter2D, distance); } if (!string.IsNullOrEmpty(lifeTime)) { en.AddLifeTime(DateTime.Now, FreeUtil.ReplaceInt(lifeTime, args)); } }
public FreeEntityData(FreeMoveEntity entity) { this._entity = entity; this.paras = new SimpleParaList(); this.paras.AddFields(new ObjectFields(this)); this.id = entity.entityKey.Value.EntityId; this.follows = new List <PlayerEntity>(); xPara = new IntPara("x", 0); yPara = new IntPara("y", 0); zPara = new IntPara("z", 0); paras.AddPara(xPara); paras.AddPara(yPara); paras.AddPara(zPara); }
public override void DoAction(IEventArgs args) { Debug.LogFormat("remove scene object {0}", id); SceneObjectEntity entity = args.GameContext.sceneObject.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(FreeUtil.ReplaceInt(id, args), (short)EEntityType.SceneObject)); if (entity != null) { entity.isFlagDestroy = true; } else { FreeMoveEntity moveEntity = args.GameContext.freeMove.GetEntityWithEntityKey(new EntityKey(FreeUtil.ReplaceInt(id, args), (short)EEntityType.FreeMove)); if (moveEntity != null) { moveEntity.isFlagDestroy = true; } } }
private int CreateItemFromInventory(IEventArgs fr, FreeData fd, ItemInventory ii, Vector3 p, string realName, int entityId) { int itemAdded = 0; if (ii != null && ii.name != ChickenConstant.BagGround) { foreach (ItemPosition ip in ii.GetItems()) { FreeMoveEntity en = fr.GameContext.freeMove.CreateEntity(); en.AddEntityKey(new EntityKey(fr.GameContext.session.commonSession.EntityIdGenerator.GetNextEntityId(), (short)EEntityType.FreeMove)); en.AddPosition(); en.position.Value = new Vector3(p.x, p.y, p.z); en.AddFreeData(FreeUtil.ReplaceVar(name, fr), null); en.AddPositionFilter(Core.Components.PositionFilterType.Filter2D, 1000); en.freeData.Cat = FreeEntityConstant.DeadBox; FreeItemInfo itemInfo = FreeItemConfig.GetItemInfo(ip.GetKey().GetKey()); if (itemInfo.cat == (int)ECategory.Weapon) { int key = CarryClipUtil.GetWeaponKey(ii.name, fd); if (key >= 1 && key <= 3) { CarryClipUtil.AddCurrentClipToBag(key, fd, fr); } } en.AddFlagImmutability(fr.GameContext.session.currentTimeObject.CurrentTime); SimpleItemInfo info = new SimpleItemInfo(realName, itemInfo.cat, itemInfo.id, ip.GetCount(), en.entityKey.Value.EntityId); en.freeData.Value = SingletonManager.Get <DeadBoxParser>().ToString(info); en.freeData.IntValue = entityId; en.isFlagSyncNonSelf = true; itemAdded++; } } return(itemAdded); }
public static SimpleItemInfo GetGroundItemInfo(ServerRoom room, FreeData fd, string key) { SimpleItemInfo freeItem = new SimpleItemInfo(); string[] xy = StringUtil.Split(key, ParaConstant.SPLITER_COMMA); if (xy.Length == 3) { string name = xy[0]; int x = NumberUtil.GetInt(xy[1]); int y = NumberUtil.GetInt(xy[2]); if (x == 0) { SceneObjectEntity entity = room.RoomContexts.sceneObject.GetEntityWithEntityKey(new EntityKey(y, (short)EEntityType.SceneObject)); if (entity != null) { freeItem.entityId = entity.entityKey.Value.EntityId; freeItem.cat = entity.simpleEquipment.Category; freeItem.id = entity.simpleEquipment.Id; freeItem.count = entity.simpleEquipment.Count; } else { FreeMoveEntity moveEntity = room.RoomContexts.freeMove.GetEntityWithEntityKey(new EntityKey(y, (short)EEntityType.FreeMove)); if (moveEntity != null) { SimpleItemInfo info = (SimpleItemInfo)SingletonManager.Get <DeadBoxParser>().FromString(moveEntity.freeData.Value); freeItem.entityId = moveEntity.entityKey.Value.EntityId; freeItem.cat = info.cat; freeItem.id = info.id; freeItem.count = info.count; } else { Debug.LogErrorFormat("entity {0} not existed.", key); } } } } return(freeItem); }
private void CalcuWhenObserveFreeMove(PlayerEntity playerEntity, FreeMoveEntity observedFreeMove) { var camera = playerEntity.cameraFinalOutputNew; var calsOut = playerEntity.cameraStateOutputNew; camera.EulerAngle = calsOut.ArchorEulerAngle + calsOut.EulerAngle; camera.EulerAngle.x = YawPitchUtility.Normalize(camera.EulerAngle.x); camera.EulerAngle.y = YawPitchUtility.Normalize(camera.EulerAngle.y); camera.EulerAngle.z = YawPitchUtility.Normalize(camera.EulerAngle.z); var rotation = Quaternion.Euler(camera.EulerAngle); var archorPos = observedFreeMove.position.Value + observeOffset; float actualDistance = ActualDistance(rotation, archorPos, observeDistance, _collisionLayers); var finalPostOffset = -rotation.Forward() * actualDistance; camera.Position = archorPos + finalPostOffset; Debug.DrawLine(observedFreeMove.position.Value, archorPos, Color.green); Debug.DrawLine(archorPos, camera.Position, Color.blue); }
private void CalcuFreeMovePos(FreeMoveEntity observedFreeMove, CameraFinalOutputNewComponent camera) { if (observedFreeMove == null || !observedFreeMove.hasPosition) { return; } var archorPos = observedFreeMove.position.Value + (observedFreeMove.hasFreeMoveController ? Vector3.zero : observeOffset); var rotation = Quaternion.Euler(camera.EulerAngle); if (observedFreeMove.hasFreeMoveController && observedFreeMove.freeMoveController.ControllType == (byte)EFreeMoveControllType.FixFocusPos) { camera.Position = archorPos; } else { float actualDistance = CameraUtility.ScatterCast(archorPos, rotation, observeDistance, _samplePoints, _collisionLayers); var finalPostOffset = -rotation.Forward() * actualDistance; camera.Position = archorPos + finalPostOffset; } }
protected new IMoveSpeed GetSpeed(IEventArgs args, FreeMoveEntity entity) { if (string.IsNullOrEmpty(useTime)) { return(base.GetSpeed(args, entity)); } else { if (speed == null) { float dis = tempPosition.Distance(GetEntityPosition(entity)); if (realTime > 0) { speed = new AlwaysOneSpeed(dis / realTime); } else { speed = new AlwaysOneSpeed(5); } } return(base.GetSpeed(args, entity)); } }
public Object Frame(int frameTime) { var v = new Vector3(); // var battleModel = GameModelLocator.getInstance().gameModel; // // var ce = battleModel.getClientEntityFormId(id); // // if (ce == null) // { // ce = battleModel.getCurrentSelfClientEntity(); // } // // var angle = ce.lerpAngle.x + battleModel.shakeAngleOffect.x; var battleModel = GameModelLocator.GetInstance().GameModel; PlayerEntity player = SingletonManager.Get <FreeUiManager>().Contexts1.player.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.Player)); FreeMoveEntity move = SingletonManager.Get <FreeUiManager>().Contexts1.freeMove.GetEntityWithEntityKey(new EntityKey(id, (int)EEntityType.FreeMove)); //if (player == null && move == null) //{ // player = SingletonManager.Get<FreeUiManager>().Contexts1.player.flagSelfEntity; //} var angle = this._angle; if (player != null) { angle = player.orientation.Yaw + this._angle + battleModel.shakeAngleOffect.x; } var dir = new Vector3(); var end = new Vector3(); FreeMathUtility.AnglesToVector(angle, pitch, ref dir); PositionComponent pos = null; if (player != null) { pos = player.position; } if (move != null) { if (move.hasPosition) { pos = move.position; } } if (pos != null) { FreeMathUtility.Vector3DMA(pos.Value, distance, dir, ref end); v.x = end.x; v.y = end.y + height; v.z = end.z; } else { return(null); } return(v); }
public static void AddItemToPlayer(ServerRoom room, PlayerEntity player, int entityId, int cat, int id, int count, string toInv = "") { SceneObjectEntity entity = room.RoomContexts.sceneObject.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(entityId, (short)EEntityType.SceneObject)); FreeMoveEntity freeMoveEntity = null; if (entity == null || entity.isFlagDestroy) { freeMoveEntity = room.RoomContexts.freeMove.GetEntityWithEntityKey(new Core.EntityComponent.EntityKey(entityId, (short)EEntityType.FreeMove)); if (freeMoveEntity == null) { return; } } room.FreeArgs.TempUse("current", (FreeData)player.freeData.FreeData); if (!FreeItemConfig.Contains(cat, id)) { return; } FreeItemInfo item = FreeItemConfig.GetItemInfo(cat, id); CreateItemToPlayerAction action = new CreateItemToPlayerAction(); FreeData fd = (FreeData)player.freeData.FreeData; action.name = "default"; switch (item.cat) { case (int)ECategory.Weapon: if (item.subType == "w1") { action.name = "w1"; int c1 = fd.freeInventory.GetInventoryManager().GetInventory("w1").posList.Count; int c2 = fd.freeInventory.GetInventoryManager().GetInventory("w2").posList.Count; if (toInv.StartsWith("w1")) { action.name = "w1"; if (c1 > 0) { DropItem(action.name, fd, room); } } else if (toInv.StartsWith("w2")) { action.name = "w2"; if (c2 > 0) { DropItem(action.name, fd, room); } } else { if (c1 > 0 && c2 == 0) { action.name = "w2"; } if (c1 > 0 && c2 > 0) { int currentKey = FreeWeaponUtil.GetWeaponKey(fd.Player.WeaponController().HeldSlotType); if (currentKey == 0) { currentKey = 1; } if (currentKey == 1 || currentKey == 2) { action.name = "w" + currentKey; } else { action.name = "w1"; } DropItem(action.name, fd, room); } } } else if (item.subType == "w2") { action.name = "w3"; DropItem(action.name, fd, room); } else if (item.subType == "w3") { action.name = "w4"; DropItem(action.name, fd, room); } else if (item.subType == "w4") { action.name = "default"; } break; case (int)ECategory.Avatar: action.name = item.subType; DropItem(item.subType, fd, room); break; case (int)ECategory.WeaponPart: action.name = AutoPutPart(fd, item, toInv, room); break; default: break; } //handleDropOne(new string[] { "w2" }, action, item, fd, room, entity); //handleAddToDefault(new string[] { "p1", "p2", "p3", "p4", "p5" }, action, item, fd, room, entity); action.key = FreeItemConfig.GetItemKey(item.cat, item.id); bool canAdd = true; if (action.name == "default") { canAdd = BagCapacityUtil.CanAddToBag(room.FreeArgs, fd, item.cat, item.id, count); } if (canAdd) { PlayerAnimationAction.DoAnimation(room.RoomContexts, PlayerAnimationAction.Interrupt, fd.Player, true); PlayerAnimationAction.DoAnimation(room.RoomContexts, 101, fd.Player, true); if (!string.IsNullOrEmpty(action.key)) { action.count = count.ToString(); action.SetPlayer("current"); room.FreeArgs.TempUse("current", fd); action.Act(room.FreeArgs); room.FreeArgs.Resume("current"); } else { Debug.LogError(item.cat + "-" + item.key + " not existed"); } if (entity != null) { entity.isFlagDestroy = true; } if (freeMoveEntity != null) { freeMoveEntity.isFlagDestroy = true; } //Debug.LogErrorFormat("destroy entity {0}", entity != null); FreeSoundUtil.PlayOnce("pick", 225, room.FreeArgs, fd); } room.FreeArgs.Resume("current"); }
public void Start(FreeRuleEventArgs args, FreeMoveEntity entity) { UnitPosition up = startPos.Select(args); entity.position.Value = new Vector3(up.GetX(), up.GetY(), up.GetZ()); }
public override void StartMove(FreeRuleEventArgs args, FreeMoveEntity entity) { }
public override bool Frame(FreeRuleEventArgs args, FreeMoveEntity entity, int interval) { return(false); }
public static bool AddItemToPlayer(ServerRoom room, PlayerEntity player, int entityId, int cat, int id, int count, string toInv = "") { SceneObjectEntity entity = room.RoomContexts.sceneObject.GetEntityWithEntityKey(new EntityKey(entityId, (short)EEntityType.SceneObject)); FreeMoveEntity freeMoveEntity = null; if (entity == null || entity.isFlagDestroy) { freeMoveEntity = room.RoomContexts.freeMove.GetEntityWithEntityKey(new EntityKey(entityId, (short)EEntityType.FreeMove)); if (freeMoveEntity == null) { return(false); } } FreeData fd = (FreeData)player.freeData.FreeData; room.ContextsWrapper.FreeArgs.TempUse("current", fd); if (!FreeItemConfig.Contains(cat, id)) { return(false); } FreeItemInfo item = FreeItemConfig.GetItemInfo(cat, id); CreateItemToPlayerAction action = new CreateItemToPlayerAction(); action.name = ChickenConstant.BagDefault; switch (item.cat) { case (int)ECategory.Weapon: if (item.subType == ChickenConstant.ItemCatPrimeWeapon) { action.name = ChickenConstant.BagPrimeWeapon; int c1 = fd.freeInventory.GetInventoryManager().GetInventory(ChickenConstant.BagPrimeWeapon).posList.Count; int c2 = fd.freeInventory.GetInventoryManager().GetInventory(ChickenConstant.BagSecondaryWeapon).posList.Count; if (toInv.StartsWith(ChickenConstant.BagPrimeWeapon)) { action.name = ChickenConstant.BagPrimeWeapon; if (c1 > 0) { DropItem(action.name, fd, room); } } else if (toInv.StartsWith(ChickenConstant.BagSecondaryWeapon)) { action.name = ChickenConstant.BagSecondaryWeapon; if (c2 > 0) { DropItem(action.name, fd, room); } } else { if (c1 > 0 && c2 == 0) { action.name = ChickenConstant.BagSecondaryWeapon; } if (c1 > 0 && c2 > 0) { int currentKey = FreeWeaponUtil.GetWeaponKey(fd.Player.WeaponController().HeldSlotType); if (currentKey == 0) { currentKey = 1; } if (currentKey == 1 || currentKey == 2) { action.name = "w" + currentKey; } else { action.name = ChickenConstant.BagPrimeWeapon; } DropItem(action.name, fd, room); } } } else if (item.subType == ChickenConstant.ItemCatPistolWeapon) { action.name = ChickenConstant.BagPistolWeapon; DropItem(action.name, fd, room); } else if (item.subType == ChickenConstant.ItemCatMeleeWeapon) { action.name = ChickenConstant.BagMeleeWeapon; DropItem(action.name, fd, room); } else if (item.subType == ChickenConstant.ItemCatGrenadeWeapon) { action.name = ChickenConstant.BagDefault; } else if (item.subType == ChickenConstant.ItemCatArmor) { action.name = ChickenConstant.BagArmor; if (entity != null) { count = entity.armorDurability.CurDurability; } DropItem(action.name, fd, room); } else if (item.subType == ChickenConstant.ItemCatHelmet) { action.name = ChickenConstant.BagHelmet; if (entity != null) { count = entity.armorDurability.CurDurability; } DropItem(action.name, fd, room); } break; case (int)ECategory.Avatar: action.name = item.subType; DropItem(item.subType, fd, room); break; case (int)ECategory.WeaponPart: action.name = AutoPutPart(fd, item, toInv, room); break; default: break; } action.key = FreeItemConfig.GetItemKey(item.cat, item.id); int canCount = 0; if (action.name == ChickenConstant.BagDefault) { canCount = BagCapacityUtil.CanAddToBagCount(room.ContextsWrapper.FreeArgs, fd, item.cat, item.id, count); } else if (item.type == ChickenConstant.ItemCatAvatar || action.name == ChickenConstant.BagHelmet || action.name == ChickenConstant.BagArmor) { canCount = count; } else { canCount = 1; } bool pickupSuccess = false; if (canCount > 0 && !string.IsNullOrEmpty(action.name)) { PlayerAnimationAction.DoAnimation(room.RoomContexts, PlayerAnimationAction.Interrupt, fd.Player, true); PlayerAnimationAction.DoAnimation(room.RoomContexts, PlayerAnimationAction.PickUp, fd.Player, true); PlayerStateUtil.AddPlayerState(EPlayerGameState.InterruptItem, fd.Player.gamePlay); if (!string.IsNullOrEmpty(action.key)) { action.count = canCount.ToString(); action.SetPlayer("current"); room.ContextsWrapper.FreeArgs.TempUse("current", fd); action.Act(room.ContextsWrapper.FreeArgs); room.ContextsWrapper.FreeArgs.Resume("current"); if (count > canCount) { SimpleProto msg = FreePool.Allocate(); msg.Key = FreeMessageConstant.ChickenTip; msg.Ss.Add("word80," + count + "," + canCount); FreeMessageSender.SendMessage(fd.Player, msg); room.ContextsWrapper.FreeArgs.GameContext.session.entityFactoryObject.SceneObjectEntityFactory.CreateSimpleObjectEntity((ECategory)item.cat, item.id, count - canCount, entity == null ? freeMoveEntity.position.Value : entity.position.Value); } pickupSuccess = true; } else { Debug.LogError(item.cat + "-" + item.key + " not existed"); } if (entity != null) { entity.isFlagDestroy = true; } if (freeMoveEntity != null) { freeMoveEntity.isFlagDestroy = true; if (freeMoveEntity.freeData.Cat == FreeEntityConstant.DeadBox) { var deadBox = room.ContextsWrapper.FreeArgs.GameContext.freeMove.GetEntityWithEntityKey(new EntityKey(freeMoveEntity.freeData.IntValue, (short)EEntityType.FreeMove)); if (deadBox != null && deadBox.freeData.EmptyDelete) { if (deadBox.freeData.IntValue > 1) { deadBox.freeData.IntValue--; } else { deadBox.isFlagDestroy = true; } } } } } room.ContextsWrapper.FreeArgs.Resume("current"); return(pickupSuccess); }
private int GetPlayerField() { var playerEntity = SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity; if (playerEntity == null) { FreeMoveEntity move = SingletonManager.Get <FreeUiManager>().Contexts1.freeMove.GetEntityWithEntityKey(new EntityKey(_id, (int)EEntityType.FreeMove)); if (move != null) { if ("scale" == _field) { if (move.hasFreeData) { } } } return(0); } else { if ("speed" == _field) { var speedVector3D = playerEntity.playerMove.Velocity; speedVector3D.z = 0; return((int)speedVector3D.magnitude); } if ("ping" == _field) { return(PlayerStatus.GetPing((int)_id)); } if (_field == "hp") { return((int)playerEntity.gamePlay.CurHp); } if (_field == "maxHp") { return(playerEntity.gamePlay.MaxHp); } if (_field == "maxSpeed") { return(0); } if (_field == "x") { return((int)playerEntity.position.Value.x); } if (_field == "y") { return((int)playerEntity.position.Value.y); } if (_field == "z") { return((int)playerEntity.position.Value.z); } if (_field == "pitch") { return((int)playerEntity.orientation.Pitch); } if (_field == "yaw") { return((int)playerEntity.orientation.Yaw); } return(0); } }
public override void DoAction(IEventArgs args) { FreeMoveEntity en = args.GameContext.freeMove.CreateEntity(); en.AddEntityKey(new EntityKey(args.GameContext.session.commonSession.EntityIdGenerator.GetNextEntityId(), (short)EEntityType.FreeMove)); en.AddPosition(); en.AddFreeData(FreeUtil.ReplaceVar(name, args), new FreeEntityData(en)); en.freeData.Cat = ""; en.freeData.Value = ""; en.freeData.ScaleX = 1f; en.freeData.ScaleY = 1f; en.freeData.ScaleZ = 1f; if (distance > 0) { en.AddPositionFilter(Core.Components.PositionFilterType.Filter2D, distance); } en.isFlagSyncNonSelf = true; FreeEntityData entityData = (FreeEntityData)en.freeData.FreeData; entityData.move = (IFreeMove)SerializeUtil.Clone(move); entityData.createAction = createAction; entityData.action = action; entityData.name = FreeUtil.ReplaceVar(name, args); entityData.condition = condition; entityData.removeAction = removeAction; entityData.effect = (FreeEffectCreateAction)SerializeUtil.Clone(effect); entityData.width = width; entityData.length = length; entityData.height = height; entityData.deadAction = deadAction; entityData.damageAction = damageAction; entityData.frameAction = (IGameAction)SerializeUtil.Clone(frameAction); entityData.removeCondition = removeCondition; entityData.removedCondition = removedCondition; entityData.hp = hp; if (width > 0 && height > 0 && length > 0) { AssetInfo info = GetAssetInfo(args, effect); if (!string.IsNullOrEmpty(info.AssetName)) { args.GameContext.session.commonSession.AssetManager.LoadAssetAsync( entityData, info, SetGameObject); } } if (skills != null) { entityData.skills = new List <ISkill>(); foreach (ISkill skill in skills) { entityData.skills.Add((ISkill)SerializeUtil.Clone(skill)); } } FreeData fd = GetPlayer(args); if (fd != null) { args.TempUse("creator", fd); } entityData.Start(args); if (fd != null) { args.Resume("creator"); } }