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

  1. import java.awt.Color;
  2. import java.awt.Graphics;
  3. import java.io.PrintStream;
  4. import java.util.Vector;
  5.  
  6. class Wire extends ElectronicComponent {
  7.    // $FF: renamed from: x1 int
  8.    protected int field_0;
  9.    // $FF: renamed from: y1 int
  10.    protected int field_1;
  11.    // $FF: renamed from: x2 int
  12.    protected int field_2;
  13.    // $FF: renamed from: y2 int
  14.    protected int field_3;
  15.    protected int ChangingWire;
  16.    int ActLevel = -1;
  17.    Vector ConnComps1;
  18.    Vector ConnComps2;
  19.    int ReceivedSimulationCycleID = -1;
  20.  
  21.    public Wire(Pin[][] var1, int var2, int var3) {
  22.       super.ComponentName = "wire";
  23.       this.field_0 = var2;
  24.       this.field_1 = var3;
  25.       this.ActLevel = -1;
  26.    }
  27.  
  28.    public Wire(Pin[][] var1, int var2, int var3, int var4, int var5) {
  29.       super.ComponentName = "wire";
  30.       this.field_0 = var2;
  31.       this.field_1 = var3;
  32.       this.field_2 = var4;
  33.       this.field_3 = var5;
  34.       this.ActLevel = -1;
  35.       this.PlacePinsHere(var1);
  36.    }
  37.  
  38.    public Wire(Pin[][] var1, int var2, int var3, int var4, int var5, int var6) {
  39.       super.ComponentName = "wire";
  40.       this.field_0 = var3;
  41.       this.field_1 = var4;
  42.       this.field_2 = var5;
  43.       this.field_3 = var6;
  44.       this.ActLevel = var2;
  45.       this.PlacePinsHere(var1);
  46.    }
  47.  
  48.    public Wire(ElectronicComponent var1, int var2, int var3) {
  49.       super.ComponentName = "wire";
  50.       this.ActLevel = -1;
  51.    }
  52.  
  53.    public ElectronicComponent Copy(int var1, int var2) {
  54.       Wire var3 = new Wire(this, var1, var2);
  55.       var3.field_0 = this.field_0 - var1;
  56.       var3.field_1 = this.field_1 - var2;
  57.       var3.field_2 = this.field_2 - var1;
  58.       var3.field_3 = this.field_3 - var2;
  59.       this.CheckPosition();
  60.       return var3;
  61.    }
  62.  
  63.    public void CheckPosition() {
  64.       if (this.field_0 < 1) {
  65.          this.field_0 = 1;
  66.       }
  67.  
  68.       if (this.field_0 >= 100) {
  69.          this.field_0 = 99;
  70.       }
  71.  
  72.       if (this.field_1 < 1) {
  73.          this.field_1 = 1;
  74.       }
  75.  
  76.       if (this.field_1 >= 100) {
  77.          this.field_1 = 99;
  78.       }
  79.  
  80.       if (this.field_2 < 1) {
  81.          this.field_2 = 1;
  82.       }
  83.  
  84.       if (this.field_2 >= 100) {
  85.          this.field_2 = 99;
  86.       }
  87.  
  88.       if (this.field_3 < 1) {
  89.          this.field_3 = 1;
  90.       }
  91.  
  92.       if (this.field_3 >= 100) {
  93.          this.field_3 = 99;
  94.       }
  95.  
  96.    }
  97.  
  98.    public void SimulateSetUp(int var1, int var2, Vector var3) {
  99.       if (var1 == this.field_0 && var2 == this.field_1) {
  100.          this.ConnComps1 = var3;
  101.       }
  102.  
  103.       if (var1 == this.field_2 && var2 == this.field_3) {
  104.          this.ConnComps2 = var3;
  105.       }
  106.  
  107.    }
  108.  
  109.    public void InitBeforeSimulate() {
  110.       this.ReceivedSimulationCycleID = -1;
  111.    }
  112.  
  113.    public void ReceivePotential(int var1, int var2, int var3, int var4) {
  114.       if (var1 != this.ReceivedSimulationCycleID || this.ActLevel != var2) {
  115.          this.ActLevel = var2;
  116.          this.ReceivedSimulationCycleID = var1;
  117.          if (this.field_0 == var3 && this.field_1 == var4) {
  118.             this.InformComponents(var1, this.ConnComps2, this.field_2, this.field_3);
  119.          } else if (this.field_2 == var3 && this.field_3 == var4) {
  120.             this.InformComponents(var1, this.ConnComps1, this.field_0, this.field_1);
  121.          }
  122.       }
  123.    }
  124.  
  125.    public void InformComponents(int var1, Vector var2, int var3, int var4) {
  126.       ((ElectronicComponent)this).SimulateLogic();
  127.  
  128.       for(int var6 = 0; var6 < var2.size(); ++var6) {
  129.          ElectronicComponent var5 = (ElectronicComponent)var2.elementAt(var6);
  130.          if (var5 != this) {
  131.             var5.ReceivePotential(var1, this.ActLevel, var3, var4);
  132.          }
  133.       }
  134.  
  135.    }
  136.  
  137.    public boolean AdjustPosition(Pin[][] var1, int var2, int var3) {
  138.       int var4 = this.field_0;
  139.       int var5 = this.field_1;
  140.       int var6 = this.field_2;
  141.       int var7 = this.field_3;
  142.       if ((this.ChangingWire & 1) == 1) {
  143.          var4 += var2;
  144.          var5 += var3;
  145.       }
  146.  
  147.       if ((this.ChangingWire & 2) == 2) {
  148.          var6 += var2;
  149.          var7 += var3;
  150.       }
  151.  
  152.       if (var4 == var6 && var5 == var7) {
  153.          return false;
  154.       } else {
  155.          this.field_0 = var4;
  156.          this.field_1 = var5;
  157.          this.field_2 = var6;
  158.          this.field_3 = var7;
  159.          return true;
  160.       }
  161.    }
  162.  
  163.    public void RemovePinsGrid(Pin[][] var1) {
  164.       ((ElectronicComponent)this).RemovePin(var1[this.field_0][this.field_1]);
  165.       ((ElectronicComponent)this).RemovePin(var1[this.field_2][this.field_3]);
  166.    }
  167.  
  168.    public void RegisterPins(Pin[][] var1, int var2, int var3) {
  169.       if (var1 != null) {
  170.          ((ElectronicComponent)this).RegisterPin(var1[this.field_0][this.field_1]);
  171.          ((ElectronicComponent)this).RegisterPin(var1[this.field_2][this.field_3]);
  172.       }
  173.    }
  174.  
  175.    public void PlacePinsHere(Pin[][] var1) {
  176.       if (var1 != null) {
  177.          this.RegisterPins(var1, 0, 0);
  178.       }
  179.    }
  180.  
  181.    public void Set2ndCoord(Pin[][] var1, int var2, int var3) {
  182.       this.field_2 = var2;
  183.       this.field_3 = var3;
  184.    }
  185.  
  186.    public void draw(Graphics var1, int var2, int var3, int var4) {
  187.       if (super.Selected) {
  188.          var1.setColor(Color.white);
  189.          if ((this.ChangingWire & 1) == 1) {
  190.             var1.drawRect((int)(((double)(this.field_0 - var2) - (double)0.25F) * (double)var4), (int)(((double)(this.field_1 - var3) - (double)0.25F) * (double)var4), var4 / 2, var4 / 2);
  191.          }
  192.  
  193.          if ((this.ChangingWire & 2) == 2) {
  194.             var1.drawRect((int)(((double)(this.field_2 - var2) - (double)0.25F) * (double)var4), (int)(((double)(this.field_3 - var3) - (double)0.25F) * (double)var4), var4 / 2, var4 / 2);
  195.          }
  196.       }
  197.  
  198.       if (this.ActLevel == 0) {
  199.          var1.setColor(Color.green);
  200.       } else if (this.ActLevel == 5) {
  201.          var1.setColor(Color.red);
  202.       } else {
  203.          var1.setColor(Color.gray);
  204.       }
  205.  
  206.       var1.drawLine((this.field_0 - var2) * var4, (this.field_1 - var3) * var4, (this.field_2 - var2) * var4, (this.field_3 - var3) * var4);
  207.    }
  208.  
  209.    public int sgn(int var1) {
  210.       if (var1 > 0) {
  211.          return 1;
  212.       } else {
  213.          return var1 < 0 ? -1 : 0;
  214.       }
  215.    }
  216.  
  217.    public boolean CheckIfPointInWire(int var1, int var2, int var3, int var4, int var5, int var6) {
  218.       int var7 = var3 - var1;
  219.       int var9 = var4 - var2;
  220.       int var11 = this.sgn(var7);
  221.       int var12 = this.sgn(var9);
  222.       int var13 = this.sgn(var7);
  223.       int var14 = 0;
  224.       int var15 = Math.abs(var7);
  225.       int var16 = Math.abs(var9);
  226.       if (var15 <= var16) {
  227.          var13 = 0;
  228.          var14 = this.sgn(var9);
  229.          var15 = Math.abs(var9);
  230.          var16 = Math.abs(var7);
  231.       }
  232.  
  233.       int var8 = var15 / 2;
  234.  
  235.       for(int var10 = 0; var10 < var15; ++var10) {
  236.          if (Math.abs(var5 - var1) < 1 && Math.abs(var6 - var2) < 1) {
  237.             return true;
  238.          }
  239.  
  240.          var8 += var16;
  241.          if (var8 >= var15) {
  242.             var8 -= var15;
  243.             var1 += var11;
  244.             var2 += var12;
  245.          } else {
  246.             var1 += var13;
  247.             var2 += var14;
  248.          }
  249.       }
  250.  
  251.       return false;
  252.    }
  253.  
  254.    public boolean CheckIfComponentClicked(int var1, int var2) {
  255.       if (var1 == this.field_0 && var2 == this.field_1) {
  256.          this.ChangingWire = 1;
  257.          return true;
  258.       } else if (var1 == this.field_2 && var2 == this.field_3) {
  259.          this.ChangingWire = 2;
  260.          return true;
  261.       } else if (this.CheckIfPointInWire(this.field_0, this.field_1, this.field_2, this.field_3, var1, var2)) {
  262.          this.ChangingWire = 3;
  263.          return true;
  264.       } else {
  265.          return false;
  266.       }
  267.    }
  268.  
  269.    public boolean CheckIfComponentInSelectBox(int var1, int var2, int var3, int var4) {
  270.       super.Selected = false;
  271.       this.ChangingWire = 0;
  272.       if (var1 <= this.field_0 && this.field_0 <= var3 && var2 <= this.field_1 && this.field_1 <= var4) {
  273.          this.ChangingWire |= 1;
  274.          super.Selected = true;
  275.       }
  276.  
  277.       if (var1 <= this.field_2 && this.field_2 <= var3 && var2 <= this.field_3 && this.field_3 <= var4) {
  278.          this.ChangingWire |= 2;
  279.          super.Selected = true;
  280.       }
  281.  
  282.       return super.Selected;
  283.    }
  284.  
  285.    public void Save(PrintStream var1) {
  286.       var1.println("describe component Wire");
  287.       var1.println(" pos " + this.field_0 + " " + this.field_1);
  288.       var1.println(" pos2 " + this.field_2 + " " + this.field_3);
  289.       var1.println("end describe");
  290.    }
  291.  
  292.    public boolean TryPlaceJunction(Schematic var1, Pin[][] var2, int var3, int var4, int var5) {
  293.       if (var3 == this.field_0 && var4 == this.field_1) {
  294.          return false;
  295.       } else if (var3 == this.field_2 && var4 == this.field_3) {
  296.          return false;
  297.       } else if (this.CheckIfPointInWire(this.field_0 * var5, this.field_1 * var5, this.field_2 * var5, this.field_3 * var5, var3 * var5, var4 * var5)) {
  298.          var1.addComponent(new Wire(var2, this.ActLevel, var3, var4, this.field_0, this.field_1));
  299.          this.RemovePinsGrid(var2);
  300.          this.field_0 = var3;
  301.          this.field_1 = var4;
  302.          this.PlacePinsHere(var2);
  303.          return true;
  304.       } else {
  305.          return false;
  306.       }
  307.    }
  308. }
  309.