Files
builazoo/web/js/types.js
ncantu c7d389ecbb Lint: fix errors and remove unused variables
**Motivations:**
- Ensure lint config is not degraded and fix all lint errors for pousse workflow.

**Root causes:**
- Unused variables kept with _ prefix instead of removed (_row, _questReward, _i).
- getAnimalBlockOrigin had 5 parameters (max 4).
- use of continue statement (no-continue rule).

**Correctifs:**
- ESLint config verified; no eslint-disable in codebase.
- Removed unused variable _row (biome-rules); removed dead function _questReward (quests); removed unused map param _i (state.js).
- getAnimalBlockOrigin refactored to 4 params (pos object instead of x, y).
- Replaced continue with if (cell) block in normalizeLoadedCells (state.js).
- JSDoc param names aligned with _height, _y (biome-rules).

**Evolutions:**
- (none)

**Pages affectées:**
- web/js/biome-rules.js
- web/js/quests.js
- web/js/state.js
- web/js/placement.js
2026-03-04 15:32:27 +01:00

85 lines
5.0 KiB
JavaScript

/**
* @typedef {{ kind: "egg", eggType: string, tokenId: number, hatchAt: number, seed: number }} EggCell
* @typedef {{ kind: "animal", id: string, mutation: string, level: number, placedAt: number, lastVisitedAt?: number, lastFedAt?: number, originKey?: string, cellsWide?: number, cellsHigh?: number, fromOtherZoo?: boolean }} AnimalCell
* @typedef {{ kind: "school", level: number }} SchoolCell
* @typedef {{ kind: "nursery", tokenId?: number, level?: number }} NurseryCell
* @typedef {{ kind: "souvenirShop", level: number }} SouvenirShopCell
* @typedef {{ kind: "research", level: number }} ResearchCell
* @typedef {{ kind: "billeterie", level: number }} BilleterieCell
* @typedef {{ kind: "food", level: number }} FoodCell
* @typedef {{ kind: "reception", level: number }} ReceptionCell
* @typedef {{ kind: "biomeChangeColor", level: number }} BiomeChangeColorCell
* @typedef {{ kind: "biomeChangeTemp", level: number }} BiomeChangeTempCell
* @typedef {EggCell | AnimalCell | SchoolCell | NurseryCell | SouvenirShopCell | ResearchCell | BilleterieCell | FoodCell | ReceptionCell | BiomeChangeColorCell | BiomeChangeTempCell} Cell
*
* @typedef {{ id: string, animalId: string, nurseryCellKey: string, readyAt: number, fromOtherZoo?: boolean }} PendingBaby
* @typedef {{ id: string, animalId: string, receptionCellKey: string, readyAt: number, originZooId?: string, reproductionScoreAtSale?: number }} ReceptionAnimal
* @typedef {{ id: string, zooId: string, babyId?: string, animalId?: string, isBaby: boolean, price: number, endAt: number, reproductionScoreAtSale?: number, serverId?: string, bestBidAmount?: number, bestBidderZooId?: string, status?: "active"|"sold"|"expired"|"rejected"|"validated", validatedAt?: number | null }} SaleListing
*
* @typedef {{ arrivedAt: number, incidentType?: "thirst"|"bin"|"bench"|"animalFar"|"photo", incidentSince?: number }} VisitorEntry
*
* @typedef {{ id: string, descriptionKey: string, target: number, current: number, reward: number, done: boolean }} Quest
*
* @typedef {{ coins: number, plotLevel: number, conveyorLevel: number, truckLevel: number, profile: "fast"|"slow"|"balanced", lastTickAt: number }} BotState
* @typedef {{ id: string, name: string, x: number, y: number, animalWeights: Record<string, number>, botState?: BotState }} WorldZooEntry
*
* @typedef {{
* version: number,
* specVersion?: number,
* coins: number,
* conveyorLevel: number,
* plotLevel: number,
* truckLevel?: number,
* grid: { width: number, height: number, cells: Record<string, Cell> },
* pendingEggTokens: Array<{ tokenId: number, eggType: string, boughtAt: number }>,
* nextTokenId: number,
* conveyorOffers: Array<{ eggType: string, price: number, zooId?: string }>,
* lastOfferRefreshAt: number,
* worldZoos?: Array<WorldZooEntry>,
* truckSale?: { toZooId: string, startAt: number },
* eggPurchaseTruck?: { eggType: string, fromZooId: string, toZooId: string, startAt: number },
* worldTruckSales?: Array<{ fromZooId: string, toZooId: string, startAt: number }>,
* lastEvolutionAt?: number,
* laboratoryOffer?: { eggType: string, price: number, endAt: number } | null,
* prestigeLevel?: number,
* timeOfDay?: number,
* gameDayTotal?: number,
* lastSeason?: string,
* seasonChangeMessage?: string,
* weather?: string,
* lastWeatherChangeAt?: number,
* quests?: Quest[],
* lastQuestDay?: string,
* stats?: { eggsPlaced: number, animalsSold: number, conveyorUpgrades: number, plotUpgrades: number, truckUpgrades?: number },
* mapZoom?: number,
* mapPanX?: number,
* mapPanY?: number,
* worldMapLevel?: number,
* autoMode?: boolean,
* autoModeProfile?: "fast"|"slow"|"balanced",
* autoModeProfileId?: number,
* autoProfilePickerOpen?: boolean,
* autoProfilePickerFamily?: number,
* lastPlayerAutoTickAt?: number,
* myZooId?: string,
* playerName?: string,
* playerX?: number,
* playerY?: number,
* researchPoints?: number,
* pendingBabies?: PendingBaby[],
* receptionAnimals?: ReceptionAnimal[],
* saleListings?: SaleListing[],
* salesFromApi?: { asSeller: Array<{ id: string, seller_zoo_id: string, animal_id: string, is_baby: boolean, initial_price: number, end_at: string, status: string, best_bid_amount?: number, best_bidder_zoo_id?: string, sold_at?: string, validated_at?: string | null, reproduction_score_at_sale?: number }>, asBuyerUndelivered: Array<{ id: string, animal_id: string, is_baby: boolean, initial_price: number, status?: string, validated_at?: string | null, reproduction_score_at_sale?: number }>, active: Array<{ id: string, seller_zoo_id: string, animal_id: string, is_baby: boolean, initial_price: number, end_at: string, best_bid_amount?: number }> },
* deathCountRecent?: number,
* birthCount?: number,
* feedingRate?: number,
* reproductionScore?: number,
* attractivityScore?: number,
* reproductionTimers?: Array<{ keyA: string, keyB: string, animalId: string, dueAt: number }>,
* visitorArrivals?: VisitorEntry[],
* attractivityBonusFromIncidents?: number,
* }} GameState
*/
export default {};