Skip to content

Commit 8ddc1e8

Browse files
committed
feat: implemented handleSurveyParcel
1 parent 2949917 commit 8ddc1e8

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

schema.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ type Parcel @entity {
418418
accessRights: [ParcelAccessRight!]! @derivedFrom(field: "parcel")
419419

420420
alchemicaToHarvest: [BigInt!]!
421-
roundsSurvey: Int
421+
surveyRound: Int
422422
}
423423

424424
type ParcelAccessRight @entity {

src/helper/realm.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
NFTDisplayStatusUpdated,
1414
ParcelAccessRightSet,
1515
RealmDiamond,
16+
SurveyParcel,
1617
Transfer,
1718
UnequipInstallation,
1819
UnequipTile,
@@ -39,7 +40,7 @@ import {
3940
UnequipInstallationEvent,
4041
UnequipTileEvent,
4142
} from "../../generated/schema";
42-
import { REALM_DIAMOND, StatCategory } from "./constants";
43+
import { BIGINT_ZERO, REALM_DIAMOND, StatCategory } from "./constants";
4344
import { getStat } from "./stats";
4445

4546
export const getOrCreateParcel = (realmId: BigInt): Parcel => {
@@ -49,6 +50,8 @@ export const getOrCreateParcel = (realmId: BigInt): Parcel => {
4950
parcel = new Parcel(id);
5051
parcel.equippedInstallations = new Array<string>();
5152
parcel.equippedTiles = new Array<string>();
53+
parcel.alchemicaToHarvest = [BIGINT_ZERO, BIGINT_ZERO, BIGINT_ZERO];
54+
parcel.surveyRound = 0;
5255
parcel = updateParcelInfo(parcel);
5356
}
5457
return parcel;

src/mappings/realm.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
EventCancelled,
1919
EventPriorityAndDurationUpdated,
2020
ParcelWhitelistSet,
21+
SurveyParcel,
2122
} from "../../generated/RealmDiamond/RealmDiamond";
2223
import { ParcelWhitelistSetEvent } from "../../generated/schema";
2324
import { BIGINT_ONE, REALM_DIAMOND, StatCategory } from "../helper/constants";
@@ -158,6 +159,14 @@ export function handleAlchemicaClaimed(event: AlchemicaClaimed): void {
158159
// set last claim alchemica
159160
let parcel = getOrCreateParcel(event.params._realmId);
160161
parcel.lastClaimedAlchemica = event.block.timestamp;
162+
163+
let alchemicas = parcel.alchemicaToHarvest;
164+
let entry = alchemicas[event.params._alchemicaType.toI32()];
165+
alchemicas[event.params._alchemicaType.toI32()] = entry.minus(
166+
event.params._amount
167+
);
168+
parcel.alchemicaToHarvest = alchemicas;
169+
161170
parcel.save();
162171

163172
// stats
@@ -540,3 +549,16 @@ export function handleParcelWhitelistSet(event: ParcelWhitelistSet): void {
540549
parEntity.whitelistId = event.params._whitelistId.toI32();
541550
parEntity.save();
542551
}
552+
553+
export function handleSurveyParcel(event: SurveyParcel): void {
554+
let entity = getOrCreateParcel(event.params._tokenId);
555+
556+
let alchemica = entity.alchemicaToHarvest;
557+
for (let i = 0; i < event.params._alchemicas.length; i++) {
558+
alchemica[i] = alchemica[i].plus(event.params._alchemicas[i]);
559+
}
560+
561+
entity.surveyRound = entity.surveyRound + 1;
562+
entity.alchemicaToHarvest = alchemica;
563+
entity.save();
564+
}

0 commit comments

Comments
 (0)