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); } }
//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); } }
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); } }
// 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; } }
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(); }
public override string ToString() { return("{0} to {1}".F(GateType.ToString(), Destination.System)); }
private void Start() { Utils.RandomName(GateType.ToString(), gameObject); }
public override string ToString() { return(string.Format("{0} {1} {2}", GateName, GateNumber, GateType == GateType.none ? "" : "(" + GateType.ToString().Replace("_", " ") + ")")); }