Example #1
0
        public async Task <ActionResult> AddCharacter(AddCharacterSceneViewModel addCharacterSceneViewModel)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (ModelState.IsValid)
            {
                var characterId = addCharacterSceneViewModel.CharacterID;
                var sceneId     = addCharacterSceneViewModel.SceneID;

                ICollection <CharacterScene> existingItems = _context.CharacterScenes
                                                             .Where(cs => cs.CharacterID == characterId)
                                                             .Where(cs => cs.SceneID == sceneId).ToList();
                if (existingItems.Count == 0)
                {
                    CharacterScene addCharacter = new CharacterScene
                    {
                        Character = _context.Characters.Single(c => c.CharacterID == characterId),
                        Scene     = _context.Scenes.Single(s => s.SceneID == sceneId)
                    };

                    _context.Add(addCharacter);
                    await _context.SaveChangesAsync();
                }
                return(RedirectToAction("Details", new { id = sceneId }));
            }
            return(View(addCharacterSceneViewModel));
        }
        public void FireProjectile()
        {
            var projectile = (SKSpriteNode)Projectile.Copy();

            projectile.Position  = Position;
            projectile.ZRotation = ZRotation;

            var emitter = (SKEmitterNode)ProjectileEmitter.Copy();

            emitter.TargetNode = CharacterScene.GetChildNode("world");
            projectile.AddChild(emitter);

            CharacterScene.AddNode(projectile, WorldLayer.Character);

            var rot = ZRotation;

            float x = -(float)Math.Sin(rot) * HeroProjectileSpeed * HeroProjectileLifetime;
            float y = (float)Math.Cos(rot) * HeroProjectileSpeed * HeroProjectileLifetime;

            projectile.RunAction(SKAction.MoveBy(x, y, HeroProjectileLifetime));

            projectile.RunAction(SKAction.Sequence(new [] {
                SKAction.WaitForDuration(HeroProjectileFadeOutTime),
                SKAction.FadeOutWithDuration(HeroProjectileLifetime - HeroProjectileFadeOutTime),
                SKAction.RemoveFromParent()
            }));
            projectile.RunAction(ProjectileSoundAction);

            var userData = new UserData {
                Player = Player
            };


            projectile.UserData = (NSMutableDictionary)userData.Dictionary;
        }
Example #3
0
        public static List <CharacterScene> SelectBySceneId(int sceneId)
        {
            List <CharacterScene> list = null;

            using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection  = conn;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "dbo.CharacterScene_GetBySceneId";
                    cmd.Parameters.AddWithValue("@SceneId", sceneId);

                    SqlDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        CharacterScene cs = MapCharacterScene(reader);

                        if (list == null)
                        {
                            list = new List <CharacterScene>();
                        }

                        list.Add(cs);
                    }
                }
                conn.Close();
            }
            return(list);
        }
        public override void PerformDeath()
        {
            RemoveAllActions();

            SKSpriteNode splort = (SKSpriteNode)deathSplort.Copy();

            splort.ZPosition = -1;
            splort.ZRotation = (float)(Random.NextDouble() * Math.PI);
            splort.Position  = Position;
            splort.Alpha     = 0.5f;
            CharacterScene.AddNode(splort, WorldLayer.Ground);
            splort.RunAction(SKAction.FadeOutWithDuration(10));

            base.PerformDeath();

            PhysicsBody.CollisionBitMask   = 0;
            PhysicsBody.ContactTestBitMask = 0;
            PhysicsBody.CategoryBitMask    = 0;
            PhysicsBody = null;
        }
Example #5
0
        public override void CollidedWith(SKPhysicsBody other)
        {
            if (Health <= 0)
            {
                return;
            }

            if ((other.CategoryBitMask & (uint)ColliderType.Projectile) == 0)
            {
                return;
            }

            float damage = 10f;
            bool  killed = ApplyDamage(damage, other.Node);

            if (killed)
            {
                CharacterScene.AddToScoreAfterEnemyKill(25, other.Node);
            }
        }
        public override void CollidedWith(SKPhysicsBody other)
        {
            if (Dying)
            {
                return;
            }

            if ((other.CategoryBitMask & (uint)ColliderType.Projectile) != 0)
            {
                // Apply random damage of either 100% or 50%
                RequestedAnimation = AnimationState.GetHit;

                float damage = Random.Next(2) == 0 ? 50 : 100;
                bool  killed = ApplyDamage(damage, other.Node);

                if (killed)
                {
                    CharacterScene.AddToScoreAfterEnemyKill(10, other.Node);
                }
            }
        }
Example #7
0
        private static CharacterScene MapCharacterScene(SqlDataReader reader)
        {
            CharacterScene character = new CharacterScene();

            character.Character = new Character();
            int ord = 0;

            character.Character.Id             = reader.GetSafeInt32(ord++);
            character.SceneId                  = reader.GetSafeInt32(ord++);
            character.CharacterSceneExitTypeId = reader.GetSafeInt32(ord++);
            character.Start               = reader.GetSafeString(ord++);
            character.End                 = reader.GetSafeString(ord++);
            character.Notes               = reader.GetSafeString(ord++);
            character.PhysicalGoal        = reader.GetSafeString(ord++);
            character.EmotionalGoal       = reader.GetSafeString(ord++);
            character.Obstacle            = reader.GetSafeString(ord++);
            character.Character.Name      = reader.GetSafeString(ord++);
            character.Character.Want      = reader.GetSafeString(ord++);
            character.Character.Need      = reader.GetSafeString(ord++);
            character.Character.Biography = reader.GetSafeString(ord++);
            return(character);
        }
        public override void CollidedWith(SKPhysicsBody other)
        {
            if (Dying)
            {
                return;
            }

            if ((other.CategoryBitMask & (uint)ColliderType.Projectile) == 0)
            {
                return;
            }

            RequestedAnimation = AnimationState.GetHit;

            var  damage = 2f;
            bool killed = ApplyDamage(damage, other.Node);

            if (killed)
            {
                CharacterScene.AddToScoreAfterEnemyKill(100, other.Node);
            }
        }
        public override void AnimationDidComplete(AnimationState animation)
        {
            switch (animation)
            {
            case AnimationState.Death:
                var emitter = (SKEmitterNode)DeathEmitter.Copy();
                emitter.ZPosition = -0.8f;
                AddChild(emitter);
                GraphicsUtilities.RunOneShotEmitter(emitter, 4.5f);

                RunAction(SKAction.Sequence(new [] {
                    SKAction.WaitForDuration(4),
                    SKAction.Run(() => CharacterScene.HeroWasKilled(this)),
                    SKAction.RemoveFromParent()
                }));
                break;

            case AnimationState.Attack:
                FireProjectile();
                break;
            }
        }
Example #10
0
        public static Act SelectById(int id)
        {
            Act          act    = null;
            List <Scene> scenes = null;

            using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection  = conn;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "dbo.Act_SelectById";
                    cmd.Parameters.AddWithValue("@Id", id);

                    SqlDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        act = MapAct(reader);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        int i = reader.GetSafeInt32(0);
                        if (act.ActIds == null)
                        {
                            act.ActIds = new List <int>();
                        }
                        act.ActIds.Add(i);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Sequence seq = MapSequence(reader);
                        if (act.Sequences == null)
                        {
                            act.Sequences = new List <Sequence>();
                        }
                        act.Sequences.Add(seq);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Scene    scene = MapScene(reader);
                        Sequence seq   = act.Sequences.Find(item => item.Id == scene.SequenceId);
                        if (seq.Scenes == null)
                        {
                            seq.Scenes = new List <Scene>();
                        }
                        seq.Scenes.Add(scene);
                        if (scenes == null)
                        {
                            scenes = new List <Scene>();
                        }
                        scenes.Add(scene);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        CharacterScene character = MapCharacterScene(reader);

                        Scene scene = scenes.Find(sce => sce.Id == character.SceneId);

                        if (scene.Characters == null)
                        {
                            scene.Characters = new List <CharacterScene>();
                        }

                        scene.Characters.Add(character);
                    }
                }
                conn.Close();
            }
            return(act);
        }
Example #11
0
        public static Project SelectByIdPrint(int id)
        {
            Project proj = null;
            Dictionary <int, int> SequenceActList   = null;
            Dictionary <int, int> SceneSequenceList = null;

            using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection  = conn;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "dbo.Project_SelectByIdPrint";
                    cmd.Parameters.AddWithValue("@Id", id);

                    SqlDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        proj = MapProject(reader);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Act a = MapAct(reader);
                        if (proj.Acts == null)
                        {
                            proj.Acts = new List <Act>();
                        }
                        proj.Acts.Add(a);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Sequence seq = MapSequence(reader);
                        Act      a   = proj.Acts.Find(act => act.Id == seq.ActId);
                        if (a.Sequences == null)
                        {
                            a.Sequences = new List <Sequence>();
                        }
                        a.Sequences.Add(seq);
                        if (SequenceActList == null)
                        {
                            SequenceActList = new Dictionary <int, int>();
                        }
                        SequenceActList.Add(seq.Id, a.Id);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Scene    sce = MapScene(reader);
                        Sequence seq = proj.Acts.Find(a => a.Id == SequenceActList[sce.SequenceId]).Sequences.Find(s => s.Id == sce.SequenceId);
                        if (seq.Scenes == null)
                        {
                            seq.Scenes = new List <Scene>();
                        }
                        seq.Scenes.Add(sce);
                        if (SceneSequenceList == null)
                        {
                            SceneSequenceList = new Dictionary <int, int>();
                        }
                        SceneSequenceList.Add(sce.Id, seq.Id);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        CharacterScene cs  = MapCharacterScene(reader);
                        Scene          sce = proj.Acts.Find(a => a.Id == SequenceActList[SceneSequenceList[cs.SceneId]]).Sequences.Find(s => s.Id == SceneSequenceList[cs.SceneId]).Scenes.Find(c => c.Id == cs.SceneId);
                        if (sce.Characters == null)
                        {
                            sce.Characters = new List <CharacterScene>();
                        }
                        sce.Characters.Add(cs);
                    }
                }
                conn.Close();
            }
            return(proj);
        }
Example #12
0
        public static Project SelectEpisodeById(int id)
        {
            Project         proj      = null;
            List <Sequence> sequences = null;
            List <Scene>    scenes    = null;

            using (SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand())
                {
                    cmd.Connection  = conn;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.CommandText = "dbo.Project_SelectEpisodeById";
                    cmd.Parameters.AddWithValue("@Id", id);

                    SqlDataReader reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        proj = MapProject(reader);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        int i = reader.GetSafeInt32(0);
                        if (proj.EpisodeIds == null)
                        {
                            proj.EpisodeIds = new List <int>();
                        }
                        proj.EpisodeIds.Add(i);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Plot p = MapPlot(reader);
                        if (proj.Plots == null)
                        {
                            proj.Plots = new List <Plot>();
                        }
                        proj.Plots.Add(p);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Act a = MapAct(reader);
                        if (proj.Acts == null)
                        {
                            proj.Acts = new List <Act>();
                        }
                        proj.Acts.Add(a);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Sequence seq = MapSequence(reader);
                        Act      a   = proj.Acts.Find(item => item.Id == seq.ActId);
                        if (a.Sequences == null)
                        {
                            a.Sequences = new List <Sequence>();
                        }
                        a.Sequences.Add(seq);
                        if (sequences == null)
                        {
                            sequences = new List <Sequence>();
                        }
                        sequences.Add(seq);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Scene    sce = MapScene(reader);
                        Sequence seq = sequences.Find(item => item.Id == sce.SequenceId);
                        if (seq.Scenes == null)
                        {
                            seq.Scenes = new List <Scene>();
                        }
                        seq.Scenes.Add(sce);
                        if (scenes == null)
                        {
                            scenes = new List <Scene>();
                        }
                        scenes.Add(sce);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        CharacterScene character = MapCharacterScene(reader);

                        Scene scene = scenes.Find(sce => sce.Id == character.SceneId);

                        if (scene.Characters == null)
                        {
                            scene.Characters = new List <CharacterScene>();
                        }

                        scene.Characters.Add(character);
                    }
                    reader.NextResult();

                    while (reader.Read())
                    {
                        Person p = MapPerson(reader);
                        if (proj.Users == null)
                        {
                            proj.Users = new List <Person>();
                        }
                        proj.Users.Add(p);
                    }
                }
                conn.Close();
            }
            return(proj);
        }