bool IsDesiredState() { for (int i = 0; i < switches.Length; i++) { if (switches [i] == null) { Debug.LogError("Missing switch."); return(false); } SwitchObject obj = switches [i].GetComponent <SwitchObject>(); if (obj == null) { Debug.LogError("Missing switch."); return(false); } if (obj.desiredState != obj.isOn) { return(false); } } if (triggerTarget != null) { triggerTarget.SendMessage("DoActivateTrigger", SendMessageOptions.DontRequireReceiver); } Debug.Log("IsDesiredState"); return(true); }
void OnValidate() { for (int i = 0; i < switches.Length; i++) { if (switches [i] == null) { Debug.LogError("Missing switch."); return; } SwitchObject obj = switches [i].GetComponent <SwitchObject>(); if (obj == null) { Debug.LogError("Missing switch."); return; } } }
private void MouseManager_LeftButtonDown(object sender, MouseEventArgs e) { if (componentMenu.Selected && !componentMenu.Bounds.Contains(e.MouseState.Position)) { IGate gate = componentMenu.NewGate(); GateObject go; if (gate is Switch) { go = new SwitchObject(gate.Outputs.Length, e.MouseState.Position); } else { go = new GateObject(gate, GateTextureMap[gate.GetType().FullName], e.MouseState.Position); } go.Defcous(); Gates.Add(go); gateControl.AddClick(go); Console.WriteLine(gate); } }
// Create object in room upon user click private void MakeSpaceObject(string texName, Image tex, DrawPoint mp) { texName = texName.Replace(".png", ""); string[] lastname_ary= (string[])texName.Split('\\'); string lastname = lastname_ary[lastname_ary.Length-1]; string texStripName = texName.Replace(lastname,"strips\\"+lastname) + "_strip"; //int numberOfFrames = SpaceObject.GetNumberOfFrames(texName); Vector2 screenposition = Conversion.DrawPointToVector2(mp); Vector2 gameposition = new Vector2(screenposition.X / CASSWorld.SCALE, screenposition.Y / CASSWorld.SCALE); if (rb_AnimationObjects.Checked) { AnimationObject ao; // TODO : i'm not a fan of these ifs, since the only thing that's changing are those last two numbers // having to do with the animation. is there a way they could be passed in, or even better, // derived from the strip image? if (lastname == "fan") ao = new AnimationObject(world.World, texStripName, texName, tex.Width, tex.Height, 20, 7); else if (lastname == "broken_platform") ao = new AnimationObject(world.World, texStripName, texName, tex.Width, tex.Height, 20, 8); else if (lastname == "light" || lastname == "fire") { ao = new AnimationObject(world.World, texStripName, texName, tex.Width, tex.Height, 20, 8,false, false); //ao.RemoveFromWorld(); //world.World.DestroyBody(ao.Body); } else if (lastname == "rollingpin") { ao = new AnimationObject(world.World, texStripName, texName, tex.Width, tex.Height, 20, 8, true, true); } else { ao = new AnimationObject(world.World, texStripName, texName, tex.Width, tex.Height, 20, 8); } ao.Position = gameposition; world.AddObject(ao); } else if (rb_BoxObjects.Checked) { BoxObject bo; bo = new BoxObject(world.World, texName, 0, .5f, 0, 1, false); bo.Position = gameposition; world.AddObject(bo); } else if (rb_CircleObjects.Checked) { CircleObject co; co = new CircleObject(world.World, texName, 1, .5f, 0, 1); co.Position = gameposition; world.AddObject(co); } else if (rb_WinDoorObject.Checked) { WinDoorObject so; // HACK - hard-coded for the win-door so = new WinDoorObject(world.World, texStripName, texName, tex.Width, tex.Height, 20, 5); so.Position = gameposition; world.AddObject(so); } else if (rb_PistonObject.Checked) { PistonObject po; Console.WriteLine("{0}", gameposition); po = new PistonObject(world.World, .5f, .5f, 12f, 13f, 9.7f, 12.6f, .01f, .1f, gameposition); po.Position = gameposition; world.AddObject(po); } else if(rb_SeeSawObject.Checked) { SeeSawObject ss; ss = new SeeSawObject(world.World, texName, 1.5f, gameposition); ss.Position = gameposition; world.AddObject(ss); } else if (rb_SwitchObject.Checked) { SwitchObject ss1; // ss1 = new SwitchObject(world.World, "Art\\Objects\\SwitchObjects\\button_strip","Art\\Objects\\SwitchObjects\\button", 181, 84, 20, 2); //brokenMovingPlatform1 = new SwitchObject(World, "broken_strip", "broken_moving_platform", 89, 32, 20, 8); // ss1.Position = gameposition; // world.AddObject(ss1); if (lastname == "button") { ss1 = new SwitchObject(world.World, "Art\\Objects\\SwitchObjects\\button_strip", "Art\\Objects\\SwitchObjects\\button", 181, 84, 20, 2); ss1.Position = gameposition; world.AddObject(ss1); } else if (lastname == "death") { DeathPlatform ss2; ss2 = new DeathPlatform(world.World, "Art\\Objects\\SwitchObjects\\button_death_strip", "Art\\Objects\\SwitchObjects\\death", 181, 84, 20, 2); //brokenMovingPlatform1 = new SwitchObject(World, "broken_strip", "broken_moving_platform", 89, 32, 20, 8); ss2.Position = gameposition; world.AddObject(ss2); } else { FailButtonObject ss2; ss2 = new FailButtonObject(world.World, "Art\\Objects\\SwitchObjects\\button_strip", "Art\\Objects\\SwitchObjects\\fail_button", 181, 84, 20, 2); //brokenMovingPlatform1 = new SwitchObject(World, "broken_strip", "broken_moving_platform", 89, 32, 20, 8); ss2.Position = gameposition; world.AddObject(ss2); } } else if (rb_HoleObject.Checked) { HoleObject ss; ss = new HoleObject(world.World, "Art\\Objects\\HoleObjects\\hole_strip", "Art\\Objects\\HoleObjects\\hole"); //hole1 = new HoleObject(World, "Art\\Objects\\HoleObjects\\hole_strip", "Art\\Objects\\HoleObjects\\hole"); ss.Position = gameposition; world.AddObject(ss); } else if (rb_MovingPlatform.Checked) { MovingObject ss; // ss = new MovingObject(world.World, "Art\\Objects\\MovingPlatformObjects\\moving_platform", 1000, 0.5f, 0, 1, false, null, new Vector2(0, -11500), 4.5f, 14.2f); // movPlatform1 = new MovingObject(World, "moving platform", 1000f, .5f, 0, 1, false, brokenMovingPlatform1, new Vector2(0, -11500), 4.5f, 14.2f); // ss.Position = gameposition; // world.AddObject(ss); if (lastname == "moving_platform") ss = new MovingObject(world.World, "Art\\Objects\\MovingPlatformObjects\\moving_platform", 0, 0.5f, 0, 1, false, null, new Vector2(0, -11500), 4.5f, 14.2f); else if (lastname == "gate") { SwitchObject ssfine; ssfine = new SwitchObject(world.World, "Art\\Objects\\SwitchObjects\\button_strip", "Art\\Objects\\SwitchObjects\\button", 181, 84, 20, 2); ss = new MovingObject(world.World, "Art\\Objects\\MovingPlatformObjects\\gate", 0, 0.5f, 0, 1, false, ssfine, new Vector2(0, -11500), 4.5f, 14.2f); //brokenMovingPlatform1 = new SwitchObject(World, "broken_strip", "broken_moving_platform", 89, 32, 20, 8); ssfine.Position = gameposition; world.AddObject(ssfine); } else { SwitchObject ss1; ss1 = new SwitchObject(world.World, "Art\\Objects\\SwitchObjects\\button_strip", "Art\\Objects\\SwitchObjects\\button", 181, 84, 20, 2); ss = new MovingObject(world.World, "Art\\Objects\\MovingPlatformObjects\\switchmoving_platform", 0, 0.5f, 0, 1, false, ss1, new Vector2(0, -11500), 4.5f, 14.2f); //brokenMovingPlatform1 = new SwitchObject(World, "broken_strip", "broken_moving_platform", 89, 32, 20, 8); ss1.Position = gameposition; world.AddObject(ss1); } ss.Position = gameposition; world.AddObject(ss); } else if (rb_HorizontalMovingPlatform.Checked) { HorizontalMovingObject ss; // ss = new HorizontalMovingObject(world.World, "Art\\Objects\\HorizontalMovingPlatformObjects\\moving_platform", 0, 0.5f, 0, 1, false, null, new Vector2(0, -11500), 4.5f, 14.2f); // movPlatform2 = new HorizontalMovingObject(World, "Art\\Objects\\HorizontalMovingPlatformObjects\\moving_platform", 0f, 0.5f, 0, 1, false, null, new Vector2(0, -11500), 32f, 38f); if (lastname == "moving_platform") ss = new HorizontalMovingObject(world.World, "Art\\Objects\\HorizontalMovingPlatformObjects\\moving_platform", 0, 0.5f, 0, 1, false, null, new Vector2(0, -11500), 4.5f, 14.2f); else { SwitchObject ss1; ss1 = new SwitchObject(world.World, "Art\\Objects\\SwitchObjects\\button_strip", "Art\\Objects\\SwitchObjects\\button", 181, 84, 20, 2); ss = new HorizontalMovingObject(world.World, "Art\\Objects\\HorizontalMovingPlatformObjects\\switchmoving_platform", 0, 0.5f, 0, 1, false, ss1, new Vector2(0, -11500), 4.5f, 14.2f); //brokenMovingPlatform1 = new SwitchObject(World, "broken_strip", "broken_moving_platform", 89, 32, 20, 8); ss1.Position = gameposition; world.AddObject(ss1); } ss.Position = gameposition; world.AddObject(ss); } else if (rb_PaintedObjects.Checked) { switch (lastname) { case "block_long": InstasteelObject io; io = new InstasteelObject(world.World, texName, 580, 1, .5f, 0, 1, false); io.Position = gameposition; world.AddObject(io); break; case "disk_long": InstasteelCircleObject ico; ico = new InstasteelCircleObject(world.World, texName, 480, 1, .5f, 0, 1); ico.Position = gameposition; world.AddObject(ico); break; case "line_long": InstasteelObject ilo; ilo = new InstasteelObject(world.World, texName, 190, 1, .5f, 0, 1, false); ilo.Position = gameposition; world.AddObject(ilo); break; default: break; } } /* else if (rb_PaintedObjects.Checked) { PaintedObject po; List<Vector2> blobs = new List<Vector2>(); float radius; float sidelength; Vector2 centeroff; switch (lastname) { case "line_short": float linelength_short = (30f/60f) * 1.2f; blobs.Add(gameposition + new Vector2(linelength_short/2f, 0f)); blobs.Add(gameposition + new Vector2(-linelength_short/2f, 0f)); centeroff = new Vector2(0,0); break; case "line": float linelength = 1.2f; blobs.Add(gameposition + new Vector2(linelength/2, 0f)); blobs.Add(gameposition + new Vector2(-linelength/2f, 0f)); centeroff = new Vector2(0,0); break; case "line_long": float linelength_long = (200f/60f) * 1.2f; blobs.Add(gameposition + new Vector2(linelength_long/2f, 0f)); blobs.Add(gameposition + new Vector2(-linelength_long/2f, 0f)); centeroff = new Vector2(0,0); break; case "disk_short": radius = (30f/60f) *0.6f; blobs = paintedCircle(radius, gameposition); // radius of 0.6f centeroff = -1 * new Vector2(radius, radius); centeroff = new Vector2(0,0); break; case "disk_small": radius = (40f/60f) *0.6f; blobs = paintedCircle(radius, gameposition); // radius of 0.6f centeroff = -1 * new Vector2(radius, radius); centeroff = new Vector2(0,0); break; case "disk": radius = 0.6f; blobs = paintedCircle(radius, gameposition); // radius of 0.6f centeroff = -1 * new Vector2(radius, radius); centeroff = new Vector2(0,0); break; case "disk_long": radius = (150f/60f) * 0.6f; blobs = paintedCircle(radius, gameposition); // radius of 0.6f centeroff = -1 * new Vector2(radius, radius); centeroff = new Vector2(0,0); break; case "block_short": sidelength = (30f/60f) *0.6f; blobs = paintedSquare((30f/60f) * 1.2f, gameposition); // sidelength of 1.2f centeroff = -1 * new Vector2(sidelength, sidelength); break; case "block_small": sidelength = (40f/60f) *0.6f; blobs = paintedSquare((40f/60f) * 1.2f, gameposition); // sidelength of 1.2f centeroff = -1 * new Vector2(sidelength, sidelength); break; case "block": sidelength = 0.6f; blobs = paintedSquare(1.2f, gameposition); // sidelength of 1.2f centeroff = -1 * new Vector2(sidelength, sidelength); break; case "block_long": sidelength = (150f/60f) * 0.6f; blobs = paintedSquare((150f/60f) * 1.2f, gameposition); // sidelength of 1.2f centeroff = -1 * new Vector2(sidelength, sidelength); break; default: blobs.Add(gameposition + new Vector2(0.6f, 0f)); blobs.Add(gameposition + new Vector2(-0.6f, 0f)); centeroff = new Vector2(0,0); break; } po = new PaintedObject(world.World, "paint", "paintedsegment", blobs); po.TextureFilename = "Art\\Objects\\PaintedObjects\\" + lastname; po.Position = gameposition + centeroff; world.AddObject(po); } */ else if (rb_BackgroundObjects.Checked) { BackgroundObject bo; bo = new BackgroundObject(world.World, world, texName,gameposition); bo.Position = gameposition; world.AddObject(bo); } /* else if (rb_Player.Checked) { mp.X -= (int)((texture.Width * Constants.PLAYER_SCALE) / 2); mp.Y -= (int)((texture.Height * Constants.PLAYER_SCALE) / 2); world.player = new Player( Conversion.DrawPointToVector2(mp), currdir + "\\" + texName + ".tri" ); world.CurrentRoom = currentlySelectedRoom; world.player.TextureName = texName; } */ }
private void Start() { animator = GetComponent <Animator>(); switchObject = switchGameObject.GetComponent <SwitchObject>(); }