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; }
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; }
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); } } }
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; } }
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); }
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); }
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); }