tdog442

Rechargeable Battery

Jun 13th, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. #include "simulation/Elements.h"
  2. //#TPT-Directive ElementClass Element_RBTY PT_RBTY 173
  3. Element_RBTY::Element_RBTY()
  4. {
  5. Identifier = "DEFAULT_PT_RBTY";
  6. Name = "RBTY";
  7. Colour = PIXPACK(0x959615);
  8. MenuVisible = 1;
  9. MenuSection = SC_ELEC;
  10. Enabled = 1;
  11.  
  12. Advection = 0.0f;
  13. AirDrag = 0.00f * CFDS;
  14. AirLoss = 0.00f;
  15. Loss = 0.00f;
  16. Collision = 0.0f;
  17. Gravity = 0.0f;
  18. Diffusion = 0.00f;
  19. HotAir = 0.000f * CFDS;
  20. Falldown = 0;
  21.  
  22. Flammable = 0;
  23. Explosive = 0;
  24. Meltable = 0;
  25. Hardness = 20;
  26.  
  27. Weight = 100;
  28.  
  29. Temperature = R_TEMP+0.0f +273.15f;
  30. HeatConduct = 100;
  31. Description = "Rechargeable battery.";
  32.  
  33. State = ST_SOLID;
  34. Properties = TYPE_SOLID;
  35.  
  36. LowPressure = IPL;
  37. LowPressureTransition = NT;
  38. HighPressure = IPH;
  39. HighPressureTransition = NT;
  40. LowTemperature = ITL;
  41. LowTemperatureTransition = NT;
  42. HighTemperature = 2273.0f;
  43. HighTemperatureTransition = PT_PLSM;
  44.  
  45. Update = &Element_RBTY::update;
  46.  
  47. }
  48. //#TPT-Directive ElementHeader Element_RBTY static int update(UPDATE_FUNC_ARGS)
  49. int Element_RBTY::update(UPDATE_FUNC_ARGS)
  50. {
  51. int r, rx, ry;
  52. // Okay so just a looparound
  53. for (rx=-1; rx<2; rx++)
  54. for (ry=-1; ry<2; ry++)
  55. if (BOUNDS_CHECK && (rx || ry))
  56. {
  57. r = pmap[y+ry][x+rx];
  58. if (!r)
  59. continue;
  60. if( sim->pv[x/CELL][y/CELL] >= 200.0f)
  61. sim->part_change_type(i, x, y, PT_PLEX);
  62. /*if(parts[i].temp<=173.15)
  63. parts[i].tmp=1;*/
  64. while((r&0xFF)==PT_SPRK && parts[r>>8].ctype==PT_PSCN)
  65. {
  66. parts[i].life++;
  67. parts[i].tmp2=1;
  68. parts[i].tmp=1;
  69. parts[i].ctype=PT_BTRY;
  70. break;
  71. }
  72. while((r&0xFF)==PT_PSCN && parts[r>>8].life<=0 && (r&0xFF)!=PT_SPRK)
  73. {
  74. parts[i].tmp=0;
  75. parts[i].tmp2=0;
  76. break;
  77. }
  78. /*if(parts[i].ctype==PT_LIFE && parts[i].tmp2==0 && (r&0xFF)==PT_RBTY)
  79. {
  80. parts[r>>8].tmp2=0;
  81. if(parts[r>>8].life!=0) parts[i].life=parts[r>>8].life;
  82. }*/
  83. if((r&0xFF)!=PT_PSCN && parts[i].life>0 && (sim->elements[r&0xFF].Properties&PROP_CONDUCTS) && parts[r>>8].life<=0 && parts[i].tmp2!=1)
  84. {
  85. parts[r>>8].life = 4;
  86. parts[r>>8].ctype = r&0xFF;
  87. sim->part_change_type(r>>8,x+rx,y+ry,PT_SPRK);
  88. parts[i].life--;
  89. if(parts[i].ctype!=PT_BTRY) parts[i].ctype=PT_SPRK;
  90. }
  91. if((r&0xFF)!=PT_PSCN && (sim->elements[r&0xFF].Properties&PROP_CONDUCTS) && parts[r>>8].life<=0 && parts[i].ctype!=PT_BTRY)
  92. {
  93. parts[i].ctype=PT_SPRK;
  94. }
  95. if((r&0xFF)==PT_RBTY && parts[i].life>=parts[r>>8].life && parts[i].ctype==PT_METL)
  96. {
  97. if(parts[i].life>parts[r>>8].life && parts[r>>8].ctype==PT_METL && parts[i].tmp==1)
  98. {
  99. parts[r>>8].tmp=1;
  100. if(parts[i].life>parts[r>>8].life) parts[r>>8].life=parts[i].life;
  101. parts[i].tmp=0;
  102. }
  103. if(parts[i].life>parts[r>>8].life && parts[r>>8].ctype==PT_SPRK && parts[i].tmp==1)
  104. {
  105. if(parts[i].life>parts[r>>8].life) parts[r>>8].life=parts[i].life;
  106. parts[i].tmp=0;
  107. }
  108. if(parts[i].life==parts[r>>8].life && parts[r>>8].life>0 && parts[i].tmp==1 && parts[i].life>0 && parts[r>>8].ctype==PT_SPRK)
  109. {
  110. parts[i].tmp=0;
  111. }
  112. if(parts[i].life>parts[r>>8].life && parts[i].tmp==0 && parts[r>>8].tmp==0)
  113. {
  114. parts[i].life=parts[r>>8].life;
  115. }
  116. }
  117. if((r&0xFF)==PT_RBTY && parts[i].ctype==PT_SPRK && parts[r>>8].ctype==PT_METL)
  118. {
  119. if(parts[r>>8].tmp==1) parts[i].tmp2=1;
  120. if(parts[r>>8].tmp==0) parts[i].tmp2=0;
  121. }
  122. if((r&0xFF)==PT_RBTY && parts[i].life>=parts[r>>8].life && parts[r>>8].ctype==PT_NONE && parts[i].ctype==PT_METL)
  123. {
  124. parts[r>>8].tmp2=parts[i].tmp2;
  125. if(parts[i].life>parts[r>>8].life) parts[r>>8].life=parts[i].life;
  126. parts[r>>8].ctype=PT_METL;
  127. }
  128. if((r&0xFF)==PT_RBTY && parts[r>>8].ctype==PT_SPRK && parts[i].ctype!=PT_BTRY)
  129. {
  130. if(parts[r>>8].life<parts[i].life && parts[i].tmp!=1) parts[i].life=parts[r>>8].life;
  131. parts[i].ctype=PT_METL;
  132. }
  133. if((r&0xFF)==PT_RBTY && parts[i].ctype==PT_BTRY)
  134. {
  135. if(parts[i].life>parts[r>>8].life && parts[i].tmp==1)
  136. {
  137. parts[r>>8].life=parts[i].life;
  138. }
  139. if(parts[r>>8].ctype==PT_METL) parts[r>>8].tmp=1;
  140. parts[r>>8].tmp2=parts[i].tmp2;
  141. if(parts[r>>8].ctype==PT_NONE) parts[r>>8].ctype=PT_METL;
  142. if(parts[i].tmp==0)
  143. {
  144. if(parts[i].life>parts[r>>8].life) parts[i].life=parts[r>>8].life;
  145. parts[r>>8].tmp=0;
  146. }
  147. }
  148. }
  149. return 0;
  150. }
  151. Element_RBTY::~Element_RBTY() {}
Advertisement
Add Comment
Please, Sign In to add comment