예제 #1
0
        int odrediPomakScrolla(int sirinaKlijenta, int sirinaPrikaza, ScrollProperties scroll, int zeljenaPozicija, double brzina)
        {
            if (sirinaPrikaza >= sirinaKlijenta)
            {
                return(0);
            }

            double skala           = (sirinaKlijenta - sirinaPrikaza) / (double)(scroll.Maximum - scroll.LargeChange);
            int    pozicijaPrikaza = sirinaPrikaza / 2 + (int)(scroll.Value * skala);

            zeljenaPozicija = Fje.Ogranici(zeljenaPozicija, sirinaPrikaza / 2 + 1, sirinaKlijenta - sirinaPrikaza / 2 - 1);
            double delta = zeljenaPozicija - pozicijaPrikaza;

            if (brzina == 0)
            {
                return((int)delta);
            }

            if (Math.Abs(delta) < brzina + 2)
            {
                if (Math.Abs(delta) < 2)
                {
                    return((int)(delta * skala));
                }
                else
                {
                    return(Math.Sign(delta));
                }
            }
            else
            {
                return((int)(delta / (brzina * skala)));
            }
        }
예제 #2
0
        private void postaviBrBrodova()
        {
            int planetI = lstvPlaneti.SelectedIndices[0];
            Dictionary <string, ITekst> jezik = Postavke.Jezik[Kontekst.Kolonija];

            lblBrBrodova.Text      = Postavke.Jezik[Kontekst.FormKolonizacija, "lblBrBrodova"].tekst() + ": " + Fje.PrefiksFormater(brBrodova[planetI]);
            lblBrStanovnika.Text   = jezik["plPopulacija"].tekst() + ": " + Fje.PrefiksFormater(brBrodova[planetI] * brodPopulacija);
            lblBrRadnihMjesta.Text = jezik["plRadnaMjesta"].tekst() + ": " + Fje.PrefiksFormater(brBrodova[planetI] * brodRadnaMjesta);

            hscrBrBrodova.Enabled = false;
            hscrBrBrodova.Value   = Fje.Ogranici((int)(hscrBrBrodova.Maximum * (Math.Log(brBrodova[planetI]) / Math.Log(maxBrodova()))), hscrBrBrodova.Minimum, hscrBrBrodova.Maximum);
            hscrBrBrodova.Enabled = true;
        }
예제 #3
0
        public static string ProcjenaVremenaGradnje(double poeniIndustrije, double ostatakGradnje, Zgrada.ZgradaInfo uGradnji, Igrac igrac)
        {
            if (uGradnji == null)
            {
                return("");
            }
            double cijena = uGradnji.CijenaGradnje.iznos(igrac.efekti);

            double brZgrada = (ostatakGradnje + poeniIndustrije) / cijena;

            Dictionary <string, ITekst> jezik = Postavke.Jezik[Kontekst.Kolonija];
            Dictionary <string, double> vars  = new Dictionary <string, double>();

            if (brZgrada >= 1)
            {
                long dopustenaKolicina = (long)Math.Min(
                    uGradnji.DopustenaKolicina.iznos(igrac.efekti),
                    uGradnji.DopustenaKolicinaPoKrugu.iznos(igrac.efekti));
                brZgrada = Fje.Ogranici(brZgrada, 0, dopustenaKolicina);

                vars.Add("BR_ZGRADA", brZgrada);
                return(jezik["gradPoKrugu"].tekst(vars));
            }
            else
            {
                if (poeniIndustrije == 0)
                {
                    return(jezik["gradNikad"].tekst());
                }

                double brKrugova  = (cijena - ostatakGradnje) / (double)poeniIndustrije;
                double zaokruzeno = Math.Ceiling(brKrugova * 10) / 10;
                long   tmp        = (long)Math.Ceiling(brKrugova * 10);

                vars.Add("BR_KRUGOVA", Math.Ceiling(brKrugova * 10) / 10);
                vars.Add("DECIMALA", ((long)Math.Ceiling(brKrugova * 10)) % 10);

                if (brKrugova < 10)
                {
                    return(jezik["gradVrijemeDec"].tekst(vars));
                }
                else
                {
                    return(jezik["gradVrijemePref"].tekst(vars));
                }
            }
        }
예제 #4
0
        private void fazaOtkrivanja()
        {
            foreach (Strana strana in strane.Values)
            {
                double[] snagaSenzora = new double[Pozicije.MaxPozicija + 1];
                for (int i = 0; i < snagaSenzora.Length; i++)
                {
                    snagaSenzora[i] = double.NaN;
                }

                foreach (Borac borac in strana.Borci)
                {
                    int slot = Fje.Ogranici((int)Math.Round(borac.Pozicija), 0, Pozicije.MaxPozicija);
                    if (double.IsNaN(snagaSenzora[slot]))
                    {
                        snagaSenzora[slot] = borac.Dizajn.snagaSenzora;
                    }
                    else
                    {
                        snagaSenzora[slot] = Math.Max(borac.Dizajn.snagaSenzora, snagaSenzora[slot]);
                    }
                }

                strana.PostaviSnaguSenzora(snagaSenzora);
            }

            foreach (Borac borac in sviBorci)
            {
                foreach (var strana in strane)
                {
                    if (borac.Igrac != strana.Key)
                    {
                        double vjerojatnost = Vjerojatnost(strana.Value.SnagaSenzora((int)Math.Round(-borac.Pozicija)), borac.Dizajn.prikrivenost);
                        borac.Vidljiv[strana.Key.id] = (vjerojatnost > random.NextDouble());
                    }
                }
            }
        }