home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 October / PCO1097.ISO / FilesBBS / FREI / DIGSIM.EXE / Switch.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-05-21  |  3.1 KB  |  137 lines

  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.util.Vector;
  4.  
  5. class Switch extends ElectronicComponent {
  6.    boolean SwitchClosed = false;
  7.    Vector ConnCompsA;
  8.    Vector ConnCompsB;
  9.    Vector ConnCompsQ;
  10.    int ALevel = -1;
  11.    int BLevel = -1;
  12.    int QLevel = -1;
  13.  
  14.    public Switch(Pin[][] var1, int var2, int var3) {
  15.       super(var2, var3, 10, 5, 3, 1, 4, 4, 0, 0);
  16.       super.ComponentName = "Switch";
  17.       super.ClassName = "Switch";
  18.       this.RegisterPins(var1, var2, var3);
  19.    }
  20.  
  21.    public Switch(ElectronicComponent var1, int var2, int var3) {
  22.       super(var1, var2, var3);
  23.    }
  24.  
  25.    public ElectronicComponent Copy(int var1, int var2) {
  26.       Switch var3 = new Switch(this, var1, var2);
  27.       return var3;
  28.    }
  29.  
  30.    public boolean SimMouseDown() {
  31.       this.SwitchClosed = !this.SwitchClosed;
  32.       return true;
  33.    }
  34.  
  35.    public void InformComponents(int var1, int var2, Vector var3, int var4, int var5) {
  36.       for(int var7 = 0; var7 < var3.size(); ++var7) {
  37.          ElectronicComponent var6 = (ElectronicComponent)var3.elementAt(var7);
  38.          if (var6 != this) {
  39.             var6.ReceivePotential(var1, var2, var4, var5);
  40.          }
  41.       }
  42.  
  43.    }
  44.  
  45.    public void ReceivePotential(int var1, int var2, int var3, int var4) {
  46.       if (var3 == super.Pos.x + 1 && var4 == super.Pos.y + 2) {
  47.          this.ALevel = var2;
  48.          if (!this.SwitchClosed) {
  49.             this.QLevel = var2;
  50.             this.InformComponents(var1, var2, this.ConnCompsQ, super.Pos.x + 9, super.Pos.y + 3);
  51.          }
  52.  
  53.       } else if (var3 == super.Pos.x + 1 && var4 == super.Pos.y + 4) {
  54.          this.BLevel = var2;
  55.          if (this.SwitchClosed) {
  56.             this.QLevel = var2;
  57.             this.InformComponents(var1, var2, this.ConnCompsQ, super.Pos.x + 9, super.Pos.y + 3);
  58.          }
  59.  
  60.       } else if (var3 == super.Pos.x + 9 && var4 == super.Pos.y + 3) {
  61.          this.QLevel = var2;
  62.          if (this.SwitchClosed) {
  63.             this.BLevel = var2;
  64.             this.InformComponents(var1, var2, this.ConnCompsB, super.Pos.x + 1, super.Pos.y + 4);
  65.          } else {
  66.             this.ALevel = var2;
  67.             this.InformComponents(var1, var2, this.ConnCompsA, super.Pos.x + 1, super.Pos.y + 2);
  68.          }
  69.       }
  70.    }
  71.  
  72.    public void SimulateSetUp(int var1, int var2, Vector var3) {
  73.       if (super.Pos.x + 1 == var1 && super.Pos.y + 2 == var2) {
  74.          this.ConnCompsA = var3;
  75.       }
  76.  
  77.       if (super.Pos.x + 1 == var1 && super.Pos.y + 4 == var2) {
  78.          this.ConnCompsB = var3;
  79.       }
  80.  
  81.       if (super.Pos.x + 9 == var1 && super.Pos.y + 3 == var2) {
  82.          this.ConnCompsQ = var3;
  83.       }
  84.  
  85.    }
  86.  
  87.    public void RemovePinsGrid(Pin[][] var1) {
  88.       ((ElectronicComponent)this).RemovePin(var1[super.Pos.x + 1][super.Pos.y + 2]);
  89.       ((ElectronicComponent)this).RemovePin(var1[super.Pos.x + 1][super.Pos.y + 4]);
  90.       ((ElectronicComponent)this).RemovePin(var1[super.Pos.x + 9][super.Pos.y + 3]);
  91.    }
  92.  
  93.    public void RegisterPins(Pin[][] var1, int var2, int var3) {
  94.       if (var1 != null) {
  95.          ((ElectronicComponent)this).RegisterPin(var1[var2 + 1][var3 + 2]);
  96.          ((ElectronicComponent)this).RegisterPin(var1[var2 + 1][var3 + 4]);
  97.          ((ElectronicComponent)this).RegisterPin(var1[var2 + 9][var3 + 3]);
  98.       }
  99.    }
  100.  
  101.    public void PlacePinsHere(Pin[][] var1) {
  102.       if (var1 != null) {
  103.          this.RegisterPins(var1, super.Pos.x, super.Pos.y);
  104.       }
  105.    }
  106.  
  107.    public void draw(Graphics var1, int var2, int var3, int var4) {
  108.       super.draw(var1, var2, var3, var4);
  109.       int var5 = super.Pos.x - var2;
  110.       int var6 = super.Pos.y - var3;
  111.       var1.setColor(ComponentPin.PinColor);
  112.       var1.drawLine((var5 + 1) * var4, (var6 + 2) * var4, (var5 + 3) * var4, (var6 + 2) * var4);
  113.       var1.drawLine((var5 + 1) * var4, (var6 + 4) * var4, (var5 + 3) * var4, (var6 + 4) * var4);
  114.       var1.drawLine((var5 + 8) * var4, (var6 + 3) * var4, (var5 + 9) * var4, (var6 + 3) * var4);
  115.       var1.setColor(ElectronicComponent.ComponentColor);
  116.       var1.fillRect((var5 + 3) * var4, (var6 + 2) * var4 - var4 / 3, var4 / 2, var4 / 2 + 1);
  117.       var1.fillRect((var5 + 3) * var4, (var6 + 4) * var4 - var4 / 3, var4 / 2, var4 / 2 + 1);
  118.       var1.fillRect((int)(((double)var5 + (double)7.5F) * (double)var4), (var6 + 3) * var4 - var4 / 3 + 1, var4 / 2, var4 / 2);
  119.       switch (this.QLevel) {
  120.          case 0:
  121.             var1.setColor(Color.green);
  122.             break;
  123.          case 5:
  124.             var1.setColor(Color.red);
  125.             break;
  126.          default:
  127.             var1.setColor(Color.gray);
  128.       }
  129.  
  130.       if (this.SwitchClosed) {
  131.          var1.drawLine((var5 + 3) * var4, (var6 + 4) * var4, (var5 + 8) * var4, (var6 + 3) * var4);
  132.       } else {
  133.          var1.drawLine((var5 + 3) * var4, (var6 + 2) * var4, (var5 + 8) * var4, (var6 + 3) * var4);
  134.       }
  135.    }
  136. }
  137.