public static GameAction.ExecutionContext GetActionContext(ISimWorldReadAccessor accessor, Entity actionInstigator, Entity actionEntity, NativeArray <Entity> targets) { Entity firstPhysicalInstigator = actionInstigator; if (accessor.TryGetComponent(actionInstigator, out FirstInstigator firstInstigatorComponent)) { firstPhysicalInstigator = firstInstigatorComponent.Value; } Entity lastPhysicalInstigator = firstPhysicalInstigator; if (lastPhysicalInstigator != actionInstigator && accessor.HasComponent <FixTranslation>(actionInstigator)) { lastPhysicalInstigator = actionInstigator; } GameAction.ExecutionContext useContext = new GameAction.ExecutionContext() { Action = actionEntity, FirstPhysicalInstigator = firstPhysicalInstigator, LastPhysicalInstigator = lastPhysicalInstigator, ActionInstigatorActor = actionInstigator, Targets = targets, }; return(useContext); }
public static GameAction.ExecutionContext GetActionContext(ISimWorldReadAccessor accessor, Entity actionInstigator, Entity actionEntity, Entity target) { var targets = new NativeArray <Entity>(1, Allocator.Temp); targets[0] = target; return(GetActionContext(accessor, actionInstigator, actionEntity, targets)); }
public static bool CanUseItem(ISimWorldReadAccessor accessor, Entity actor, Entity item, out ItemUnavailablityReason debugReason) { int apCost = 0; if (accessor.TryGetComponent(item, out ItemSettingAPCost apCostComponent)) { apCost = apCostComponent.Value; } if (apCost > 0) { if (!accessor.TryGetComponent(actor, out ActionPoints ap)) { debugReason = ItemUnavailablityReason.NotEnoughtAP; return(false); } if (ap <= (fix)0) { debugReason = ItemUnavailablityReason.NotEnoughtAP; return(false); } } // is in cooldown? if (accessor.TryGetComponent(item, out ItemCooldownTimeCounter timeCooldown) && timeCooldown.Value > 0) { debugReason = ItemUnavailablityReason.InCooldown; return(false); } debugReason = ItemUnavailablityReason.None; return(true); }
protected override ExecutionContract GetExecutionContract(ISimWorldReadAccessor accessor, ref Settings settings) { return(new ExecutionContract( new GameActionParameterPosition.Description() { MaxRangeFromInstigator = 9999, })); }
protected override ExecutionContract GetExecutionContract(ISimWorldReadAccessor accessor, ref Settings settings) { return(new ExecutionContract( new GameActionParameterVector.Description() { SpeedMin = settings.SpeedMin, SpeedMax = settings.SpeedMax })); }
public static fix GetActorRadius(ISimWorldReadAccessor accessor, Entity projectileInstance) { if (accessor.TryGetComponent(projectileInstance, out PhysicsColliderBlob colliderBlob) && colliderBlob.Collider.IsCreated) { return((fix)colliderBlob.Collider.Value.Radius); } else { return((fix)0.5); } }
protected override ExecutionContract GetExecutionContract(ISimWorldReadAccessor accessor, ref Settings settings) { GameActionParameterPosition.Description tileParam = new GameActionParameterPosition.Description() { MaxRangeFromInstigator = settings.Range }; GameActionParameterSuccessRate.Description successParam = new GameActionParameterSuccessRate.Description(); return(new ExecutionContract(tileParam, successParam)); }
public static NativeList <Entity> GetEntitiesFromTeam(ISimWorldReadAccessor accessor, int teamID) { NativeList <Entity> entitiesFromTeam = new NativeList <Entity>(Allocator.Temp); accessor.Entities.ForEach((Entity entity, ref Team team) => { if (team.Value == teamID) { entitiesFromTeam.Add(entity); } }); return(entitiesFromTeam); }
public static Entity GetTileEntity(ISimWorldReadAccessor accessor, int2 gridPosition) { GridInfo gridRect = accessor.GetSingleton <GridInfo>(); if (!gridRect.Contains(gridPosition)) { return(Entity.Null); } int2 offset = gridPosition - gridRect.TileMin; int index = offset.x + (offset.y * gridRect.Width); var allTiles = accessor.GetBufferReadOnly <GridTileReference>(accessor.GetSingletonEntity <GridInfo>()); return(allTiles[index].Tile); }
public static Entity FindPlayerEntity(ISimWorldReadAccessor readAccessor, PersistentId simPlayerId) { Entity result = Entity.Null; readAccessor.Entities .WithAll <PlayerTag>() .ForEach((Entity controller, ref PersistentId id) => { if (id.Value == simPlayerId.Value) { result = controller; return; } }); return(result); }
public static GameAction GetGameAction(ISimWorldReadAccessor simWorld, Entity item) { if (simWorld == null) { return(null); } if (!simWorld.Exists(item)) { return(null); } if (!simWorld.TryGetComponent(item, out GameActionId gameActionId)) { return(null); } return(GameActionBank.GetAction(gameActionId)); }
public static Entity FindFirstItemWithGameAction(ISimWorldReadAccessor accessor, Entity pawn, GameActionId gameActionId, out int itemIndex) { if (accessor.TryGetBufferReadOnly(pawn, out DynamicBuffer <InventoryItemReference> inventory)) { for (int i = 0; i < inventory.Length; i++) { if (accessor.TryGetComponent(inventory[i].ItemEntity, out GameActionId candidateGameActionId)) { if (candidateGameActionId.Equals(gameActionId)) { itemIndex = i; return(inventory[i].ItemEntity); } } } } itemIndex = -1; return(Entity.Null); }
protected override ExecutionContract GetExecutionContract(ISimWorldReadAccessor accessor, ref Settings settings) { return(new ExecutionContract()); }
public static bool IsInRange(ISimWorldReadAccessor accessor, Entity entityA, Entity entityB, fix rangeMax) { return(fixMath.distancesq( accessor.GetComponent <FixTranslation>(entityB), accessor.GetComponent <FixTranslation>(entityA)) < rangeMax * rangeMax); }
public static T GetGameAction <T>(ISimWorldReadAccessor simWorld, Entity item) where T : GameAction { return(GetGameAction(simWorld, item) as T); }
public static TileWorld GetTileWorld(ISimWorldReadAccessor accessor) { return(accessor.GetExistingSystem <CreateTileWorldSystem>().GetTileWorld()); }
public static GameAction.ExecutionContext GetActionContext(ISimWorldReadAccessor accessor, Entity actionInstigator, Entity actionEntity) { return(GetActionContext(accessor, actionInstigator, actionEntity, targets: default)); }
protected override ExecutionContract GetExecutionContract(ISimWorldReadAccessor accessor, ref Settings settings) { return(new ExecutionContract()); // n.b. maybe entity or position in the future ? }
public static Entity FindFirstItemWithGameAction(ISimWorldReadAccessor accessor, Entity pawn, GameActionId gameActionId) { return(FindFirstItemWithGameAction(accessor, pawn, gameActionId, out _)); }
public static Entity FindFirstItemWithGameAction <T>(ISimWorldReadAccessor accessor, Entity pawn, out int itemIndex) where T : GameAction { return(FindFirstItemWithGameAction(accessor, pawn, GameActionBank.GetActionId <T>(), out itemIndex)); }
public static fix3 GetFloorPlaneNormal(ISimWorldReadAccessor accessor) { return(fix3(0, 0, -1)); }
public static bool CanUseItem(ISimWorldReadAccessor accessor, Entity actor, Entity item) { return(CanUseItem(accessor, actor, item, out _)); }
public static bool IsTileValid(ISimWorldReadAccessor accessor, int2 tile) { return(accessor.GetExistingSystem <CreateTileWorldSystem>().GridInfo.Contains(tile)); }