Village state refactoring
This commit is contained in:
		@@ -24,7 +24,7 @@ export class BalanceHeroResourcesAction extends ActionController {
 | 
			
		||||
            thisVillageState.required.balance,
 | 
			
		||||
            thisVillageState.commitments,
 | 
			
		||||
            thisVillageState.totalRequired.balance,
 | 
			
		||||
            thisVillageState.resources.sub(thisVillageState.storage),
 | 
			
		||||
            thisVillageState.resources.sub(thisVillageState.storage.capacity),
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        console.log('Requirements');
 | 
			
		||||
 
 | 
			
		||||
@@ -60,7 +60,7 @@ export class SendResourcesAction extends ActionController {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private getRecipientRequirements(recipientState: VillageState): Resources {
 | 
			
		||||
        const maxPossibleToStore = recipientState.storage.sub(recipientState.performance);
 | 
			
		||||
        const maxPossibleToStore = recipientState.storage.capacity.sub(recipientState.performance);
 | 
			
		||||
        const currentResources = recipientState.resources;
 | 
			
		||||
        const incomingResources = recipientState.incomingResources;
 | 
			
		||||
        const requirementResources = recipientState.required.resources;
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
        </tr>
 | 
			
		||||
      </thead>
 | 
			
		||||
      <tbody>
 | 
			
		||||
        <template v-for="villageState in shared.villageStates">
 | 
			
		||||
        <template v-for="villageState in villageStates">
 | 
			
		||||
          <tr class="normal-line top-line">
 | 
			
		||||
            <td :class="{ active: villageState.village.active }" :title="villageState.id">
 | 
			
		||||
              {{ villageState.village.name }}
 | 
			
		||||
@@ -20,28 +20,28 @@
 | 
			
		||||
            <td class="right">
 | 
			
		||||
              <filling
 | 
			
		||||
                :value="villageState.resources.lumber"
 | 
			
		||||
                :max="villageState.storage.lumber"
 | 
			
		||||
                :max="villageState.storage.capacity.lumber"
 | 
			
		||||
                :speed="villageState.performance.lumber"
 | 
			
		||||
              ></filling>
 | 
			
		||||
            </td>
 | 
			
		||||
            <td class="right">
 | 
			
		||||
              <filling
 | 
			
		||||
                :value="villageState.resources.clay"
 | 
			
		||||
                :max="villageState.storage.clay"
 | 
			
		||||
                :max="villageState.storage.capacity.clay"
 | 
			
		||||
                :speed="villageState.performance.clay"
 | 
			
		||||
              ></filling>
 | 
			
		||||
            </td>
 | 
			
		||||
            <td class="right">
 | 
			
		||||
              <filling
 | 
			
		||||
                :value="villageState.resources.iron"
 | 
			
		||||
                :max="villageState.storage.iron"
 | 
			
		||||
                :max="villageState.storage.capacity.iron"
 | 
			
		||||
                :speed="villageState.performance.iron"
 | 
			
		||||
              ></filling>
 | 
			
		||||
            </td>
 | 
			
		||||
            <td class="right">
 | 
			
		||||
              <filling
 | 
			
		||||
                :value="villageState.resources.crop"
 | 
			
		||||
                :max="villageState.storage.crop"
 | 
			
		||||
                :max="villageState.storage.capacity.crop"
 | 
			
		||||
                :speed="villageState.performance.crop"
 | 
			
		||||
              ></filling>
 | 
			
		||||
            </td>
 | 
			
		||||
@@ -167,7 +167,7 @@
 | 
			
		||||
            <td></td>
 | 
			
		||||
            <td class="right" colspan="5">
 | 
			
		||||
              <a
 | 
			
		||||
                v-for="s in shared.villageStates"
 | 
			
		||||
                v-for="s in villageStates"
 | 
			
		||||
                v-if="s.id !== villageState.id"
 | 
			
		||||
                class="village-quick-link"
 | 
			
		||||
                :class="{ active: villageState.shipment.includes(s.id) }"
 | 
			
		||||
@@ -218,6 +218,7 @@ export default {
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      shared: this.$root.$data,
 | 
			
		||||
      villageStates: this.$root.$data.villageStates,
 | 
			
		||||
      activeVillageState: this.$root.$data.activeVillageState,
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
@@ -226,8 +227,8 @@ export default {
 | 
			
		||||
      return path(name, args);
 | 
			
		||||
    },
 | 
			
		||||
    storageTime(villageState) {
 | 
			
		||||
      const toZero = villageState.storageBalance.timeToZero;
 | 
			
		||||
      const toFull = villageState.storageBalance.timeToFull;
 | 
			
		||||
      const toZero = villageState.storage.timeToZero;
 | 
			
		||||
      const toFull = villageState.storage.timeToFull;
 | 
			
		||||
      return this.renderGatheringTime(toFull.never ? toZero : toFull);
 | 
			
		||||
    },
 | 
			
		||||
    marketPath(fromVillage, toVillage) {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,9 +6,9 @@ import { calcGatheringTimings, GatheringTime } from './Core/GatheringTimings';
 | 
			
		||||
import { VillageRepositoryInterface } from './VillageRepository';
 | 
			
		||||
import { VillageNotFound } from './Errors';
 | 
			
		||||
 | 
			
		||||
interface StorageBalance {
 | 
			
		||||
interface VillageStorageState {
 | 
			
		||||
    resources: Resources;
 | 
			
		||||
    storage: Resources;
 | 
			
		||||
    capacity: Resources;
 | 
			
		||||
    balance: Resources;
 | 
			
		||||
    performance: Resources;
 | 
			
		||||
    timeToZero: GatheringTime;
 | 
			
		||||
@@ -21,7 +21,7 @@ interface RequiredResources {
 | 
			
		||||
     */
 | 
			
		||||
    resources: Resources;
 | 
			
		||||
    /**
 | 
			
		||||
     * Balance resources (current - required), may be negative
 | 
			
		||||
     * Balance resources (current - required, may be negative)
 | 
			
		||||
     */
 | 
			
		||||
    balance: Resources;
 | 
			
		||||
    /**
 | 
			
		||||
@@ -44,9 +44,14 @@ interface VillageOwnState {
 | 
			
		||||
     */
 | 
			
		||||
    resources: Resources;
 | 
			
		||||
    performance: Resources;
 | 
			
		||||
    storage: Resources;
 | 
			
		||||
    storageBalance: StorageBalance;
 | 
			
		||||
    storage: VillageStorageState;
 | 
			
		||||
    /**
 | 
			
		||||
     * Required resources for nearest task
 | 
			
		||||
     */
 | 
			
		||||
    required: RequiredResources;
 | 
			
		||||
    /**
 | 
			
		||||
     * Required resources for all tasks
 | 
			
		||||
     */
 | 
			
		||||
    totalRequired: RequiredResources;
 | 
			
		||||
    incomingResources: Resources;
 | 
			
		||||
    buildRemainingSeconds: number;
 | 
			
		||||
@@ -58,7 +63,7 @@ interface VillageOwnStateDictionary {
 | 
			
		||||
 | 
			
		||||
export interface VillageState extends VillageOwnState {
 | 
			
		||||
    /**
 | 
			
		||||
     * Resource commitments of this village to other
 | 
			
		||||
     * Resource commitments of this village to other (may be negative)
 | 
			
		||||
     */
 | 
			
		||||
    commitments: Resources;
 | 
			
		||||
    /**
 | 
			
		||||
@@ -75,10 +80,10 @@ function calcResourceBalance(resources: Resources, current: Resources, performan
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function calcStorageBalance(resources: Resources, storage: Resources, performance: Resources): StorageBalance {
 | 
			
		||||
function calcStorageBalance(resources: Resources, storage: Resources, performance: Resources): VillageStorageState {
 | 
			
		||||
    return {
 | 
			
		||||
        resources,
 | 
			
		||||
        storage,
 | 
			
		||||
        capacity: storage,
 | 
			
		||||
        performance,
 | 
			
		||||
        balance: storage.sub(resources),
 | 
			
		||||
        timeToZero: timeToFastestResource(resources, Resources.zero(), performance),
 | 
			
		||||
@@ -114,8 +119,7 @@ function createVillageOwnState(village: Village, scheduler: Scheduler): VillageO
 | 
			
		||||
        village,
 | 
			
		||||
        resources,
 | 
			
		||||
        performance,
 | 
			
		||||
        storage: Resources.fromStorage(resourceStorage),
 | 
			
		||||
        storageBalance: calcStorageBalance(resources, Resources.fromStorage(resourceStorage), performance),
 | 
			
		||||
        storage: calcStorageBalance(resources, Resources.fromStorage(resourceStorage), performance),
 | 
			
		||||
        required: calcResourceBalance(requiredResources, resources, performance),
 | 
			
		||||
        totalRequired: calcResourceBalance(totalRequiredResources, resources, performance),
 | 
			
		||||
        buildRemainingSeconds: buildQueueInfo.seconds,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user