Example #1
0
        public virtual void Render(ref Graphics g, Vector offset, float Scale)
        {
            if (fLastScale != Scale)
            {
                fLastScale      = Scale;
                bProcessedImage = new Bitmap(bInitialImage, (int)(nWidth * fLastScale), (int)(nHeight * fLastScale));
            }
            vScreenPos = WorldToScreen(vWorldPos, offset, Scale);
            g.DrawImage(bProcessedImage, vScreenPos.x - bProcessedImage.Width * 0.5f, vScreenPos.y - bProcessedImage.Height * 0.5f);
            Font  font = new Font("Microsoft Sans Serif", 32f * Scale);
            SizeF size = g.MeasureString(eGateType.ToString(), font);

            switch (eGateType)
            {
            case GateType.NOT:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.9f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.OR:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.5f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.AND:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.5f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.NOR:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.6f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.NAND:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.6f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.XOR:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.4f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.XNOR:
                g.DrawString(eGateType.ToString(), font, Brushes.Black, vScreenPos.x - size.Width * 0.5f,
                             vScreenPos.y - size.Height * 0.5f);
                break;

            case GateType.IN: break;

            case GateType.OUT: break;
            }
            if (bSelected)
            {
                g.DrawRectangle(Pens.Green, vScreenPos.x - bProcessedImage.Width * 0.5f,
                                vScreenPos.y - bProcessedImage.Height * 0.5f, bProcessedImage.Width, bProcessedImage.Height);
            }
        }
Example #2
0
 //public Sprite ObjToSprite(string sName)
 //{
 //    Sprite s = null;
 //    //这个变量放在类中声明之后会报空指针
 //    object[] gateGuise = Resources.LoadAll("GateGuise", typeof(Sprite));
 //    //gateGuise = Resources.LoadAll("GateGuise", typeof(Sprite));
 //    for (int i = 0; i < gateGuise.Length; i++)
 //    {
 //        if (gateGuise[i].ToString().Contains(sName))
 //        {
 //            s = (Sprite)gateGuise[i];
 //        }
 //    }
 //    return s;
 //}
 //获取需要实例化的物体
 public GameObject GateOpenResult(GateType type)
 {
     for (int i = 0; i < gates.Length; i++)
     {
         if (type.ToString() == gates[i].name)
         {
             return(gates[i]);
         }
     }
     return(gates[1]);
 }
        public GateView(GateType type, int inputs, int outputs)
        {
            InitializeComponent();

            GateType       = type;
            Rectangle.Text = type.ToString();

            for (int i = 0; i < inputs; i++)
            {
                CreatePort(Inputs, true);
            }

            for (int o = 0; o < outputs; o++)
            {
                CreatePort(Outputs, false);
            }
        }
Example #4
0
 void Start()
 {
     gateName.text = gateType.ToString();
     if (gateType == GateType.Input)
     {
         gateName.gameObject.SetActive(false);
         gateValue.gameObject.SetActive(false);
         inputNode.gameObject.SetActive(false);
         inputToggle.gameObject.SetActive(true);
     }
     else if (gateType == GateType.Output)
     {
         gateName.gameObject.SetActive(false);
         gateValue.gameObject.SetActive(false);
         outputNode.gameObject.SetActive(false);
         outputText.gameObject.SetActive(true);
     }
 }
Example #5
0
    // Update is called once per frame
    void Update()
    {
        if (ToolController.SelectedTool == ToolController.ToolType.EDITOR)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                if (Collider.OverlapPoint(mousePosition))
                {
                    Debug.Log("test");
                    GateType oldGate = Gate;
                    Gate = (GateType)(((int)Gate + 1) % Enum.GetNames(typeof(GateType)).Length);
                    Debug.Log(Gate.ToString());
                    SelectSprite();
                    if (oldGate == GateType.NOT || Gate == GateType.NOT)
                    {
                        SetInterface();
                    }
                }
            }
        }
        switch (Gate)
        {
        default:
        case GateType.NOT:
            OutputPin.SetState(!InputPins[0].GetState());
            break;

        case GateType.AND:
            OutputPin.SetState(InputPins[0].GetState() && InputPins[1].GetState());
            break;

        case GateType.OR:
            OutputPin.SetState(InputPins[0].GetState() || InputPins[1].GetState());
            break;

        case GateType.XOR:
            OutputPin.SetState(!InputPins[0].GetState() != !InputPins[1].GetState());
            break;
        }
    }
Example #6
0
    public override void _Process(float delta)
    {
        var inputPin1 = GetNode <InputPin>("InputPin1");
        var inputPin2 = GetNode <InputPin>("InputPin2");
        var outputPin = GetNode <OutputPin>("OutputPin");

        switch (gateType)
        {
        case GateType.And:
            outputPin.Value = inputPin1.Value && inputPin2.Value;
            break;

        case GateType.Or:
            outputPin.Value = inputPin1.Value || inputPin2.Value;
            break;

        case GateType.Xor:
            outputPin.Value = inputPin1.Value ^ inputPin2.Value;
            break;
        }

        GetNode <Button>("Button").Text = gateType.ToString();
    }
Example #7
0
 public override string ToString()
 {
     return("{0} to {1}".F(GateType.ToString(), Destination.System));
 }
Example #8
0
 private void Start()
 {
     Utils.RandomName(GateType.ToString(), gameObject);
 }
Example #9
0
 public override string ToString()
 {
     return(string.Format("{0} {1} {2}", GateName, GateNumber, GateType == GateType.none ? "" : "(" + GateType.ToString().Replace("_", " ") + ")"));
 }