Exemplo n.º 1
0
        public SpecEffect CreateEffect(Player owner, string nativeName, Tile target, string visualization, float?z, float?duration, float?mod)
        {
            SpecEffect effect = new SpecEffect(this, owner, target.X, target.Y, visualization, z, NativeManager.GetEffectNative(nativeName), duration, mod);

            SpecEffects.Add(effect);
            return(effect);
        }
Exemplo n.º 2
0
        private ForExternalUse.Synchronization.ISynchronizer GetSynchronizationData(bool nullify)
        {
            List <Actor>            changedActors      = Actors.FindAll(x => x.Affected);
            List <ActiveDecoration> changedDecorations = Decorations.FindAll(x => x.Affected);
            List <SpecEffect>       changedEffects     = SpecEffects.FindAll(x => x.Affected);
            List <Tile>             changedTiles       = new List <Tile>();

            for (int x = 0; x < Tiles.Length; x++)
            {
                for (int y = 0; y < Tiles[x].Length; y++)
                {
                    if (Tiles[x][y].Affected)
                    {
                        changedTiles.Add(Tiles[x][y]);
                    }
                }
            }

            Synchronizer sync = new Synchronizer(
                TempTileObject,
                players,
                changedActors,
                changedDecorations,
                changedEffects,
                DeletedActors,
                DeletedDecorations,
                DeletedEffects,
                new Point(Tiles.Length, Tiles[0].Length),
                changedTiles,
                RandomCounter);

            if (nullify)
            {
                changedActors.ForEach(x => x.Affected = false);
                changedDecorations.ToList().ForEach(x => x.Affected = false);
                changedEffects.ToList().ForEach(x => x.Affected     = false);
                changedTiles.ToList().ForEach(x => x.Affected       = false);
                this.DeletedDecorations = new List <ActiveDecoration>();
                this.DeletedActors      = new List <Actor>();
                this.DeletedEffects     = new List <SpecEffect>();
            }

            return(sync);
        }
Exemplo n.º 3
0
        private void AfterActionUpdate()
        {
            foreach (Player player in players)
            {
                if (player.Status == PlayerStatus.Playing && DefeatCondition(this, player))
                {
                    player.Defeat(false);
                }
            }

            for (int i = 0; i < Actors.Count; i++)
            {
                if (!Actors[i].IsAlive)
                {
                    Actors[i].TempTile.RemoveTempObject();
                    DeletedActors.Add(Actors[i]);
                    Actors.RemoveAt(i);
                    i--;
                }
            }

            for (int i = 0; i < Decorations.Count; i++)
            {
                if (!Decorations[i].IsAlive)
                {
                    Decorations[i].TempTile.RemoveTempObject();
                    DeletedDecorations.Add(Decorations[i]);
                    Decorations.RemoveAt(i);
                    i--;
                }
            }

            for (int i = 0; i < SpecEffects.Count; i++)
            {
                if (!SpecEffects[i].IsAlive)
                {
                    DeletedEffects.Add(SpecEffects[i]);
                    SpecEffects.RemoveAt(i);
                    i--;
                }
            }
        }
Exemplo n.º 4
0
        private ForExternalUse.Synchronization.ISynchronizer GetFullSynchronizationData(bool nullify)
        {
            if (nullify)
            {
                Actors.ForEach(x => x.Affected = false);
                Decorations.ToList().ForEach(x => x.Affected = false);
                SpecEffects.ToList().ForEach(x => x.Affected = false);
                for (int x = 0; x < Tiles.Length; x++)
                {
                    for (int y = 0; y < Tiles[x].Length; y++)
                    {
                        Tiles[x][y].Affected = false;
                    }
                }

                this.DeletedDecorations.Clear();
                this.DeletedActors.Clear();
                this.DeletedEffects.Clear();
            }

            return(new SynchronizerFull(TempTileObject, players, Actors, Decorations, SpecEffects, Tiles, RandomCounter));
        }