Example #1
0
 internal static GameplayDraft ParallelDangerLane(GameplayDraft current)
 {
     if (current.Has(GameplayDraft.Tree))
     {
         if (current.Has(GameplayDraft.SafeLane2))
         {
             return(GameplayDraft.DangerLane1);
         }
         else
         {
             return(dangerlanes[EndlessLevelGenerator.random.Next(0, 2)]);
         }
     }
     else if (current.Has(GameplayDraft.Eagle) || current.Has(GameplayDraft.House))
     {
         if (current.Has(GameplayDraft.SafeLane3))
         {
             return(dangerlanes[EndlessLevelGenerator.random.Next(0, 2)]);
         }
         else if (current.Has(GameplayDraft.SafeLane2))
         {
             return(dangerlanes[EndlessLevelGenerator.random.Next(0, 2) == 0 ? 0 : 2]);
         }
         else
         {
             return(dangerlanes[EndlessLevelGenerator.random.Next(1, 3)]);
         }
     }
     else
     {
         return(GameplayDraft.Empty);
     }
 }
Example #2
0
        void BuildIt(int blockNumber)
        {
            build = new List <GameplayDraft>();

            GameplayDraft current = GameplayDraft.Empty;

            build.Add(current);
            for (int i = 1; i < 3 + blockNumber * 2; i++)
            {
                int phase = EndlessLevelGenerator.random.Next(0, 10);
                if (phase < 2)
                {
                    current = GameplayDraft.Empty | DraftBuilder.RandomDanger(false);
                }
                else if (phase < 5)
                {
                    current = GameplayDraft.Tree | DraftBuilder.RandomDanger(true);
                }
                else
                {
                    current = GameplayDraft.House | DraftBuilder.RandomDanger(false);
                }
                build.Add(current);
            }

            //add lanes to build
            int currentIndex = 1;

            build[0] |= DraftBuilder.StartSafeLane();
            while (currentIndex < build.Count)
            {
                //continue a lane to a neighbor lane
                build[currentIndex] |= DraftBuilder.ContinueSafeLane(build[currentIndex - 1], build[currentIndex]);
                //build[currentIndex] |= DraftBuilder.ParallelDangerLane(build[currentIndex]);
                currentIndex++;
            }
        }
Example #3
0
 internal static GameplayDraft ContinueSafeLane(GameplayDraft before, GameplayDraft current)
 {
     return(transition[before.SafeToIndex(), current.DangerToIndex()]);
 }
Example #4
0
        internal Chunk(Chunk prev, GameplayDraft draft, District district)
        {
            //set start x
            if (prev == null)
            {
                _startX = 0;
            }
            else
            {
                _startX = prev._startX + prev.Width;
            }

            //set other members
            _draft     = draft;
            _mainLanes = (Lanes)(draft & GameplayDraft.SafeLanes);
            _district  = district;

            //set cells
            _cells = new BaseObject[4];
            if (draft.Has(GameplayDraft.Tree))
            {
                //select variation
                bool large     = draft.Has(GameplayDraft.DangerLane2);
                int  variation = EndlessLevelGenerator.random.Next();

                //add a tree
                _cells[0] = new Tree(_startX, large, variation);
                //move pointer forward
                Width += 2f;

                //add extra eagle
                if (draft.Has(GameplayDraft.DangerLane3))
                {
                    _cells[3] = new Eagle(_startX + Width, 3);
                    //move pointer forward
                    Width += 2f;
                }
            }
            if (draft.Has(GameplayDraft.House))
            {
                //select variation
                int hIndex     = EndlessLevelGenerator.random.Next(0, _district.Houses.Length);
                var hPrototype = _district.Houses[hIndex % _district.Houses.Length];
                var house      = hPrototype.CloneAt(_startX + Width);

                //add a house
                _cells[0] = house;
                //move pointer forward
                Width += house.Width;


                //add cats or eagles
                //if (draft.Has(GameplayDraft.DangerLane1) && hPrototype.CatSignature.Has(Lanes.Lane1))
                //{
                //	//add cat on first floor
                //	house.CatSignature |= Lanes.Lane1;
                //	house._cats[0] = hPrototype._cats[0].Clone();
                //}
                //else if (draft.Has(GameplayDraft.DangerLane2) && hPrototype.CatSignature.Has(Lanes.Lane2))
                //{
                //	//add cat on second floor
                //	house.CatSignature |= Lanes.Lane2;
                //	house._cats[1] = hPrototype._cats[1].Clone();
                //}
                //else if (draft.Has(GameplayDraft.DangerLane3) && hPrototype.CatSignature.Has(Lanes.Lane3))
                //{
                //	//add cat on third floor
                //	house.CatSignature |= Lanes.Lane3;
                //	house._cats[2] = hPrototype._cats[2].Clone();
                //}
                //else
                //{
                //add eagle instead of cat
                if (EndlessLevelGenerator.random.Next(0, 2) == 0)
                {
                    _cells[2] = new Eagle(_startX, 2);
                }
                else
                {
                    _cells[3] = new Eagle(_startX, 3);
                }
                //}
            }
        }
Example #5
0
 /// <summary>
 /// returns whether the enum source value contains given value
 /// </summary>
 /// <param name="src">enum source value</param>
 /// <param name="cmp">given value</param>
 /// <returns></returns>
 internal static bool Has(this GameplayDraft src, GameplayDraft cmp)
 {
     return((src & cmp) == cmp);
 }
Example #6
0
 internal static int DangerToIndex(this GameplayDraft draft)
 {
     return((int)(draft & GameplayDraft.DangerLanes) >> 4);
 }
Example #7
0
 internal static int SafeToIndex(this GameplayDraft draft)
 {
     return((int)(draft & GameplayDraft.SafeLanes));
 }