예제 #1
0
 public void GameAdvance()
 {
     if (AmountUntriggeredPlanets() > 0)
     {
         List <Planet> untriggered = GetFinishedUntriggeredPlanets();
         int           randomIndex = Random.Range(0, untriggered.Count - 1);
         if (untriggered.Count > 1)
         {
             while (untriggered[randomIndex] == PlayerController.instance.GetCurrentPlanet())
             {
                 randomIndex = Random.Range(0, untriggered.Count);
             }
         }
         if (gameState == 2)
         {
             nextEvent = new SpaceEvent(SpaceEvent.SpaceEventType.Asteroid, untriggered[randomIndex], new Vector3(2 * untriggered[randomIndex].transform.localScale.x, 20, 0));
             untriggered[randomIndex].TriggerEvent();
         }
         else if (gameState == 4)
         {
             nextEvent = new SpaceEvent(SpaceEvent.SpaceEventType.SolarFlare, untriggered[randomIndex], untriggered[randomIndex].transform.position);
             untriggered[randomIndex].TriggerEvent();
         }
         else if (gameState == 5)
         {
             nextEvent = new SpaceEvent(SpaceEvent.SpaceEventType.Comet, untriggered[randomIndex], new Vector3(2 * untriggered[randomIndex].transform.localScale.x, 20, 0));
             untriggered[randomIndex].TriggerEvent();
         }
         if (gameState == 6)
         {
             nextEvent = new SpaceEvent(SpaceEvent.SpaceEventType.Asteroid, untriggered[randomIndex], new Vector3(2 * untriggered[randomIndex].transform.localScale.x, 20, 0));
             untriggered[randomIndex].TriggerEvent();
         }
     }
 }
예제 #2
0
 public void CheckGameFinished()
 {
     if (AmountPlanetsFinished() >= AmountPlanets())
     {
         nextEvent    = new SpaceEvent(SpaceEvent.SpaceEventType.Supernova, planets[0], Vector3.zero);
         gamefinished = true;
     }
 }
예제 #3
0
 public void CheckEvents()
 {
     if (nextEvent == null)
     {
     }
     else if (nextEvent.type == SpaceEvent.SpaceEventType.Asteroid)
     {
         Vector3    asteroidLocation = nextEvent.target.transform.position + nextEvent.relevantVector;
         GameObject newAsteroid      = Instantiate(asteroidPrefab);
         newAsteroid.transform.position = asteroidLocation;
         newAsteroid.GetComponent <Asteroid>().SetTarget(nextEvent.target.gameObject);
         UIController.instance.SetScreen(nextEvent.type, nextEvent.target);
         newAsteroid.GetComponent <Asteroid>().isEvent = true;
         PlayerController.instance.SetMarker(newAsteroid);
         PlaySFX(alarmSFX);
     }
     else if (nextEvent.type == SpaceEvent.SpaceEventType.SolarFlare)
     {
         flareShot.GetComponent <FlareShot>().SetTarget(nextEvent.target);
         flareShot.transform.LookAt(nextEvent.relevantVector);
         flareShot.Play();
         flareSphere.Play();
         flareShot.GetComponent <Animator>().Play("FlareShot");
         UIController.instance.SetScreen(nextEvent.type, nextEvent.target);
         PlaySFX(alarmSFX);
     }
     else if (nextEvent.type == SpaceEvent.SpaceEventType.Comet)
     {
         Vector3    asteroidLocation = nextEvent.target.transform.position + nextEvent.relevantVector;
         GameObject newAsteroid      = Instantiate(cometPrefab);
         newAsteroid.transform.position = asteroidLocation;
         newAsteroid.GetComponent <Asteroid>().SetTarget(nextEvent.target.gameObject);
         UIController.instance.SetScreen(nextEvent.type, nextEvent.target);
         newAsteroid.GetComponent <Asteroid>().isEvent = true;
         PlayerController.instance.SetMarker(newAsteroid);
         PlaySFX(alarmSFX);
     }
     else if (nextEvent.type == SpaceEvent.SpaceEventType.Supernova)
     {
         music.Stop();
         music.clip = nightmare;
         music.loop = false;
         music.Play();
         percent = 100 * ((float)AmountPlanetsFinished() + AmountMoonsFinished()) / ((float)AmountPlanets() + AmountMoons());
         PlayerController.instance.FinalSequence();
         UIController.instance.FinalSequence();
         sun.Play("Supernova");
         flareSphere.Play();
         flareShot.Play();
         gamefinished = true;
     }
     nextEvent = null;
 }
        public void DateParts()
        {
            // Arrange
            var Now = DateTime.Now;
            var SE  = new SpaceEvent()
            {
                Date = Now
            };

            // Assert
            Assert.Equal(Now.Year, SE.Year);
            Assert.Equal(Now.Month, SE.Month);
            Assert.Equal(Now.Day, SE.Day);
        }
예제 #5
0
        public void SaveSpaceEvent()
        {
            // Arrange
            var SE = new SpaceEvent()
            {
                Name    = "Test Event",
                Country = "United States",
                Date    = DateTime.Now
            };

            // Act
            DB.SaveSpaceEvent(SE);

            // Assert
        }
        public void ConvenienceDate()
        {
            // Arrange
            var TheDate = new DateTime(1977, 5, 19);
            var Now     = DateTime.Now;
            var SE      = new SpaceEvent()
            {
                Date = TheDate
            };

            // Act
            var ReturnedDate = SE.ConvenienceDate;

            // Assert
            Assert.Equal(Now.Year, ReturnedDate.Year);
            Assert.Equal(TheDate.Month, ReturnedDate.Month);
            Assert.Equal(TheDate.Day, ReturnedDate.Day);
        }
예제 #7
0
        public void SpaceEventGroup()
        {
            //Given
            var SE1 = new SpaceEvent()
            {
                Name    = "Test Event 1",
                Country = "United States",
                Date    = new DateTime(1969, 1, 1)
            };
            var SE2 = new SpaceEvent()
            {
                Name    = "Test Event 2",
                Country = "United States",
                Date    = new DateTime(1980, 5, 1)
            };
            var SE2_2 = new SpaceEvent()
            {
                Name    = "Test Event 2_2",
                Country = "United States",
                Date    = new DateTime(1981, 5, 1)
            };
            var SE3 = new SpaceEvent()
            {
                Name    = "Test Event 3",
                Country = "United States",
                Date    = new DateTime(2000, 12, 1)
            };

            DB.SaveSpaceEvent(SE1);
            DB.SaveSpaceEvent(SE2);
            DB.SaveSpaceEvent(SE2_2);
            DB.SaveSpaceEvent(SE3);

            //When
            var SEGroup = DB.GetGroupForDate(new DateTime(2019, 5, 1));

            //Then
            Assert.True(SEGroup.CurrentCount > 1);
            Assert.NotNull(SEGroup.Previous);
            Assert.NotNull(SEGroup.Next);
        }
예제 #8
0
    IEnumerator SpaceEffect()
    {
        List <int> effected = new List <int>();

        while (true)
        {
            if (effectTimeLock < Time.time)
            {
                effectTimeLock = Time.time + 30;
                currentEvent.Clear();
                for (int i = 1; i < SoulLevel; i++)
                {
                    SpaceEvent se = (SpaceEvent)Random.Range(0, (int)SpaceEvent.Count);
                    currentEvent.Add(se);
                }
            }
            int effectMons = Random.Range(0, monsters.Count + 1);

            for (int i = 0; i < currentEvent.Count; i++)
            {
                if (Random.Range(0, 100) <= 5)
                {
                    GetEvent(hero, currentEvent[i]);
                }
                for (int j = 0; j < effectMons; j++)
                {
                    int mon = Random.Range(0, monsters.Count);
                    if (effected.Contains(mon))
                    {
                        continue;
                    }
                    GetEvent(monsters[j], currentEvent[i]);
                    effected.Add(mon);
                }
            }
            effected.Clear();
            //currentEvent
            yield return(new WaitForSeconds(5f));
        }
    }
예제 #9
0
        public ISpaceEventGroup GetGroupForDate(DateTime forDate)
        {
            var SE1 = new SpaceEvent()
            {
                Name    = "Test Event 1",
                Country = "United States",
                Date    = new DateTime(1969, 1, 1)
            };
            var SE2 = new SpaceEvent()
            {
                Name    = "Test Event 2",
                Country = "United States",
                Date    = new DateTime(1980, 5, 1)
            };
            var SE2_2 = new SpaceEvent()
            {
                Name    = "Test Event 2_2",
                Country = "United States",
                Date    = new DateTime(1981, 5, 1)
            };
            var SE3 = new SpaceEvent()
            {
                Name    = "Test Event 3",
                Country = "United States",
                Date    = new DateTime(2000, 12, 1)
            };

            var Result = new SpaceEventGroup();

            Result.Previous = SE1;
            Result.Current.Add(SE2);
            Result.Current.Add(SE2_2);
            Result.Next = SE3;

            return(Result);
        }
예제 #10
0
    private void GetEvent(Attacker atk, SpaceEvent se)
    {
        switch (se)
        {
        // hp-1% hp-100/s
        case SpaceEvent.Hot:
            atk.healPoint.AddValue(-100);
            atk.healPoint.AddMaxValue(-(int)(atk.healPoint.MaxValue * 0.01));
            break;

        // atk-2 def-2 speed-2
        case SpaceEvent.Disease:
            atk.attack.AddMaxValue(-2);
            atk.deffence.AddMaxValue(-2);
            atk.speed.AddMaxValue(-2);
            break;

        // mana-1% mana-50/s
        case SpaceEvent.Cold:
            atk.manaPoint.AddValue(-50);
            atk.manaPoint.AddMaxValue(-(int)(atk.healPoint.MaxValue * 0.01));
            break;

        // atk-2 def-2
        case SpaceEvent.Weak:
            atk.attack.AddMaxValue(-1);
            atk.deffence.AddMaxValue(-1);
            break;

        // def - 2 speed-2
        case SpaceEvent.Freeze:
            atk.deffence.AddMaxValue(-1);
            atk.speed.AddMaxValue(-1);
            break;

        // speed - 3
        case SpaceEvent.Wet:
            atk.speed.AddMaxValue(-2);
            break;

        // atk+1
        case SpaceEvent.Fanaticism:
            atk.attack.AddMaxValue(2);
            break;

        // def+1
        case SpaceEvent.Tight:
            atk.deffence.AddMaxValue(2);
            break;

        // speed+1
        case SpaceEvent.Attension:
            atk.speed.AddMaxValue(1);
            break;

        // hp+1% hp+100
        case SpaceEvent.Relax:
            atk.healPoint.AddValue(100);
            atk.healPoint.AddMaxValue((int)(atk.healPoint.MaxValue * 0.01));
            break;

        // mp+1% mp+50
        case SpaceEvent.Meditation:
            atk.manaPoint.AddValue(50);
            atk.manaPoint.AddMaxValue((int)(atk.healPoint.MaxValue * 0.01));
            break;

        // luck-1
        case SpaceEvent.Unluck:
            atk.luck.AddMaxValue(-1);
            break;

        // luck+1
        case SpaceEvent.Lucky:
            atk.luck.AddMaxValue(1);
            break;

        case SpaceEvent.Count:
        default:
            break;
        }
        atk.GetComponent <ChracterBase>().ShowHUDText("I Got " + se.ToString(), Color.yellow, 1f);
    }
예제 #11
0
 public void SaveSpaceEvent(SpaceEvent save)
 {
 }
예제 #12
0
 public void SaveSpaceEvent(SpaceEvent save) => Context.SpaceEvents.ReplaceOne(Filter(save._id.ToString()), save, Options);