예제 #1
0
 public static void Spawn(int x, int y, GameObject prefab)
 {
     World.Grid grid = World.Instance.GetGrid();
     World.Cell cell = grid.GetCell(x, y);
     if (!cell.IsBlocked)
     {
         //Vector3 position = new Vector3(x, heightOffset, y);
         GameObject spawn = Instantiate <GameObject>(prefab);
         spawn.transform.position = spawn.transform.position;
         SynchronizedActor actor = spawn.GetComponent <SynchronizedActor>();
         if (actor != null)
         {
             Entity entity = null;
             if (actor.tag == "Player")
             {
                 entity = new Player(x, y, EntityStatistics.GetRandomPlayerStats());
             }
             else if (actor.tag == "Enemy")
             {
                 MonsterConfig config = spawn.GetComponent <MonsterConfig>();
                 entity = new Monster(x, y, config.GetStats());
             }
             if (entity != null)
             {
                 actor.InitActor(entity);
             }
         }
     }
 }
예제 #2
0
        //int[] Stat Type Enum
        //int[] Stat Type
        //float[] Stat Values
        public static EntityStatistics FromNetwork(Tuple <int[], int[], string[]> stats)
        {
            EntityStatistics e = new EntityStatistics();

            e.InitializeStatDictionary();             //Creates the Dictionary for us
            for (int i = 0; i < stats.Item1.Length; i++)
            {
                CardPlayerStat stat = null;
                if ((CardPlayerStatDataType)stats.Item2[i] == CardPlayerStatDataType.Int)
                {
                    stat = new CardPlayerStat <int>(int.Parse(stats.Item3[i]), CardPlayerStatDataType.Int);
                }
                else if ((CardPlayerStatDataType)stats.Item2[i] == CardPlayerStatDataType.Float)
                {
                    stat = new CardPlayerStat <float>(float.Parse(stats.Item3[i]), CardPlayerStatDataType.Float);
                }
                else if ((CardPlayerStatDataType)stats.Item2[i] == CardPlayerStatDataType.String)
                {
                    stat = new CardPlayerStat <string>(stats.Item3[i], CardPlayerStatDataType.String);
                }

                if (stat != null)
                {
                    Debug.Log("Adding Stats From network: " + (CardPlayerStatType)stats.Item1[i] + " -> " +
                              stat.GetValue());
                    e.Stats.Add((CardPlayerStatType)stats.Item1[i], stat);
                }
            }

            return(e);
        }
예제 #3
0
    private void OnPlayerStatsChanged()
    {
        EntityStatistics stats = PlayerActor.Stats;

        StatsBar.Instance.SetStat("HP", stats.Health.ToString());
        StatsBar.Instance.SetStat("ENERGY", stats.Energy.ToString());
        StatsBar.Instance.SetStat("ATTACK", String.Format("{0:P0}", stats.Attack));
        StatsBar.Instance.SetStat("SPEED", stats.SpeedString);
    }
예제 #4
0
    public EntityStatistics Clone()
    {
        EntityStatistics res = new EntityStatistics(Name);

        res.Attack   = Attack;
        res.Health   = Health;
        res.MoveTime = MoveTime;
        return(res);
    }
예제 #5
0
    public static EntityStatistics GetRandomPlayerStats()
    {
        EntityStatistics stats = new EntityStatistics("The Astronaut");

        stats.Energy   = Random.Range(90, 140);
        stats.Health   = Random.Range(15, 20);
        stats.Attack   = Random.Range(0.10f, 0.25f);
        stats.MoveTime = Random.Range(8, 12);
        return(stats);
    }
예제 #6
0
    static EntityStatistics()
    {
        MutantWalker = new EntityStatistics("Walker");

        MutantWalker.Attack   = Random.Range(0.25f, 0.40f);
        MutantWalker.Health   = Random.Range(15, 25);
        MutantWalker.MoveTime = Random.Range(11, 13);

        MutantHeavy          = new EntityStatistics("Heavy");
        MutantHeavy.Attack   = Random.Range(0.10f, 0.25f);
        MutantHeavy.Health   = Random.Range(30, 50);
        MutantHeavy.MoveTime = Random.Range(13, 16);

        MutantStalker          = new EntityStatistics("Hunter");
        MutantStalker.Attack   = Random.Range(0.40f, 0.50f);
        MutantStalker.Health   = Random.Range(10, 16);
        MutantStalker.MoveTime = Random.Range(7, 9);
    }
예제 #7
0
        public async Task SimpleProjectionsAsync()
        {
            var transformer = new CustomTransformer();

            await(Sfi.EvictQueriesAsync());
            Sfi.Statistics.Clear();

            const string queryString = "select i.Name, i.Description from AnotherItem i where i.Name='widget'";

            object savedId;

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    var i = new AnotherItem {
                        Name = "widget"
                    };
                    savedId = await(s.SaveAsync(i));
                    await(tx.CommitAsync());
                }

            QueryStatistics  qs = Sfi.Statistics.GetQueryStatistics(queryString);
            EntityStatistics es = Sfi.Statistics.GetEntityStatistics(typeof(AnotherItem).FullName);

            Thread.Sleep(200);

            IList result;

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(0));

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(1));

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).SetResultTransformer(transformer).ListAsync());
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(2), "hit count should go up since the cache contains the result before the possible application of a resulttransformer");

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).SetResultTransformer(transformer).ListAsync());
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(3), "hit count should go up since we are using the same resulttransformer");
            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    result = await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    Assert.That(result.Count, Is.EqualTo(1));
                    var i = await(s.GetAsync <AnotherItem>(savedId));
                    i.Name = "Widget";
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(4));
            Assert.That(qs.CacheMissCount, Is.EqualTo(2));

            Thread.Sleep(200);

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());

                    var i = await(s.GetAsync <AnotherItem>(savedId));
                    Assert.That(i.Name, Is.EqualTo("Widget"));

                    await(s.DeleteAsync(i));
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(4));
            Assert.That(qs.CacheMissCount, Is.EqualTo(3));
            Assert.That(qs.CachePutCount, Is.EqualTo(3));
            Assert.That(qs.ExecutionCount, Is.EqualTo(3));
            Assert.That(es.FetchCount, Is.EqualTo(0));             //check that it was being cached
        }
예제 #8
0
        public async Task QueryCacheInvalidationAsync()
        {
            await(Sfi.EvictQueriesAsync());
            Sfi.Statistics.Clear();

            const string queryString = "from Item i where i.Name='widget'";

            object savedId = await(CreateItemAsync(queryString));

            QueryStatistics  qs = Sfi.Statistics.GetQueryStatistics(queryString);
            EntityStatistics es = Sfi.Statistics.GetEntityStatistics(typeof(Item).FullName);

            Thread.Sleep(200);

            IList result;

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    result = await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    Assert.That(result.Count, Is.EqualTo(1));
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(0));

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    result = await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    Assert.That(result.Count, Is.EqualTo(1));
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(1));
            Assert.That(es.FetchCount, Is.EqualTo(0));

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    result = await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());
                    Assert.That(result.Count, Is.EqualTo(1));
                    Assert.That(NHibernateUtil.IsInitialized(result[0]));
                    var i = (Item)result[0];
                    i.Name = "Widget";
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(2));
            Assert.That(qs.CacheMissCount, Is.EqualTo(2));
            Assert.That(es.FetchCount, Is.EqualTo(0));

            Thread.Sleep(200);

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    await(s.CreateQuery(queryString).SetCacheable(true).ListAsync());

                    var i = await(s.GetAsync <Item>(savedId));
                    Assert.That(i.Name, Is.EqualTo("Widget"));

                    await(s.DeleteAsync(i));
                    await(tx.CommitAsync());
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(2));
            Assert.That(qs.CacheMissCount, Is.EqualTo(3));
            Assert.That(qs.CachePutCount, Is.EqualTo(3));
            Assert.That(qs.ExecutionCount, Is.EqualTo(3));
            Assert.That(es.FetchCount, Is.EqualTo(0));             //check that it was being cached
        }
예제 #9
0
 public void TargetSendStats(NetworkConnection identity, int[] statType, int[] dataType, string[] data)
 {
     Debug.Log("Received Stats");
     Statistics      = CardEntry.FromNetwork(new Tuple <int[], int[], string[]>(statType, dataType, data));
     StatisticsValid = true;
 }
예제 #10
0
        public void SimpleProjections()
        {
            var transformer = new CustomTrasformer();

            sessions.EvictQueries();
            sessions.Statistics.Clear();

            const string queryString = "select i.Name, i.Description from AnotherItem i where i.Name='widget'";

            object savedId;

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    s.CreateQuery(queryString).SetCacheable(true).List();
                    var i = new AnotherItem {
                        Name = "widget"
                    };
                    savedId = s.Save(i);
                    tx.Commit();
                }

            QueryStatistics  qs = sessions.Statistics.GetQueryStatistics(queryString);
            EntityStatistics es = sessions.Statistics.GetEntityStatistics(typeof(AnotherItem).FullName);

            Thread.Sleep(200);

            IList result;

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    s.CreateQuery(queryString).SetCacheable(true).List();
                    tx.Commit();
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(0));

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    s.CreateQuery(queryString).SetCacheable(true).List();
                    tx.Commit();
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(1));

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    s.CreateQuery(queryString).SetCacheable(true).SetResultTransformer(transformer).List();
                    tx.Commit();
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(1), "hit count should not go up since we are adding a resulttransformer");

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    s.CreateQuery(queryString).SetCacheable(true).SetResultTransformer(transformer).List();
                    tx.Commit();
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(2), "hit count should go up since we are using the same resulttransformer");
            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    result = s.CreateQuery(queryString).SetCacheable(true).List();
                    Assert.That(result.Count, Is.EqualTo(1));
                    var i = s.Get <AnotherItem>(savedId);
                    i.Name = "Widget";
                    tx.Commit();
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(3));
            Assert.That(qs.CacheMissCount, Is.EqualTo(3));

            Thread.Sleep(200);

            using (ISession s = OpenSession())
                using (ITransaction tx = s.BeginTransaction())
                {
                    s.CreateQuery(queryString).SetCacheable(true).List();

                    var i = s.Get <AnotherItem>(savedId);
                    Assert.That(i.Name, Is.EqualTo("Widget"));

                    s.Delete(i);
                    tx.Commit();
                }

            Assert.That(qs.CacheHitCount, Is.EqualTo(3));
            Assert.That(qs.CacheMissCount, Is.EqualTo(4));
            Assert.That(qs.CachePutCount, Is.EqualTo(4));
            Assert.That(qs.ExecutionCount, Is.EqualTo(4));
            Assert.That(es.FetchCount, Is.EqualTo(0));             //check that it was being cached
        }
예제 #11
0
 public Player(int x, int y, EntityStatistics stats) : base(x, y)
 {
     Stats = stats;
     GenerateHeatMap(x, y);
 }
예제 #12
0
 public Monster(int x, int y, EntityStatistics stats) : base(x, y)
 {
     Stats = stats;
 }