예제 #1
0
  public long getCurrentCredits() {
    // Calcule les crédits et ressources du joueur
    long credits = (long) systems.get(0).getCredits();

    // Temps écoulé depuis la dernière mise à jour des systèmes
    long dt = Utilities.getCurrentTime() - lastSystemsUpdate;

    for (PlayerStarSystemData system : systems) {
      double maxPopulation =
          BuildingData.getProduction(BuildingData.CIVILIAN_INFRASTRUCTURES, system);

      // Calcule la croissance de la population du système, jusqu'à
      // l'heure de la mise à jour
      double frame = system.getLastPopulationUpdate() + dt;
      double growth =
          PlayerStarSystemData.POPULATION_GROWTH
              * Settings.getTimeUnit()
              * frame
              * BuildingData.getProduction(BuildingData.CIVILIAN_INFRASTRUCTURES, system);

      // Limite la population en fonction du nombre d'infrastructures
      // civiles
      double growthCoef = .5;
      if (system.getPopulation() + growth > maxPopulation) {
        growthCoef =
            .5 * (maxPopulation - system.getPopulation()) / growth
                + (1 - (maxPopulation - system.getPopulation()) / growth);
        growth = maxPopulation - system.getPopulation();
      }

      // Calcule les crédits gagnés avec les corporations
      credits +=
          (system.getPopulation() + growth * growthCoef)
              * frame
              * BuildingData.getProduction(BuildingData.CORPORATIONS, system)
              * system.getProductionModifier()
              * BuildingData.EXPLOITATION_RATE
              * Settings.getTimeUnit();
    }

    return credits;
  }
예제 #2
0
  public double getCurrentPopulation(int systemId) {
    long dt = Utilities.getCurrentTime() - lastSystemsUpdate;

    for (PlayerStarSystemData system : systems) {
      if (system.getId() == systemId) {
        double maxPopulation =
            BuildingData.getProduction(BuildingData.CIVILIAN_INFRASTRUCTURES, system);

        // Calcule la croissance de la population du système, jusqu'à
        // l'heure de la mise à jour
        double frame = system.getLastPopulationUpdate() + dt;
        double growth =
            PlayerStarSystemData.POPULATION_GROWTH
                * Settings.getTimeUnit()
                * frame
                * BuildingData.getProduction(BuildingData.CIVILIAN_INFRASTRUCTURES, system);

        return Math.min(system.getPopulation() + growth, maxPopulation);
      }
    }

    return 0;
  }