public override void GridUpdate() { HashSet <PipeCoreLogic> OriginalFriends = Friends; Friends = new HashSet <PipeCoreLogic>(); PhysicsDirectSpaceState State = GetWorld().DirectSpaceState; Godot.Collections.Dictionary Results; Results = State.IntersectRay(Translation, Position1.GlobalTransform.origin, new Godot.Collections.Array() { this, OpenEnd, Game.PossessedPlayer }, 2 | 4); if (Results.Count > 0 && Results["collider"] is OpenEnd) { OpenEndMesh.Show(); OpenEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { OpenEndMesh.Hide(); OpenEndCollision.Disabled = true; } if (InitiallyFilledFriends && !Friends.SetEquals(OriginalFriends)) { System = new PipeSystem(this); RecursiveAddFriendsToSystem(); } InitiallyFilledFriends = true; }
public override void UbmUpdate(float deltaTime) { // valve rotation sound for Pipes if (pipes.State == GameState.Running) { bool playTurningSound = false; foreach (Valve valve in pipes.Valves()) { PipeSystem pipeSystem = valve.PipeSystem; if (pipeSystem.RunningFansCount >= pipeSystem.FanCount) { continue; } if (Ets.Room.Physical.IsValveRotating(valve.Row, valve.PositionInRow)) { playTurningSound = true; break; } } bool playing = audio.IsSoundPlaying(11); if (playTurningSound && !playing) { audio.PlaySound(11, true, TurningValveVolume); //print ("activate valve turning sound"); } else if (!playTurningSound && playing) { audio.StopSound(11); //print ("deactivate valve turning sound"); } } }
/* * Private methods */ private void Start() { PipeSystem_ = mediator.PipeSystem_; World = PipeSystem_.transform.parent; Rotater.gameObject.SetActive(false); beamEffect = shipCollider.gameObject.GetComponent <LineRenderer>(); beamEffect.enabled = false; }
// // GET: /PipeSystem/Details/5 public ActionResult Details(int id = 0) { PipeSystem pipesystem = db.PipeSystems.Find(id); if (pipesystem == null) { return(HttpNotFound()); } return(View(pipesystem)); }
public override void _Ready() { System = new PipeSystem(this); Friends = new HashSet <PipeCoreLogic>(); Position1 = GetNode <Spatial>("Positions/Position1"); OpenEndMesh = GetNode <MeshInstance>("OpenEndMesh"); OpenEndCollision = GetNode <CollisionShape>("OpenEndCollision"); OpenEnd = GetNode <StaticBody>("OpenEnd"); CallDeferred(nameof(GridUpdate)); }
public ActionResult DeleteConfirmed(int id) { PipeSystem pipesystem = db.PipeSystems.Find(id); db.PipeSystems.Remove(pipesystem); db.SaveChanges(); if (Insert_CodeLookUp_Audit("Station Location", "Delete", pipesystem.PipeSystemItem, "")) { //nothing to do at this point. } return(RedirectToAction("Index")); }
public override void Run() { Console.WriteLine("Day 12"); var input = GetInput(); var pipeSystem = PipeSystem.Parse(input); var programs = pipeSystem.FindProgramsInGroup(0); Console.WriteLine($"Number of programs: {programs.Length}"); var count = pipeSystem.FindTotalNumberOfGroups(); Console.WriteLine($"Number of groups: {count}"); }
public ActionResult Edit(PipeSystem pipesystem) { if (ModelState.IsValid) { db.Entry(pipesystem).State = EntityState.Modified; db.SaveChanges(); if (Insert_CodeLookUp_Audit("Station Location", "Edit", Session["CodeLookUpAduit_Oldvalue"].ToString(), pipesystem.PipeSystemItem)) { //nothing to do at this point. } return(RedirectToAction("Index")); } return(View(pipesystem)); }
public void Because_of() { var input = @" 0 <-> 2 1 <-> 1 2 <-> 0, 3, 4 3 <-> 2, 4 4 <-> 2, 3, 6 5 <-> 6 6 <-> 4, 5"; subject = PipeSystem.Parse(input); result = subject.FindProgramsInGroup(0); }
public ActionResult Create(PipeSystem pipesystem) { if (ModelState.IsValid) { db.PipeSystems.Add(pipesystem); db.SaveChanges(); if (Insert_CodeLookUp_Audit("Station Location", "Create", "", pipesystem.PipeSystemItem)) { //nothing to do at this point. } return(RedirectToAction("Index")); } return(View(pipesystem)); }
public void Consume(PipeSystem Other) { if (this == Other) { return; } List <PipeCoreLogic> NewPipes = new List <PipeCoreLogic>(Pipes.Count + Other.Pipes.Count); NewPipes.AddRange(Pipes); NewPipes.AddRange(Other.Pipes); Pipes = NewPipes; foreach (PipeCoreLogic CurrentPipe in Other.Pipes) { CurrentPipe.System = this; } }
private void Init() { if (pipeSystem != null) { Destroy(pipeSystem.gameObject); } GameObject dawr = Instantiate(pipeSystemPrefab); pipeSystem = dawr.GetComponent <PipeSystem>(); SetPosition(0); positive = true; pHealth.OnInit(); score = 0; pUI.SetPositive(positive); switchCooldownCounter = switchCooldown; pipeSpeed = minPipeSpeed; }
public override void OnRemove() { List <PipeSystem> JustCreated = new List <PipeSystem>(); foreach (PipeCoreLogic Friend in Friends) { Friend.Friends.Remove(this); if (JustCreated.Contains(Friend.System)) { continue; } PipeSystem NewSystem = new PipeSystem(Friend); JustCreated.Add(NewSystem); Friend.System = NewSystem; Friend.RecursiveAddFriendsToSystem(); } }
public void Position(Pipe pipe, float curveRotation, float pipeRotation) { noteColorValues = cubeColors[(int)pipeRotation]; mesh.material.color = noteColorValues.colorValue; mesh.material.SetColor("_EmissionColor", noteColorValues.emissionValue); transform.SetParent(pipe.transform, false); transform.localRotation = Quaternion.Euler(0f, 0f, -curveRotation); // Pipe system is an only child of root which is the "world" game object pipeSystem = transform.root.GetChild(0).GetComponent(typeof(PipeSystem)) as PipeSystem; // Futher rotation based on absolute world rotation to avoid color shift when entering next pipe pipeRotation -= pipeSystem.WorldAbsoluteRotation; rotater.localPosition = new Vector3(0f, pipe.CurveRadius); rotater.localRotation = Quaternion.Euler(pipeRotation, 0f, 0f); }
public override void _Ready() { System = new PipeSystem(this); Friends = new HashSet <PipeCoreLogic>(); Position1 = GetNode <Spatial>("Positions/Position1"); Position2 = GetNode <Spatial>("Positions/Position2"); Position3 = GetNode <Spatial>("Positions/Position3"); Position4 = GetNode <Spatial>("Positions/Position4"); Position5 = GetNode <Spatial>("Positions/Position5"); Position6 = GetNode <Spatial>("Positions/Position6"); FirstEndMesh = GetNode <MeshInstance>("FirstEndMesh"); FirstEndCollision = GetNode <CollisionShape>("FirstEndCollision"); FirstOpenEnd = GetNode <StaticBody>("FirstOpenEnd"); SecondEndMesh = GetNode <MeshInstance>("SecondEndMesh"); SecondEndCollision = GetNode <CollisionShape>("SecondEndCollision"); SecondOpenEnd = GetNode <StaticBody>("SecondOpenEnd"); ThirdEndMesh = GetNode <MeshInstance>("ThirdEndMesh"); ThirdEndCollision = GetNode <CollisionShape>("ThirdEndCollision"); ThirdOpenEnd = GetNode <StaticBody>("ThirdOpenEnd"); ForthEndMesh = GetNode <MeshInstance>("ForthEndMesh"); ForthEndCollision = GetNode <CollisionShape>("ForthEndCollision"); ForthOpenEnd = GetNode <StaticBody>("ForthOpenEnd"); FifthEndMesh = GetNode <MeshInstance>("FifthEndMesh"); FifthEndCollision = GetNode <CollisionShape>("FifthEndCollision"); FifthOpenEnd = GetNode <StaticBody>("FifthOpenEnd"); SixthEndMesh = GetNode <MeshInstance>("SixthEndMesh"); SixthEndCollision = GetNode <CollisionShape>("SixthEndCollision"); SixthOpenEnd = GetNode <StaticBody>("SixthOpenEnd"); CallDeferred(nameof(GridUpdate)); base._Ready(); }
// // GET: /PipeSystem/Edit/5 public ActionResult Edit(int id = 0) { PipeSystem pipesystem = db.PipeSystems.Find(id); var psfeatures = (from vf in db.ValveSection where vf.PipeSystemID == pipesystem.PipeSystemID select new { vf }).ToList(); if (psfeatures.Count > 0) { ModelState.AddModelError("PipeSystemItem", "Warning! This Station Location is assigned to Circuit(s)."); ViewBag.HasError = "True"; } if (pipesystem == null) { return(HttpNotFound()); } Session["CodeLookUpAduit_Oldvalue"] = pipesystem.PipeSystemItem; return(View(pipesystem)); }
// // GET: /PipeSystem/Delete/5 public ActionResult Delete(int id = 0) { PipeSystem pipesystem = db.PipeSystems.Find(id); var psfeatures = (from vf in db.ValveSection where vf.PipeSystemID == pipesystem.PipeSystemID select new { vf }).ToList(); if (psfeatures.Count > 0) { ModelState.AddModelError("PipeSystemItem", "This Station Location is assigned to Circuit(s) and cannot be deleted."); ViewBag.HasError = "True"; } if (pipesystem == null) { return(HttpNotFound()); } return(View(pipesystem)); }
public override void GridUpdate() { HashSet <PipeCoreLogic> OriginalFriends = Friends; Friends = new HashSet <PipeCoreLogic>(); PhysicsDirectSpaceState State = GetWorld().DirectSpaceState; Godot.Collections.Dictionary Results = State.IntersectRay( Translation, Position1.GlobalTransform.origin, new Godot.Collections.Array { this, FirstOpenEnd, Game.PossessedPlayer.ValueOr(() => null) }, 2 | 4 ); if (Results.Count > 0 && Results["collider"] is OpenEnd) { FirstEndMesh.Show(); FirstEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { FirstEndMesh.Hide(); FirstEndCollision.Disabled = true; } Results = State.IntersectRay( Translation, Position2.GlobalTransform.origin, new Godot.Collections.Array { this, SecondOpenEnd, Game.PossessedPlayer.ValueOr(() => null) }, 2 | 4 ); if (Results.Count > 0 && Results["collider"] is OpenEnd) { SecondEndMesh.Show(); SecondEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { SecondEndMesh.Hide(); SecondEndCollision.Disabled = true; } Results = State.IntersectRay( Translation, Position3.GlobalTransform.origin, new Godot.Collections.Array { this, ThirdOpenEnd, Game.PossessedPlayer.ValueOr(() => null) }, 2 | 4 ); if (Results.Count > 0 && Results["collider"] is OpenEnd) { ThirdEndMesh.Show(); ThirdEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { ThirdEndMesh.Hide(); ThirdEndCollision.Disabled = true; } Results = State.IntersectRay( Translation, Position4.GlobalTransform.origin, new Godot.Collections.Array { this, ForthOpenEnd, Game.PossessedPlayer.ValueOr(() => null) }, 2 | 4 ); if (Results.Count > 0 && Results["collider"] is OpenEnd) { ForthEndMesh.Show(); ForthEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { ForthEndMesh.Hide(); ForthEndCollision.Disabled = true; } Results = State.IntersectRay( Translation, Position5.GlobalTransform.origin, new Godot.Collections.Array { this, FifthOpenEnd, Game.PossessedPlayer.ValueOr(() => null) }, 2 | 4 ); if (Results.Count > 0 && Results["collider"] is OpenEnd) { FifthEndMesh.Show(); FifthEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { FifthEndMesh.Hide(); FifthEndCollision.Disabled = true; } Results = State.IntersectRay( Translation, Position6.GlobalTransform.origin, new Godot.Collections.Array { this, SixthOpenEnd, Game.PossessedPlayer.ValueOr(() => null) }, 2 | 4 ); if (Results.Count > 0 && Results["collider"] is OpenEnd) { SixthEndMesh.Show(); SixthEndCollision.Disabled = false; System.Consume(((OpenEnd)Results["collider"]).Parent.System); Friends.Add(((OpenEnd)Results["collider"]).Parent); } else { SixthEndMesh.Hide(); SixthEndCollision.Disabled = true; } if (InitiallyFilledFriends && !Friends.SetEquals(OriginalFriends)) { System = new PipeSystem(this); RecursiveAddFriendsToSystem(); } InitiallyFilledFriends = true; }