Пример #1
0
    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);
    }
Пример #2
0
    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;
        }
    }
Пример #3
0
    // 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;
        }
    }
Пример #4
0
    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;
        }
    }
Пример #5
0
    // 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();
        }
    }
Пример #6
0
 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);
 }
Пример #7
0
    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;
        }
    }
Пример #8
0
    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]);
                }
            }
        }
    }
Пример #9
0
    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);
    }
Пример #10
0
    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);
        }
    }
Пример #11
0
 public override void OnLevelStarted(BaseLevelController levelController)
 {
     playerController = BasePlayerController.Instance as PlayerController;
 }
 public override void OnLevelStarted(BaseLevelController levelController)
 {
     throw new NotImplementedException();
 }
Пример #13
0
 public override void OnLevelStarted(BaseLevelController levelController)
 {
     Debug.Log("Started level...");
     UpdateManager.Instance.AddUpdateable(this);
 }