public override void InputChanged_a(bool new_value) { if (_a == new_value) { return; } BaseLevelController _lc = FindObjectOfType <BaseLevelController>(); int clock_period = _lc.GetClockPeriod(); if (clock_period != 0) { _switched = true; } _a = new_value; if (clock_period == _clock_last_switched && !_glitched && clock_period != 0) { _glitched = (_last_value != _a); } // Debug.Log("In " + this.name + " InputChanged, input_value = " + _a + ", clock = " + _lc.GetClockPeriod()); // Debug.Log("In " + this.name + " InputChanged, last_value = " + _last_value + " glitched = " + _glitched); // Debug.Log("In " + this.name + " InputChanged, clock_last_switched = " + _clock_last_switched); if (_a == false) { Sprite mysprite = Resources.Load <Sprite>("LightBulbOff"); GetComponent <SpriteRenderer>().sprite = mysprite; } else { Sprite mysprite = Resources.Load <Sprite>("LightBulbOn"); GetComponent <SpriteRenderer>().sprite = mysprite; } _last_value = _a; _clock_last_switched = clock_period; // Debug.Log("In lightbulb, mysprite = " + GetComponent<SpriteRenderer>().sprite.name); }
public void SetRouteMode() { BaseLevelController lc = FindObjectOfType <BaseLevelController>(); lc.SetHintString("Click and drag from outputs to inputs, click again to delete"); _gameMode = MyGameMode.Route; string parts_list = ""; BasicGate[] all_gates = FindObjectsOfType <BasicGate>(); foreach (BasicGate mygate in all_gates) { if (!mygate.IsPlacedGate()) { Destroy(mygate.gameObject); } else { parts_list = parts_list + mygate.name + " DummySprite " + mygate.transform.position.x + " " + mygate.transform.position.y + " 0.5 "; } } parts_list.Trim(' '); lc.SetPartsList(parts_list); // Debug.Log(" in set route mode, parts_list = '" + parts_list + "'"); SpriteRenderer mysr = GetComponent <SpriteRenderer>(); if (mysr) { Sprite newsprite = Resources.Load <Sprite>("Play button"); mysr.sprite = newsprite; } }
// Called if transitioning from Route to Play public void SetPlayMode() { // Debug.Log("In SetPlayMode()"); BasicGate[] all_gates = FindObjectsOfType <BasicGate>(); // Clear out the fly line from Route Mode foreach (BasicGate mygate in all_gates) { LineRenderer mylr = mygate.GetComponent <LineRenderer>(); if (mylr) { mylr.positionCount = 0; } } BaseLevelController lc = FindObjectOfType <BaseLevelController>(); lc.SetHintString("Solve your own puzzle!"); lc.WireCircuit(); _gameMode = MyGameMode.Play; foreach (BasicGate mygate in all_gates) { mygate.PropagateOutput(); } SpriteRenderer mysr = GetComponent <SpriteRenderer>(); if (mysr) { Sprite newsprite = Resources.Load <Sprite>("Reset button"); mysr.sprite = newsprite; } }
public void OnMouseDown() { GlobalHelp mygh = FindObjectOfType <GlobalHelp>(); mygh.SetGlobalHelpOff(); switch (_gameMode) { case MyGameMode.Play: // Reset game by reloading BaseLevelController _lc = FindObjectOfType <BaseLevelController>(); int level = _lc.GetLevel(); string levelName = "Level" + level; SceneManager.LoadScene(levelName); break; case MyGameMode.Placement: LightBulb[] light_bulbs = FindObjectsOfType <LightBulb>(); InputSwitch[] input_switches = FindObjectsOfType <InputSwitch>(); if (input_switches.Length > 1 && light_bulbs.Length > 1) { SetRouteMode(); } break; case MyGameMode.Route: SetPlayMode(); break; } }
// private string spriteNames = "switch down"; public override void OnMouseDown() { GameMode mygamemode = FindObjectOfType <GameMode>(); if (mygamemode.IsInPlacementMode()) { if (IsPlacedGate()) { Destroy(gameObject); return; } _newGate = Instantiate(this); _newGate.name = this.name + _newGateCount.ToString(); _newGate.transform.localScale = new Vector3(MyScale(), MyScale(), MyScale()); _newGateCount++; } else if (mygamemode.IsInRouteMode()) { LineRenderer mylr = GetComponent <LineRenderer>(); Vector3[] positions = new Vector3[2]; positions[0] = this.transform.position; Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = 0; positions[1] = newPosition; // Debug.Log("In OnMouseDown for Route, this = " + this.name); mylr.startWidth = 0.2f; mylr.endWidth = 0.2f; mylr.widthMultiplier = 0.2f; mylr.startColor = Color.yellow; mylr.endColor = Color.yellow; // mylr.material = AssetDatabase.GetBuiltinExtraResource<Material>("Default-Line.mat"); mylr.positionCount = 2; mylr.SetPositions(positions); _output_gate = this; // Debug.Log("In OnMouseDown for InputSwitch, this = " + this.name); } else // Must be in Play mode { GetComponent <SpriteRenderer>().color = Color.green; _out = !_out; // Debug.Log("in switch mouse down value is now " + _out); if (_out == false) { Sprite mysprite = Resources.Load <Sprite>("SwitchDown"); GetComponent <SpriteRenderer>().sprite = mysprite; } else { Sprite mysprite = Resources.Load <Sprite>("SwitchUp"); GetComponent <SpriteRenderer>().sprite = mysprite; } // Debug.Log("In switch mouse down, mysprite = " + // GetComponent<SpriteRenderer>().sprite.name); BaseLevelController _lc = FindObjectOfType <BaseLevelController>(); _lc.AdvanceClock(); PropagateOutput(); } }
public void OnMouseDown() { _global_help_on = !_global_help_on; if (_global_help_on) { BaseLevelController _lc = FindObjectOfType <BaseLevelController>(); string hint_string = _lc.GetHintString(); _hint_text.text = "Hint: " + hint_string; } else { _hint_text.text = ""; } // Debug.Log("In " + this.name + " global help is now on: " + _global_help_on); }
public void SetPlacementMode() { BaseLevelController lc = FindObjectOfType <BaseLevelController>(); lc.SetHintString("Make your own puzzle! Drag and drop components to make a circuit, click again to delete, must place at least a switch and a light bulb"); _gameMode = MyGameMode.Placement; SpriteRenderer mysr = GetComponent <SpriteRenderer>(); if (mysr) { Sprite newsprite = Resources.Load <Sprite>("Route button"); mysr.sprite = newsprite; mysr.color = Color.gray; } }
public void PropagateOutput() { BaseLevelController _levelController = FindObjectOfType <BaseLevelController>(); if (_levelController == null) { Debug.Log("didn't find LevelController"); } else { string[] wire_list = _levelController.GetWireList(); // Debug.Log("in propagate outputs for " + this.name); bool first_clock = true; for (int i = 0; i < wire_list.Length; i += 4) { if (wire_list[i] == this.name) { // Debug.Log(" matched source name: " + wire_list[i] + ", dest = " + wire_list[i+2]) ; // On the first clock being driven, lock the FFs' inputs for the coming edge. if (wire_list[i + 3] == "ck" && first_clock) { FF[] ffs = FindObjectsOfType <FF>(); foreach (FF myff in ffs) { myff.LockDInput(); } first_clock = false; } GameObject _destination = GameObject.Find(wire_list[i + 2]); if (_destination) { _destination.SendMessage("InputChanged_" + wire_list[i + 3], _out); } } else { // Debug.Log("not matched name: " + wire_list[i]); } } } }
public bool IsInputAvailable(string input_name) { BaseLevelController lc = FindObjectOfType <BaseLevelController>(); string[] wire_list = lc.GetWireList(); if (wire_list.Length < 4) { return(true); } // Debug.Log("in IsInputAvailable, name = " + this.name); for (int i = 0; i < wire_list.Length; i += 4) { // Debug.Log("in IsInputAvailable, wl[2] = " + wire_list[2] + ", wl[3] =" + wire_list[3]); if (wire_list[i + 2] == this.name && wire_list[i + 3] == input_name) { return(false); } } return(true); }
public void OnMouseEnter() { GameMode mygamemode = FindObjectOfType <GameMode>(); if (mygamemode.IsInRouteMode() && _output_gate && _output_gate != this) { // Debug.Log("In OnMouseEnter, this = " + name); string[] myinputs = GateInputs().Split(' '); string found_input = "BadInput"; BaseLevelController lc = FindObjectOfType <BaseLevelController>(); lc.GetWireList(); foreach (string myinput in myinputs) { if (IsInputAvailable(myinput)) { // Debug.Log("In OnMouse Enter Found available input " + this.name + "/" + myinput); found_input = myinput; break; } } if (found_input == "BadInput") { Debug.Log("Non inputs available on " + this); return; } // BaseLevelController lc = FindObjectOfType<BaseLevelController>(); string wire_element = _output_gate.name + " out " + this.name + " " + found_input; lc.AddToWireList(wire_element); Vector3 newPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); newPosition.z = 0; LineRenderer mylr = _output_gate.GetComponent <LineRenderer>(); int numPositions = mylr.positionCount; Vector3[] positions = new Vector3[numPositions + 1]; mylr.GetPositions(positions); positions[numPositions - 1] = transform.position; positions[numPositions] = transform.position; mylr.positionCount += 1; mylr.SetPositions(positions); // Debug.Log("In OnMouseEnter, added this to wire list: " + wire_element); } }
public override void OnLevelStarted(BaseLevelController levelController) { playerController = BasePlayerController.Instance as PlayerController; }
public override void OnLevelStarted(BaseLevelController levelController) { throw new NotImplementedException(); }
public override void OnLevelStarted(BaseLevelController levelController) { Debug.Log("Started level..."); UpdateManager.Instance.AddUpdateable(this); }