Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 76 additions & 1 deletion eth/contracts/facets/DFArtifactFacet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {LibPlanet} from "../libraries/LibPlanet.sol";
import {WithStorage} from "../libraries/LibStorage.sol";

// Type imports
import {Artifact, ArtifactRarity, ArtifactType, Biome, TokenType, DFTCreateArtifactArgs, DFPFindArtifactArgs} from "../DFTypes.sol";
import {Artifact, ArtifactRarity, ArtifactType, Biome, TokenType, DFTCreateArtifactArgs, DFPFindArtifactArgs, Upgrade} from "../DFTypes.sol";

contract DFArtifactFacet is WithStorage {
event PlanetProspected(address player, uint256 loc);
Expand Down Expand Up @@ -192,4 +192,79 @@ contract DFArtifactFacet is WithStorage {
LibArtifactUtils.prospectPlanet(locationId);
emit PlanetProspected(msg.sender, locationId);
}

/**
* Getters
*/
function getArtifactActivationTimeOnPlanet(uint256 locationId) public view returns (uint256) {
return gs().planets[locationId].artifactActivationTime;
}

function getUpgradeForArtifact(uint256 artifactId) public pure returns (Upgrade memory) {
return LibArtifact.getUpgradeForArtifact(LibArtifact.decode(artifactId));
}

function getArtifactsOnPlanet(uint256 locationId) public view returns (Artifact[] memory ret) {
uint256[] memory artifactIds = gs().planets[locationId].artifacts;
ret = new Artifact[](artifactIds.length);
for (uint256 i = 0; i < artifactIds.length; i++) {
ret[i] = LibArtifact.decode(artifactIds[i]);
}
return ret;
}

function hasActiveArtifact(uint256 locationId) public view returns (bool) {
return LibArtifact.hasActiveArtifact(locationId);
}

function getActiveArtifactOnPlanet(uint256 locationId)
public
view
returns (Artifact memory ret)
{
uint256 artifactId = gs().planets[locationId].activeArtifact;
return LibArtifact.decode(artifactId);
}

function bulkGetPlanetAritfacts(uint256[] calldata planetIds)
public
view
returns (Artifact[][] memory)
{
Artifact[][] memory ret = new Artifact[][](planetIds.length);

for (uint256 i = 0; i < planetIds.length; i++) {
uint256[] memory artifactsOnPlanet = gs().planets[planetIds[i]].artifacts;
ret[i] = bulkGetArtifactsByIds(artifactsOnPlanet);
}

return ret;
}

function bulkGetArtifactsByIds(uint256[] memory artifactIds)
public
pure
returns (Artifact[] memory ret)
{
ret = new Artifact[](artifactIds.length);

for (uint256 i = 0; i < artifactIds.length; i++) {
ret[i] = LibArtifact.decode(artifactIds[i]);
}
}

function getPlayerArtifacts(address player) public view returns (Artifact[] memory ret) {
uint256[] memory tokens = DFTokenFacet(address(this)).tokensByAccount(player);
uint256 numArtifacts = 0;
for (uint256 i = 0; i < tokens.length; i++) {
if (LibArtifact.isArtifact(tokens[i])) numArtifacts += 1;
}

ret = new Artifact[](numArtifacts);
numArtifacts = 0;
for (uint256 i = 0; i < tokens.length; i++) {
if (LibArtifact.isArtifact(tokens[i]))
ret[numArtifacts++] = LibArtifact.decode(tokens[i]);
}
}
}
72 changes: 0 additions & 72 deletions eth/contracts/facets/DFGetterFacet.sol
Original file line number Diff line number Diff line change
Expand Up @@ -309,76 +309,4 @@ contract DFGetterFacet is WithStorage {

return ret;
}

function getArtifactActivationTimeOnPlanet(uint256 locationId) public view returns (uint256) {
return gs().planets[locationId].artifactActivationTime;
}

function getUpgradeForArtifact(uint256 artifactId) public pure returns (Upgrade memory) {
return LibArtifact.getUpgradeForArtifact(LibArtifact.decode(artifactId));
}

function getArtifactsOnPlanet(uint256 locationId) public view returns (Artifact[] memory ret) {
uint256[] memory artifactIds = gs().planets[locationId].artifacts;
ret = new Artifact[](artifactIds.length);
for (uint256 i = 0; i < artifactIds.length; i++) {
ret[i] = LibArtifact.decode(artifactIds[i]);
}
return ret;
}

function hasActiveArtifact(uint256 locationId) public view returns (bool) {
return LibArtifact.hasActiveArtifact(locationId);
}

function getActiveArtifactOnPlanet(uint256 locationId)
public
view
returns (Artifact memory ret)
{
uint256 artifactId = gs().planets[locationId].activeArtifact;
return LibArtifact.decode(artifactId);
}

function bulkGetPlanetAritfacts(uint256[] calldata planetIds)
public
view
returns (Artifact[][] memory)
{
Artifact[][] memory ret = new Artifact[][](planetIds.length);

for (uint256 i = 0; i < planetIds.length; i++) {
uint256[] memory artifactsOnPlanet = gs().planets[planetIds[i]].artifacts;
ret[i] = bulkGetArtifactsByIds(artifactsOnPlanet);
}

return ret;
}

function bulkGetArtifactsByIds(uint256[] memory artifactIds)
public
pure
returns (Artifact[] memory ret)
{
ret = new Artifact[](artifactIds.length);

for (uint256 i = 0; i < artifactIds.length; i++) {
ret[i] = LibArtifact.decode(artifactIds[i]);
}
}

function getPlayerArtifacts(address player) public view returns (Artifact[] memory ret) {
uint256[] memory tokens = DFTokenFacet(address(this)).tokensByAccount(player);
uint256 numArtifacts = 0;
for (uint256 i = 0; i < tokens.length; i++) {
if (LibArtifact.isArtifact(tokens[i])) numArtifacts += 1;
}

ret = new Artifact[](numArtifacts);
numArtifacts = 0;
for (uint256 i = 0; i < tokens.length; i++) {
if (LibArtifact.isArtifact(tokens[i]))
ret[numArtifacts++] = LibArtifact.decode(tokens[i]);
}
}
}