Advertisement
Guest User

Untitled

a guest
May 31st, 2013
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.33 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10.  
  11. namespace Ocalc
  12. {
  13.     public partial class Main : Form
  14.     {
  15.         public Main()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.         private object lastBtnClicked;
  20.         private object lastPanelActive;
  21.         public object btnClicked;
  22.         public static float univSpeed = 1.0f;
  23.  
  24.         public class gravCalc
  25.         {
  26.             public static UInt64 energyNeeded = 300000;
  27.             public static UInt32 solarEnergy = 0;
  28.             public static UInt32 fusionEnergy = 0;
  29.             public static UInt16 satelliteEnergy = 26;
  30.             public static UInt64 satelliteNumber;
  31.             public static float engineer = 1.0f;
  32.             public static UInt16 constructTime;
  33.             public static UInt64 timeNeeded;
  34.             public static UInt64 crystal;
  35.             public static UInt64 deuter;
  36.  
  37.             public static void EnergyNeeded(UInt16 level)
  38.             {
  39.                 UInt64 energy = 300000;
  40.                 UInt64 temp = 0;
  41.                 for (UInt16 i = 1; i < level; i++)
  42.                 {
  43.                     for (UInt16 j = 1; j <= 3; j++)
  44.                     {
  45.                         temp += energy;
  46.                     }
  47.                     energy = temp;
  48.                     temp = 0;
  49.                 }
  50.                 energyNeeded = energy;
  51.             }
  52.  
  53.             public static void SolarEnergy(UInt16 level)
  54.             {
  55.                 solarEnergy = (UInt32)(20 * level * Math.Pow(1.1, level) * engineer);
  56.             }
  57.  
  58.             public static void FusionEnergy(UInt16 level, UInt16 techLevel)
  59.             {
  60.                 fusionEnergy = (UInt32)(30 * level * Math.Pow(1.05 + (techLevel * 0.01), level) * engineer);
  61.             }
  62.  
  63.             public static void SatteliteEnergy(Int16 minTemp, Int16 maxTemp)
  64.             {
  65.                 Int16 avTemp = (Int16)((minTemp + maxTemp) / 2);
  66.                 satelliteEnergy = (UInt16)(((avTemp + 160) / 6) * engineer);
  67.             }
  68.  
  69.             public static void Calculate(UInt16 shipyardLevel, UInt16 nanoLevel)
  70.             {
  71.                 if (solarEnergy + fusionEnergy > energyNeeded)
  72.                 {
  73.                     MessageBox.Show("LOL", "", MessageBoxButtons.OK);
  74.                     deuter = 0;
  75.                     crystal = 0;
  76.                     timeNeeded = 0;
  77.                 }
  78.                 else
  79.                 {
  80.                     UInt64 missingEnergy = energyNeeded - (UInt64)(solarEnergy + fusionEnergy);
  81.                     satelliteNumber = missingEnergy / satelliteEnergy;
  82.                     if (missingEnergy % satelliteEnergy > 0) satelliteNumber++;
  83.  
  84.                     deuter = satelliteNumber * 500;
  85.                     crystal = satelliteNumber * 2000;
  86.  
  87.                     if ((0.8 / (shipyardLevel + 1) / Math.Pow(2, nanoLevel) * 3600 / univSpeed) < 1.0f)
  88.                     {
  89.                         constructTime = 1;
  90.                     }
  91.                     else
  92.                     {
  93.                         constructTime = (UInt16)(0.8 / (shipyardLevel + 1) / Math.Pow(2, nanoLevel) * 3600 / univSpeed);
  94.                     }
  95.                     timeNeeded = satelliteNumber * constructTime;
  96.                 }                
  97.             }
  98.  
  99.             public static string FormattedNumber(UInt64 number)
  100.             {
  101.                 StringBuilder output = new StringBuilder();
  102.                 output.Append(number);
  103.                 for (int i = output.Length - 3; i > 0; i = i - 3)
  104.                 {
  105.                     output.Insert(i, " ");
  106.                 }
  107.                 return output.ToString();
  108.             }
  109.  
  110.             public static string FormattedTime(UInt64 time)
  111.             {
  112.                 StringBuilder output = new StringBuilder();
  113.                 if (time == 0)
  114.                 {
  115.                     output.Append(time);
  116.                     output.Append(" sekund");
  117.                     return output.ToString();
  118.                 }
  119.                 else
  120.                 {
  121.                     if (time > 31557600)
  122.                     {
  123.                         output.Append(time / 31557600);
  124.                         output.Append(" lat  ");
  125.                         time %= 31557600;
  126.                     }
  127.                     if (time > 86400)
  128.                     {
  129.                         output.Append(time / 86400);
  130.                         output.Append(" dni  ");
  131.                         time %= 86400;
  132.                     }
  133.                     if (time > 3600)
  134.                     {
  135.                         output.Append(time / 3600);
  136.                         output.Append(" godzin  ");
  137.                         time %= 3600;
  138.                     }
  139.                     if (time > 60)
  140.                     {
  141.                         output.Append(time / 60);
  142.                         output.Append(" minut  ");
  143.                         time %= 60;
  144.                     }
  145.                     if (time > 0)
  146.                     {
  147.                         output.Append(time);
  148.                         output.Append(" sekund");
  149.                     }
  150.                     return output.ToString();
  151.                 }
  152.             }
  153.            
  154.         };
  155.         public Int16 spyCalc(Int16 spyOwnResearchLevel, Int16 spyEnemyResearchLevel, Int16 scanLevel)
  156.         {
  157.             if (scanLevel == 1) return 1;
  158.  
  159.             Int16 factor = 0;
  160.             if (spyOwnResearchLevel > spyEnemyResearchLevel) factor = -1;
  161.             if (spyOwnResearchLevel < spyEnemyResearchLevel) factor = 1;
  162.            
  163.             Int16 probesNumber;
  164.             probesNumber = (Int16)(scanLevel + (factor * (spyOwnResearchLevel - spyEnemyResearchLevel) * (spyOwnResearchLevel - spyEnemyResearchLevel)));
  165.             if (probesNumber < 1) return 1;
  166.             return probesNumber;
  167.         }
  168.  
  169.         public void buttonDefault(object sender)
  170.         {
  171.             (sender as Control).BackColor = System.Drawing.SystemColors.Control;
  172.             (sender as Control).ForeColor = System.Drawing.SystemColors.ControlText;
  173.         }
  174.  
  175.         public void buttonClicked(object sender)
  176.         {
  177.             (sender as Control).BackColor = System.Drawing.SystemColors.HotTrack;
  178.             (sender as Control).ForeColor = System.Drawing.SystemColors.HighlightText;
  179.         }
  180.  
  181.         public void buttonOver(object sender)
  182.         {
  183.             (sender as Control).BackColor = System.Drawing.SystemColors.Highlight;
  184.             (sender as Control).ForeColor = System.Drawing.SystemColors.HighlightText;
  185.         }
  186.  
  187.         private void buttonEnter(object sender)
  188.         {
  189.             if (sender != lastBtnClicked)
  190.             {
  191.                 buttonOver(sender);
  192.             }
  193.         }
  194.  
  195.         private void buttonDown(object sender)
  196.         {
  197.             if (lastBtnClicked != sender)
  198.             {
  199.                 if (lastBtnClicked != null)
  200.                 {
  201.                     buttonDefault(lastBtnClicked);
  202.                 }
  203.                 buttonClicked(sender);
  204.                 lastBtnClicked = sender;
  205.             }
  206.             else
  207.             {
  208.                 buttonDefault(lastBtnClicked);
  209.                 lastBtnClicked = null;
  210.             }
  211.         }
  212.  
  213.         private void buttonLeave(object sender)
  214.         {
  215.             if (sender != lastBtnClicked)
  216.             {
  217.                 buttonDefault(sender);
  218.             }
  219.         }
  220.  
  221.         private void panelActivate(object sender)
  222.         {
  223.             if (lastPanelActive != sender)
  224.             {
  225.                 if (lastPanelActive != null)
  226.                 {
  227.                     (lastPanelActive as Control).Visible = false;
  228.                 }
  229.                 (sender as Control).Visible = true;
  230.                 lastPanelActive = sender;
  231.             }
  232.             else
  233.             {
  234.                 (lastPanelActive as Control).Visible = false;
  235.                 lastPanelActive = null;
  236.             }
  237.         }
  238.        
  239.         private void costsButton_MouseDown(object sender, MouseEventArgs e)
  240.         {
  241.             buttonDown(sender);
  242.             panelActivate(costsPanel);
  243.         }
  244.  
  245.         private void costsButton_MouseEnter(object sender, EventArgs e)
  246.         {
  247.             buttonEnter(sender);
  248.         }
  249.  
  250.         private void costsButton_MouseLeave(object sender, EventArgs e)
  251.         {
  252.             buttonLeave(sender);
  253.         }
  254.  
  255.         private void gravButton_MouseDown(object sender, MouseEventArgs e)
  256.         {
  257.             buttonDown(sender);
  258.             panelActivate(gravPanel);
  259.         }
  260.  
  261.         private void gravButton_MouseEnter(object sender, EventArgs e)
  262.         {
  263.             buttonEnter(sender);
  264.         }
  265.  
  266.         private void gravButton_MouseLeave(object sender, EventArgs e)
  267.         {
  268.             buttonLeave(sender);
  269.         }
  270.  
  271.         private void flightTimeButton_MouseDown(object sender, MouseEventArgs e)
  272.         {
  273.             buttonDown(sender);
  274.             panelActivate(flightTimePanel);
  275.         }
  276.  
  277.         private void flightTimeButton_MouseEnter(object sender, EventArgs e)
  278.         {
  279.             buttonEnter(sender);
  280.         }
  281.  
  282.         private void flightTimeButton_MouseLeave(object sender, EventArgs e)
  283.         {
  284.             buttonLeave(sender);
  285.         }
  286.  
  287.         private void colonyButton_MouseDown(object sender, MouseEventArgs e)
  288.         {
  289.             buttonDown(sender);
  290.             panelActivate(colonyPanel);
  291.         }
  292.  
  293.         private void colonyButton_MouseEnter(object sender, EventArgs e)
  294.         {
  295.             buttonEnter(sender);
  296.         }
  297.  
  298.         private void colonyButton_MouseLeave(object sender, EventArgs e)
  299.         {
  300.             buttonLeave(sender);
  301.         }
  302.  
  303.         private void spyButton_MouseDown(object sender, MouseEventArgs e)
  304.         {
  305.             buttonDown(sender);
  306.             panelActivate(spyPanel);
  307.         }
  308.  
  309.         private void spyButton_MouseEnter(object sender, EventArgs e)
  310.         {
  311.             buttonEnter(sender);
  312.         }
  313.  
  314.         private void spyButton_MouseLeave(object sender, EventArgs e)
  315.         {
  316.             buttonLeave(sender);
  317.         }
  318.  
  319.         private void splitContainer1_Panel1_MouseDown(object sender, MouseEventArgs e)
  320.         {
  321.             if (lastBtnClicked != null)
  322.             {
  323.                 buttonDefault(lastBtnClicked);
  324.                 lastBtnClicked = null;
  325.             }
  326.             if (lastPanelActive != null)
  327.             {
  328.                 (lastPanelActive as Control).Visible = false;
  329.                 lastPanelActive = null;
  330.             }
  331.         }
  332.  
  333.         private void spyCountButton_MouseDown(object sender, EventArgs e)
  334.         {
  335.             buttonClicked(sender);
  336.  
  337.             Int16 scanLevel = 1;
  338.             switch (spyScanLevelBar.Value)
  339.             {
  340.                 case 0: scanLevel = 1; break;
  341.                 case 1: scanLevel = 2; break;
  342.                 case 2: scanLevel = 3; break;
  343.                 case 3: scanLevel = 5; break;
  344.                 case 4: scanLevel = 7; break;
  345.             }
  346.  
  347.             spyProbesNeeded.Text = spyCalc(Convert.ToInt16(spyOwnResearch.Value), Convert.ToInt16(spyEnemyResearch.Value), scanLevel).ToString();
  348.         }
  349.  
  350.         private void spyCountButton_MouseEnter(object sender, EventArgs e)
  351.         {
  352.             buttonOver(sender);
  353.         }
  354.  
  355.         private void spyCountButton_MouseLeave(object sender, EventArgs e)
  356.         {
  357.             buttonDefault(sender);
  358.         }
  359.  
  360.         private void gravCountButton_MouseDown(object sender, EventArgs e)
  361.         {
  362.             buttonClicked(sender);
  363.             univSpeed = (float)univSpeedValue.Value;
  364.             gravCalc.SolarEnergy((UInt16)gravSolar.Value);
  365.             gravCalc.FusionEnergy((UInt16)gravFusion.Value, (UInt16)gravEnergyResearch.Value);
  366.             gravCalc.SatteliteEnergy((Int16)gravMinTemp.Value, (Int16)gravMaxTemp.Value);
  367.             gravSolarEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.solarEnergy);
  368.             gravFusionEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.fusionEnergy);
  369.             gravSatelliteEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.satelliteEnergy);
  370.             gravCalc.Calculate((UInt16)gravShipyard.Value, (UInt16)gravNanite.Value);
  371.             gravBuildTimeLabel.Text = "Czas budowy:   " + gravCalc.FormattedTime(gravCalc.timeNeeded);
  372.             gravSatellitesNeededLabel.Text = "Potrzebujesz:   " + gravCalc.FormattedNumber(gravCalc.satelliteNumber) + " satelit";
  373.             gravResourcesNeededLabel.Text = gravCalc.FormattedNumber(gravCalc.crystal) + " kryształu       " + gravCalc.FormattedNumber(gravCalc.deuter) + " deuteru";
  374.         }
  375.  
  376.         private void univSpeedValue_ValueChanged(object sender, EventArgs e)
  377.         {
  378.             univSpeed = (float)univSpeedValue.Value;
  379.         }
  380.  
  381.         private void gravMechanicCheckbox_CheckedChanged(object sender, EventArgs e)
  382.         {
  383.             if (gravEngineerCheckbox.Checked)
  384.             {
  385.                 gravCalc.engineer = 1.1f;
  386.                 gravEngineerLabel.Visible = true;
  387.                 gravEngineerLine.Visible = true;          
  388.             }
  389.             else
  390.             {
  391.                 gravCalc.engineer = 1.0f;
  392.                 gravEngineerLabel.Visible = false;
  393.                 gravEngineerLine.Visible = false;
  394.             }
  395.             gravCalc.SolarEnergy((UInt16)gravSolar.Value);
  396.             gravCalc.FusionEnergy((UInt16)gravFusion.Value, (UInt16)gravEnergyResearch.Value);
  397.             gravCalc.SatteliteEnergy((Int16)gravMinTemp.Value, (Int16)gravMaxTemp.Value);
  398.             gravSolarEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.solarEnergy);
  399.             gravFusionEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.fusionEnergy);
  400.             gravSatelliteEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.satelliteEnergy);
  401.         }
  402.  
  403.         private void gravTemp_ValueChanged(object sender, EventArgs e)
  404.         {
  405.             if (gravMinTemp.Value > gravMaxTemp.Value) gravMinTemp.Value = gravMaxTemp.Value;
  406.             gravCalc.SatteliteEnergy((Int16)gravMinTemp.Value, (Int16)gravMaxTemp.Value);
  407.             gravSatelliteEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.satelliteEnergy);
  408.         }
  409.  
  410.         private void gravLevel_ValueChanged(object sender, EventArgs e)
  411.         {
  412.             gravCalc.EnergyNeeded((UInt16)gravLevel.Value);
  413.             gravNeededEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.energyNeeded);
  414.         }
  415.  
  416.         private void gravSolar_ValueChanged(object sender, EventArgs e)
  417.         {
  418.             gravCalc.SolarEnergy((UInt16)gravSolar.Value);
  419.             gravSolarEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.solarEnergy);
  420.         }
  421.  
  422.         private void gravFusion_ValueChanged(object sender, EventArgs e)
  423.         {
  424.             gravCalc.FusionEnergy((UInt16)gravFusion.Value, (UInt16)gravEnergyResearch.Value);
  425.             gravFusionEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.fusionEnergy);
  426.         }
  427.  
  428.         private void gravEnergyResearch_ValueChanged(object sender, EventArgs e)
  429.         {
  430.             gravCalc.FusionEnergy((UInt16)gravFusion.Value, (UInt16)gravEnergyResearch.Value);
  431.             gravFusionEnergyLabel.Text = gravCalc.FormattedNumber(gravCalc.fusionEnergy);
  432.         }
  433.     }
  434. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement