Пример #1
0
        private void CalculateResult()
        {
            StopSize        = Math.Abs(OpenLevel - StopLevel);
            RiskRewardRatio = Math.Abs(Target - StrategyEntryLevel) / StopSize;

            CloseLevel.IfExistsThen(x =>
            {
                ResultInR    = Option.Some(Math.Abs(x - OpenLevel) / StopSize);
                PointsProfit = Direction == TradeDirection.Long
                    ? Option.Some(x - OpenLevel)
                    : Option.Some(OpenLevel - x);
            });

            MaximumAdverseExcursionPoints.IfExistsThen(x =>
            {
                MaximumAdverseExcursionPercentageOfStop = Option.Some(x / StopSize);
            });

            MaximumFavourableExcursionPoints.IfExistsThen(x =>
            {
                PointsProfit.IfExistsThen(y =>
                {
                    if (y > 0)
                    {
                        PointsProfitPercentageOfMaximumFavourableExcursion = Option.Some(y / x);
                        UnrealisedProfitPoints = Option.Some(x - y);
                    }
                    else
                    {
                        UnrealisedProfitPoints = Option.Some(x);
                    }

                    UnrealisedProfitPoints.IfExistsThen(z =>
                    {
                        UnrealisedProfitCash = Option.Some(z * Size);
                    });
                });
            });

            PointsProfit.IfExistsThen(x => { CashProfit = Option.Some(Size * x); });
        }
    public void randomizeLevel()
    {
        TileCounter = 0;
        if (TileQuantity > MapDemensionsX * MapDemensionsY)
        {
            TileQuantity = MapDemensionsX * MapDemensionsY;
        }
        Shuffle(TilePallette);

        int x = Random.Range(0, MapDemensionsX),
            y = Random.Range(0, MapDemensionsY);


        recursiveTilePlacement(x, y);

        while (!FillMap && TileCounter < TileQuantity)
        {
            x = Random.Range(0, MapDemensionsX);
            y = Random.Range(0, MapDemensionsY);
            if (Map[y][x] != null)
            {
                recursiveTilePlacement(x - 1, y);
                recursiveTilePlacement(x + 1, y);
                recursiveTilePlacement(x, y - 1);
                recursiveTilePlacement(x, y + 1);
            }
        }


        //add level doors to the data structure so it's easier to check and see if players are
        //near them in game
        doorManager.SetDoors(PlacedTileList);



        //go through the placed tiles and see where all of the
        //player spawners are.
        int Spawners = 0;

        foreach (GameObject g in PlacedTileList)
        {
            Spawners += g.GetComponent <TileInformation>().PlayerSpawners.Length;
        }
        PlayerSpawners = new PlayerSpawner[Spawners];
        //create a list of available player spawners
        Spawners = 0;
        foreach (GameObject g in PlacedTileList)
        {
            foreach (PlayerSpawner p in g.GetComponent <TileInformation>().PlayerSpawners)
            {
                PlayerSpawners[Spawners++] = p;
            }
        }
        //Shuffle them and place players in the first 4
        //loop back around if there are less than 4
        Shuffle(PlayerSpawners);
        Spawners = 0;
        foreach (Transform child in PlayerArray.transform)
        {
            child.position = PlayerSpawners[(Spawners++ % PlayerSpawners.Length)].gameObject.transform.position;
        }



        //go through the placed tiles and see where all of the
        //item spawners are.
        Spawners = 0;
        foreach (GameObject g in PlacedTileList)
        {
            Spawners += g.GetComponent <TileInformation>().ItemSpawners.Length;
        }
        ItemSpawners = new ItemSpawner[Spawners];
        //create a list of available item spawners
        Spawners = 0;
        foreach (GameObject g in PlacedTileList)
        {
            foreach (ItemSpawner i in g.GetComponent <TileInformation>().ItemSpawners)
            {
                ItemSpawners[Spawners++] = i;
            }
        }
        //Shuffle them and place items in the first N
        Shuffle(ItemSpawners);
        Spawners    = 0;
        PlacedItems = new GameObject[itemQuantity];
        for (int i = 0; i < itemQuantity; ++i)
        {
            GameObject tmp = Instantiate(ItemPallette[Random.Range(0, ItemPallette.Length)]);
            tmp.transform.position = ItemSpawners[(Spawners % ItemSpawners.Length)].gameObject.transform.position;
            PlacedItems[Spawners]  = tmp;
            Spawners++;
            //print("placed item at " + tmp.transform.position);
        }

        //setup the level shrinking object

        closer = new CloseLevel(Map, Any, CloseRoomXManyFrames, WarnForXManyFrames, LeaveRoomsOpen);
    }
Пример #3
0
 public UnityLog(bool enable, CloseLevel level)
 {
     Enable     = enable;
     CloseLevel = level;
 }