Пример #1
0
  private void doFeudalTax() {
    for (Settlement settle : getData().getSettlements().values()) {
      double umsatzTax = settle.getSales();
      double settlerTax = settle.getTaxSum();
      settle.setSales(0.0);
      settle.setTaxSum(0.0);
      Owner owner = getData().getOwners().getOwner(settle.getOwnerId());
      int lehenId = settle.getTributId();
      int kingdomId = 0;
      Lehen tributLehen = getData().getLehen().getLehen(lehenId);
      if (tributLehen != null) {
        kingdomId = tributLehen.getKingdomId();
        tributLehen.depositSales((umsatzTax));
      } else if (owner != null) {
        kingdomId = owner.getKingdomId();
        owner.depositSales((umsatzTax));
      }
      Lehen kingLehen = getData().getLehen().getKingdomRoot(kingdomId);
      if (kingLehen != null) {
        kingLehen.depositSales((settlerTax));
      }
    }

    for (Kingdom kingdom : getData().getKingdoms().values()) {
      if (kingdom.getId() > 0) {
        Lehen root = getData().getLehen().getKingdomRoot(kingdom.getId());
        if (root != null) {
          for (Lehen lehen : getData().getLehen().getChildList(root.getId()).values()) {
            for (Lehen child : getData().getLehen().getChildList(lehen.getId()).values()) {
              double childsum = getChildSum(child);
              child.depositSales(childsum);
            }
            double sum = getChildSum(lehen);
            lehen.depositSales(sum);
          }
          double rootSum = getChildSum(root);
          root.getBank().depositKonto(rootSum, "TAX", 0);
          root.getBank().depositKonto(root.getSales(), "TAX", 0);
          root.setSales(0.0);
        }
      }
    }
  }
Пример #2
0
 private double getChildSum(Lehen lehen) {
   double childSum = 0;
   for (Lehen child : getData().getLehen().getChildList(lehen.getId()).values()) {
     double tax = child.getSales() * ConfigBasis.SALES_TAX / 100.0;
     childSum = childSum + tax;
     child.getBank().depositKonto(child.getSales(), "ME", 0);
     child.getBank().withdrawKonto(tax, "ME", 0);
     child.setSales(0.0);
   }
   return childSum;
 }
Пример #3
0
  /**
   * <pre>
   * run the production cycle for the settlement, lehen and regiments
   * for each tick only 1 settlement are calculated
   * first all settlement , then all lehen and then all regiment
   *
   * @return ModelStatus : MODEL_PRODUCTION | MODEL_ENABLED
   * </pre>
   */
  private ModelStatus nextProductionQueue() {
    int lSize = productionQueue.size();
    if (productionQueue.isEmpty() == false) {
      Settlement settle = productionQueue.get(0);
      settle.getMsg().clear();
      settle
          .getMsg()
          .add("[REALMS] Settle production:" + settle.getId() + ":" + lSize + ":" + this.dayOfWeek);
      settle.getReputations().resetDaily();
      settle.getMsg().add("settler max");
      settle.setSettlerMax();
      settle.getMsg().add("Building enable");
      settle.checkBuildingsEnabled(server);
      settle.getMsg().add("worker needed");
      settle.setWorkerNeeded();
      settle.getMsg().add("happiness");
      settle.doResident(data);
      settle.getMsg().add("produce");
      settle.doProduce(server, data, this.dayOfWeek);
      settle.getMsg().add("UnitTrain");
      settle.doUnitTrain(unitFactory);
      data.writeSettlement(settle);

      productionQueue.remove(0);
      messageData.log("remove 0");
      return ModelStatus.MODEL_PRODUCTION;
    }

    lSize = lehenProductionQueue.size();
    if (lehenProductionQueue.isEmpty() == false) {
      Lehen lehen = lehenProductionQueue.get(0);
      //			lehen.getMsg().clear();
      lehen
          .getMsg()
          .add(
              "[REALMS] lehen produce:"
                  + lehen.getName()
                  + ":"
                  + lehen.getId()
                  + " Settle:"
                  + lehen.getSupportId()
                  + " day"
                  + this.dayOfWeek);
      lehen.doProduce(server, data, this.dayOfWeek);
      lehen.getMsg().add("Lehen happiness");
      lehen.doResident(data);
      lehen.doUnitTrain(unitFactory);
      data.writeLehen(lehen);
      lehenProductionQueue.remove(0);
      return ModelStatus.MODEL_PRODUCTION;
    }

    if (regimentProductionQueue.isEmpty() == false) {
      Regiment regiment = regimentProductionQueue.get(0);
      regiment.getMsg().clear();
      regiment.getMsg().add("[REALMS] regiment production ");
      regiment.doProduce(server, data);
      data.writeRegiment(regiment);
      regimentProductionQueue.remove(0);
      return ModelStatus.MODEL_PRODUCTION;
    }
    System.out.println("[REALMS] production ended");
    return ModelStatus.MODEL_ENABLED;
  }