コード例 #1
0
 /// <summary>
 /// Initialise l'évènement.
 /// </summary>
 public override void Initialize()
 {
     m_destroyed    = true;
     m_team1Timer   = true;
     m_team2Timer   = true;
     m_teamOwner    = 0;
     m_lastKiller   = null;
     m_respawnTimer = 0; // GameServer.GetScene().Constants.Events.MonsterCamp.RespawnTimer;
 }
コード例 #2
0
ファイル: EventCamp.cs プロジェクト: Scriptopathe/codinsa2015
 /// <summary>
 /// Initialise l'évènement.
 /// </summary>
 public override void Initialize()
 {
     m_destroyed       = true;
     m_team1Timer      = true;
     m_team2Timer      = true;
     m_teamOwner       = 0;
     m_monsters        = new List <Entities.EntityCampMonster>();
     m_lastKiller      = null;
     m_ViruspawnOffset = new Vector2(0, 2);
     m_respawnTimer    = 0; // GameServer.GetScene().Constants.Events.MonsterCamp.RespawnTimer;
 }
コード例 #3
0
        /// <summary>
        /// Mets à jour l'évènement.
        /// </summary>
        public override void Update(GameTime time)
        {
            // Si le camp n'est pas détruit : on attend qu'il le soit.
            if (!m_destroyed)
            {
                // Si tous les monstres du camp sont tués, on donne l'ownership du camp
                bool allDead = m_miniboss.IsDead;

                if (allDead)
                {
                    if (m_lastKiller == null)
                    {
                        throw new Exception("Problème ?");
                    }

                    m_teamOwner = m_lastKiller.Type & Entities.EntityType.Teams;

                    // Distribution du timer à la team qui a tué le camp.
                    if (m_teamOwner == Entities.EntityType.Team1)
                    {
                        m_team1Timer = true;
                    }
                    else if (m_teamOwner == Entities.EntityType.Team2)
                    {
                        m_team2Timer = true;
                    }

                    // Attribution de la récompense au tueur
                    m_lastKiller.PA += GameServer.GetScene().Constants.Events.RouterCamp.Reward;

                    // Distribution du timer aux équipes ayant la vision.
                    m_team1Timer  |= GameServer.GetMap().Vision.HasVision(Entities.EntityType.Team1, m_position);
                    m_team2Timer  |= GameServer.GetMap().Vision.HasVision(Entities.EntityType.Team2, m_position);
                    m_respawnTimer = GameServer.GetScene().Constants.Events.RouterCamp.RespawnTimer;
                    m_destroyed    = true;
                    SpawnWard();
                }
            }
            else
            {
                // Respawn du camp si le timer expire.
                m_respawnTimer -= (float)time.ElapsedGameTime.TotalSeconds;
                if (m_respawnTimer <= 0)
                {
                    if (m_ward != null)
                    {
                        m_ward.Die();
                    }
                    SpawnCamp();
                    m_teamOwner = 0;
                    m_destroyed = false;
                }
            }
        }
コード例 #4
0
        public async Task AddLinks <T>(
            string sourceId,
            Entities.EntityType sourceType,
            Entities.LinkType linkType,
            string partitionId,
            IEnumerable <T> links) where T : Entities.Entry
        {
            Guard.AgainstNullOrWhitespace(nameof(sourceId), sourceId);
            Guard.AgainstNullOrWhitespace(nameof(partitionId), partitionId);

            await this.EnsureInitialized();

            string collectionLink = UriFactory.CreateDocumentCollectionUri(this.databaseName, this.collectionName).ToString();

            Entities.LinksCollection <T> result = this
                                                  .client
                                                  .CreateDocumentQuery <Entities.DefaultLinksCollection <T> >(
                collectionLink,
                new FeedOptions()
            {
                PartitionKey = new PartitionKey(partitionId)
            })
                                                  .Where(item => item.SourceId == sourceId && item.LinkType == linkType && item.SourceType == sourceType && item.IsFull == false)
                                                  .ToList()
                                                  .FirstOrDefault();

            if (result == null)
            {
                result = Entities.LinksCollection <T> .Create <T>(sourceId, partitionId, sourceType, linkType, links);

                await this.Create(result);

                return;
            }

            foreach (T link in links)
            {
                result.TargetEntities.Add(link);
            }

            await this.Update(result);

            // TODO: Check if the current page collection has exceeded collection size and create a new collection accordingly.
        }
コード例 #5
0
        public async Task RemoveLink <T>(
            string sourceId,
            Entities.EntityType sourceType,
            Entities.LinkType linkType,
            string partitionId,
            T link) where T : Entities.Entry
        {
            Guard.AgainstNullOrWhitespace(nameof(sourceId), sourceId);
            Guard.AgainstNullOrWhitespace(nameof(partitionId), partitionId);

            await this.EnsureInitialized();

            string collectionLink = UriFactory.CreateDocumentCollectionUri(this.databaseName, this.collectionName).ToString();

            Entities.LinksCollection <T> result = this
                                                  .client
                                                  .CreateDocumentQuery <Entities.DefaultLinksCollection <T> >(
                collectionLink,
                new FeedOptions()
            {
                PartitionKey = new PartitionKey(partitionId)
            })
                                                  .Where(item => item.SourceId == sourceId && item.LinkType == linkType && item.SourceType == sourceType && item.TargetEntities.Contains(link))
                                                  .ToList()
                                                  .FirstOrDefault();

            if (result == null)
            {
                // No such link.
                return;
            }

            T linkToRemove = result.TargetEntities.First(item => item.id == link.id);

            result.TargetEntities.Remove(linkToRemove);

            await this.Update(result);
        }
コード例 #6
0
ファイル: EventCamp.cs プロジェクト: Scriptopathe/codinsa2015
        /// <summary>
        /// Mets à jour l'évènement.
        /// </summary>
        public override void Update(GameTime time)
        {
            // Si le camp n'est pas détruit : on attend qu'il le soit.
            if (!m_destroyed)
            {
                // Si tous les monstres du camp sont tués, on donne l'ownership du camp
                bool allDead = true;
                foreach (Entities.EntityCampMonster monster in m_monsters)
                {
                    allDead &= monster.IsDead;
                }

                if (allDead)
                {
                    if (m_lastKiller == null)
                    {
                        throw new Exception("Problème ?");
                    }

                    m_teamOwner = m_lastKiller.Type & Entities.EntityType.Teams;

                    // Distribution du timer à la team qui a tué le camp.
                    if (m_teamOwner == Entities.EntityType.Team1)
                    {
                        m_team1Timer = true;
                    }
                    else if (m_teamOwner == Entities.EntityType.Team2)
                    {
                        m_team2Timer = true;
                    }
                    // Attribution de la récompense au tueur
                    m_lastKiller.PA += GameServer.GetScene().Constants.Events.MonsterCamp.Reward;
                    // Distribution du timer aux équipes ayant la vision.
                    m_team1Timer  |= GameServer.GetMap().Vision.HasVision(Entities.EntityType.Team1, m_position);
                    m_team2Timer  |= GameServer.GetMap().Vision.HasVision(Entities.EntityType.Team2, m_position);
                    m_respawnTimer = GameServer.GetScene().Constants.Events.MonsterCamp.RespawnTimer;
                    m_destroyed    = true;
                }
                else
                {
                    // Si un monstre du camp a été aggro, fait en sorte que les autres
                    // le soient aussi.
                    DispatchAgro();
                }
            }
            else
            {
                // Respawn du camp si le timer expire.
                m_respawnTimer -= (float)time.ElapsedGameTime.TotalSeconds;
                if (m_respawnTimer <= 0)
                {
                    SpawnCamp();
                    m_teamOwner = 0;
                    m_destroyed = false;
                }
            }

            // Si une team a l'ownership du camp, on fait spawn des sbires.
            if (m_teamOwner != 0)
            {
                m_ViruspawnTimer -= (float)time.ElapsedGameTime.TotalSeconds;
                if (m_ViruspawnTimer <= 0)
                {
                    m_ViruspawnTimer = GameServer.GetScene().Constants.Events.MonsterCamp.ViruspawnInterval;
                    SpawnVirus();
                }
            }
        }