コード例 #1
0
    static ScenarioState RandomizeItemStartingCoordinates(ScenarioState state, List <ItemData> items, Vector2Int exit, int boardWidth)
    {
        for (int i = 0; i < items.Count; i++)
        {
            ItemData item = items[i];

            Vector2Int newPosition = GenerateRandomVector2IntInBounds(boardWidth);
            while (state.IsTileOccupied(newPosition) || state.DoesPositionContainItem(newPosition) || exit == newPosition)
            {
                newPosition = GenerateRandomVector2IntInBounds(boardWidth);
            }

            item.Position = newPosition;
        }

        return(state);
    }
コード例 #2
0
    /// <summary>
    /// Only for use in scenario.
    /// </summary>
    public static void DealDamage(this EntityData entity, int amount, ScenarioState scenarioState)
    {
        int newHealth = entity.CurrentHealth - amount;

        entity.SetHealth(newHealth);

        if (entity.CheckThat(IsDead))
        {
            scenarioState.enemies.RemoveAll(e => e == entity);

            TreasureData itemToSpawn     = entity.dropItem as TreasureData;
            Vector2Int   positionToSpawn = entity.Position;

            if (itemToSpawn != null && !scenarioState.DoesPositionContainItem(positionToSpawn))
            {
                TreasureData itemInstance = UnityEngine.Object.Instantiate(itemToSpawn);
                itemInstance.Position = positionToSpawn;
                scenarioState.items.Add(itemInstance);
            }
        }
    }
コード例 #3
0
 public static bool DoesPositionContainItemWhere(this ScenarioState state, Vector2Int position, Predicate <ItemData> predicate)
 {
     return(state.DoesPositionContainItem(position) &&
            predicate(state.GetItemInPosition(position)));
 }