Exemple #1
0
    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);
    }
Exemple #2
0
    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));
    }
Exemple #8
0
    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);
    }
Exemple #9
0
    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));
        }
Exemple #12
0
    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);
 }
Exemple #16
0
 public static TileWorld GetTileWorld(ISimWorldReadAccessor accessor)
 {
     return(accessor.GetExistingSystem <CreateTileWorldSystem>().GetTileWorld());
 }
Exemple #17
0
 public static GameAction.ExecutionContext GetActionContext(ISimWorldReadAccessor accessor, Entity actionInstigator, Entity actionEntity)
 {
     return(GetActionContext(accessor, actionInstigator, actionEntity, targets: default));
 }
Exemple #18
0
 protected override ExecutionContract GetExecutionContract(ISimWorldReadAccessor accessor, ref Settings settings)
 {
     return(new ExecutionContract());
     // n.b. maybe entity or position in the future ?
 }
Exemple #19
0
 public static Entity FindFirstItemWithGameAction(ISimWorldReadAccessor accessor, Entity pawn, GameActionId gameActionId)
 {
     return(FindFirstItemWithGameAction(accessor, pawn, gameActionId, out _));
 }
Exemple #20
0
 public static Entity FindFirstItemWithGameAction <T>(ISimWorldReadAccessor accessor, Entity pawn, out int itemIndex)
     where T : GameAction
 {
     return(FindFirstItemWithGameAction(accessor, pawn, GameActionBank.GetActionId <T>(), out itemIndex));
 }
Exemple #21
0
 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 _));
 }
Exemple #23
0
 public static bool IsTileValid(ISimWorldReadAccessor accessor, int2 tile)
 {
     return(accessor.GetExistingSystem <CreateTileWorldSystem>().GridInfo.Contains(tile));
 }