UI changes moons and items
This commit is contained in:
parent
87ac3c373b
commit
a7e7c4dbe9
@ -19,19 +19,57 @@ const InventoryItem = (props: {
|
|||||||
setCurrentUpgrade(currentUpdade);
|
setCurrentUpgrade(currentUpdade);
|
||||||
}, [props.inventoryItem]);
|
}, [props.inventoryItem]);
|
||||||
|
|
||||||
const isInUse = () => {
|
const renderUpgradeButton = () => {
|
||||||
if (!props.stakes) return false;
|
// If no staking source
|
||||||
return props.stakes.some((stake) => {
|
if (!props.stakes) return "No staking source";
|
||||||
stake.inventoryItemId === props.inventoryItem.id;
|
|
||||||
});
|
// If item is in use
|
||||||
|
if (
|
||||||
|
props.stakes.some((stake) => {
|
||||||
|
stake.inventoryItemId === props.inventoryItem.id;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
return "In use";
|
||||||
|
|
||||||
|
// If item is maxxed
|
||||||
|
if (currentTierIndex === 4) return "Maxed";
|
||||||
|
|
||||||
|
// Show price
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
onClick={() =>
|
||||||
|
props.upgradeInventoryItem(
|
||||||
|
props.inventoryItem.id,
|
||||||
|
props.inventoryItem.storeItem.id
|
||||||
|
)
|
||||||
|
}
|
||||||
|
className="bg-orange-600 rounded-full p-1"
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
strokeWidth={2.5}
|
||||||
|
stroke="currentColor"
|
||||||
|
className="w-6 h-6"
|
||||||
|
>
|
||||||
|
<path
|
||||||
|
strokeLinecap="round"
|
||||||
|
strokeLinejoin="round"
|
||||||
|
d="M12 19.5v-15m0 0l-6.75 6.75M12 4.5l6.75 6.75"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<span className="ml-1">
|
||||||
|
{`$${
|
||||||
|
props.inventoryItem.storeItem.upgrades[currentTierIndex + 1].price
|
||||||
|
}`}
|
||||||
|
</span>
|
||||||
|
</>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getNextUpgradePrice = () => {
|
|
||||||
if (currentTierIndex === 4) return "Maxed";
|
|
||||||
return `$${
|
|
||||||
props.inventoryItem.storeItem.upgrades[currentTierIndex + 1].price
|
|
||||||
}`;
|
|
||||||
};
|
|
||||||
return (
|
return (
|
||||||
<CardLayout>
|
<CardLayout>
|
||||||
<div className="md:flex gap-4">
|
<div className="md:flex gap-4">
|
||||||
@ -42,59 +80,42 @@ const InventoryItem = (props: {
|
|||||||
<p className="text-sm mb-3">
|
<p className="text-sm mb-3">
|
||||||
{props.inventoryItem.storeItem.description}
|
{props.inventoryItem.storeItem.description}
|
||||||
</p>
|
</p>
|
||||||
<p className="font-bold mt-4">Base Yield</p>
|
<div className="grid grid-cols-4 gap-4">
|
||||||
<p>{props.inventoryItem.storeItem.claimAmount}</p>
|
<div className="col-span-1">
|
||||||
<p className="font-bold mb-1 mt-4">Tier</p>
|
<p className="font-bold mt-4">Yield</p>
|
||||||
<div className="flex items-center">
|
<p>
|
||||||
{currentUpgrade &&
|
{props.inventoryItem.storeItem.claimAmount} (+
|
||||||
props.inventoryItem.storeItem.upgrades.map((upgrade, id) => {
|
{currentUpgrade && currentUpgrade.claimBoost})
|
||||||
if (upgrade.tier <= currentUpgrade.tier) {
|
</p>
|
||||||
return (
|
</div>
|
||||||
<span key={id} className="bg-green-600 px-4 py-2"></span>
|
<div className="col-span-3">
|
||||||
);
|
<p className="font-bold mb-1 mt-4">Tier</p>
|
||||||
} else {
|
<div className="flex">
|
||||||
return (
|
<div className="flex items-center mr-2">
|
||||||
<span key={id} className="bg-slate-200 px-4 py-2"></span>
|
{currentUpgrade &&
|
||||||
);
|
props.inventoryItem.storeItem.upgrades.map(
|
||||||
}
|
(upgrade, id) => {
|
||||||
})}
|
if (upgrade.tier <= currentUpgrade.tier) {
|
||||||
<p className="font-bold ml-1">
|
return (
|
||||||
(+{currentUpgrade && currentUpgrade.claimBoost})
|
<span
|
||||||
</p>
|
key={id}
|
||||||
</div>
|
className="bg-green-600 px-2 py-2 border border-black"
|
||||||
<p className="font-bold mb-1 mt-4">Upgrade</p>
|
></span>
|
||||||
<div className="flex items-center">
|
);
|
||||||
{isInUse() ? (
|
} else {
|
||||||
<button className="bg-slate-400 text-slate-600 px-4 py-2 rounded-lg font-bold text-center cursor-not-allowed">
|
return (
|
||||||
In Use
|
<span
|
||||||
</button>
|
key={id}
|
||||||
) : (
|
className="bg-slate-200 px-2 py-2 border border-black"
|
||||||
<button
|
></span>
|
||||||
onClick={() =>
|
);
|
||||||
props.upgradeInventoryItem(
|
}
|
||||||
props.inventoryItem.id,
|
}
|
||||||
props.inventoryItem.storeItem.id
|
)}
|
||||||
)
|
</div>
|
||||||
}
|
<div className="flex items-center">{renderUpgradeButton()}</div>
|
||||||
className="bg-green-600 rounded-full p-1"
|
</div>
|
||||||
>
|
</div>
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
strokeWidth={2.5}
|
|
||||||
stroke="currentColor"
|
|
||||||
className="w-6 h-6"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
strokeLinecap="round"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
d="M12 19.5v-15m0 0l-6.75 6.75M12 4.5l6.75 6.75"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
<span className="ml-1">({getNextUpgradePrice()})</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="relative object-contain w-48 h-48 mt-4 md:mt-0">
|
<div className="relative object-contain w-48 h-48 mt-4 md:mt-0">
|
||||||
|
@ -23,7 +23,10 @@ const SelectDropdown: React.FC<ISelectDropdownProps> = (props) => {
|
|||||||
onChange={handleChange}
|
onChange={handleChange}
|
||||||
className="text-black flex-1 p-2 border border-gray-300 rounded-lg hover:cursor-pointer"
|
className="text-black flex-1 p-2 border border-gray-300 rounded-lg hover:cursor-pointer"
|
||||||
>
|
>
|
||||||
<option value="">Select</option>
|
<option value="" className="font-bold">
|
||||||
|
Select resource to mine
|
||||||
|
</option>
|
||||||
|
<hr />
|
||||||
{props.options.map((option, index) => (
|
{props.options.map((option, index) => (
|
||||||
<option key={index} value={option.value}>
|
<option key={index} value={option.value}>
|
||||||
{option.label}
|
{option.label}
|
||||||
|
@ -102,7 +102,7 @@ const StakingSource = (props: {
|
|||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
onClick={() => handleClaim(props.stake.id)}
|
onClick={() => handleClaim(props.stake.id)}
|
||||||
className="bg-slate-100 text-slate-900 px-4 py-2 rounded-lg font-bold text-center"
|
className="bg-green-600 text-white px-4 py-2 rounded-lg font-bold text-center"
|
||||||
>
|
>
|
||||||
Claim
|
Claim
|
||||||
</button>
|
</button>
|
||||||
@ -132,21 +132,28 @@ const StakingSource = (props: {
|
|||||||
<div className="bg-slate-900 md:rounded-xl p-4">
|
<div className="bg-slate-900 md:rounded-xl p-4">
|
||||||
<div className="">
|
<div className="">
|
||||||
<h3 className="text-3xl font-bold mb-2">
|
<h3 className="text-3xl font-bold mb-2">
|
||||||
{props.stakingSource.name}
|
{props.stakingSource.name}{" "}
|
||||||
|
<span>
|
||||||
|
(
|
||||||
|
{props.stakingSource.resourceWells.reduce(
|
||||||
|
(x, y) => x + y.supply,
|
||||||
|
0
|
||||||
|
)}
|
||||||
|
)
|
||||||
|
</span>
|
||||||
</h3>
|
</h3>
|
||||||
<p className="text-sm">{props.stakingSource.description}</p>
|
<p className="text-sm">{props.stakingSource.description}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex">
|
<h3 className="mt-4 mb-2 text-2xl font-bold">Inventory</h3>
|
||||||
|
<div className="">
|
||||||
{activeStakes.length > 0 && (
|
{activeStakes.length > 0 && (
|
||||||
<div className="">
|
<div className="">
|
||||||
<p className="font-bold mt-4 mb-2">Active Drills</p>
|
|
||||||
{activeStakes.map((stake, id) => (
|
{activeStakes.map((stake, id) => (
|
||||||
<div
|
<div
|
||||||
key={id}
|
key={id}
|
||||||
className="border border-white rounded-xl p-3 mb-2 bg-black/20"
|
className="border border-white rounded-xl p-3 mb-2 bg-black/20"
|
||||||
>
|
>
|
||||||
<p>
|
<p className="font-bold text-xl mb-2">
|
||||||
<span className="font-bold">Drill: </span>
|
|
||||||
{props.inventoryItems &&
|
{props.inventoryItems &&
|
||||||
getObjectFromArray(
|
getObjectFromArray(
|
||||||
props.inventoryItems,
|
props.inventoryItems,
|
||||||
@ -169,7 +176,6 @@ const StakingSource = (props: {
|
|||||||
)}
|
)}
|
||||||
{props.inventoryItems && (
|
{props.inventoryItems && (
|
||||||
<div className="">
|
<div className="">
|
||||||
<p className="font-bold mt-4 mb-2">Inactive Drills</p>
|
|
||||||
{props.inventoryItems.map(
|
{props.inventoryItems.map(
|
||||||
(item, id) =>
|
(item, id) =>
|
||||||
!isActive(item) && (
|
!isActive(item) && (
|
||||||
@ -177,14 +183,15 @@ const StakingSource = (props: {
|
|||||||
key={id}
|
key={id}
|
||||||
className="border border-white rounded-xl p-3 mb-2 bg-black/20"
|
className="border border-white rounded-xl p-3 mb-2 bg-black/20"
|
||||||
>
|
>
|
||||||
<p className="font-bold">{item.storeItem.name}</p>
|
<p className="font-bold text-xl mb-2">
|
||||||
<p className="mt-2">Select Resource</p>
|
{item.storeItem.name}
|
||||||
|
</p>
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<SelectDropdown
|
<SelectDropdown
|
||||||
options={props.stakingSource.resourceWells.map(
|
options={props.stakingSource.resourceWells.map(
|
||||||
(well): IOption => ({
|
(well): IOption => ({
|
||||||
value: well.id,
|
value: well.id,
|
||||||
label: well.resourceType,
|
label: well.resourceType + ` (${well.supply})`,
|
||||||
})
|
})
|
||||||
)}
|
)}
|
||||||
onChange={(value) =>
|
onChange={(value) =>
|
||||||
|
@ -20,7 +20,7 @@ const StakingSourcesView = (props: {
|
|||||||
<div className="flex items-center mb-4">
|
<div className="flex items-center mb-4">
|
||||||
<h2 className="text-3xl text-white font-bold">Your Moons</h2>
|
<h2 className="text-3xl text-white font-bold">Your Moons</h2>
|
||||||
<button
|
<button
|
||||||
className="bg-green-600 rounded-full ml-2 p-1 inline"
|
className="bg-green-600 text-white rounded-full ml-2 p-1 inline"
|
||||||
onClick={() => props.createStakingSource()}
|
onClick={() => props.createStakingSource()}
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
|
@ -17,25 +17,11 @@ const StoreItem = (props: {
|
|||||||
<div className="py-4 my-2">
|
<div className="py-4 my-2">
|
||||||
<button
|
<button
|
||||||
onClick={() => props.buyStoreItem(props.storeItem.id)}
|
onClick={() => props.buyStoreItem(props.storeItem.id)}
|
||||||
className="bg-slate-100 text-slate-900 px-4 py-2 rounded-lg font-bold w-auto text-center"
|
className="bg-green-600 text-white px-4 py-2 rounded-lg font-bold w-auto text-center"
|
||||||
>
|
>
|
||||||
Buy | ${props.storeItem.price}
|
Buy | ${props.storeItem.price}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex">
|
|
||||||
<div className="mr-3">
|
|
||||||
<p className="font-bold">Base Yield</p>
|
|
||||||
<p className="">{props.storeItem.claimAmount}</p>
|
|
||||||
</div>
|
|
||||||
<div className="">
|
|
||||||
<p className="font-bold">Upgrades</p>
|
|
||||||
{props.storeItem.upgrades.map((upgrade, id) => (
|
|
||||||
<span key={id} className="mr-2">
|
|
||||||
{upgrade.claimBoost}
|
|
||||||
</span>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="relative object-contain w-48 h-48">
|
<div className="relative object-contain w-48 h-48">
|
||||||
<Image
|
<Image
|
||||||
@ -46,6 +32,42 @@ const StoreItem = (props: {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex flex-grow mt-4">
|
||||||
|
<div className="mr-3 flex-grow">
|
||||||
|
<p className="font-bold">Yield</p>
|
||||||
|
<p className="">{props.storeItem.claimAmount}</p>
|
||||||
|
</div>
|
||||||
|
<div className="mr-3 flex-grow">
|
||||||
|
<p className="font-bold">Completion Time</p>
|
||||||
|
<p className="">{props.storeItem.completionTimeInMins} min</p>
|
||||||
|
</div>
|
||||||
|
<div className="mr-3 flex-grow">
|
||||||
|
<p className="font-bold">Yield / Hr.</p>
|
||||||
|
<p className="">
|
||||||
|
{(
|
||||||
|
(props.storeItem.claimAmount /
|
||||||
|
props.storeItem.completionTimeInMins) *
|
||||||
|
60
|
||||||
|
).toFixed(0)}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p className="font-bold mt-4 ">Tiers</p>
|
||||||
|
<div className="mt-4 flex f-full">
|
||||||
|
{props.storeItem.upgrades.map((upgrade, id) => (
|
||||||
|
<table key={id} className="table-auto flex-grow">
|
||||||
|
<tr className="border">
|
||||||
|
<td colSpan={2} className="p-2 text-center">
|
||||||
|
{upgrade.tier}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td className="p-2 border">${upgrade.price}</td>
|
||||||
|
<td className="p-2 border">+{upgrade.claimBoost}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
</CardLayout>
|
</CardLayout>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -346,7 +346,7 @@ export default function Home() {
|
|||||||
return <p>Loading...</p>;
|
return <p>Loading...</p>;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(bankAccount);
|
console.log(storeItems);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Navbar setUserId={setUserId} />
|
<Navbar setUserId={setUserId} />
|
||||||
|
@ -10,9 +10,11 @@ export default function Utils() {
|
|||||||
const [userId, setUserId] = useState<string>("");
|
const [userId, setUserId] = useState<string>("");
|
||||||
|
|
||||||
const clearUserData = async () => {
|
const clearUserData = async () => {
|
||||||
await fetch(`/api/user/${userId}/clear-data`, {
|
console.log("Clearing data..");
|
||||||
|
const response = await fetch(`/api/user/${userId}/clear-data`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
});
|
});
|
||||||
|
console.log(response);
|
||||||
};
|
};
|
||||||
|
|
||||||
const loadConfig = async () => {
|
const loadConfig = async () => {
|
||||||
|
1
typings.d.ts
vendored
1
typings.d.ts
vendored
@ -39,7 +39,6 @@ export interface IStakingSource {
|
|||||||
resourceChance: number | null
|
resourceChance: number | null
|
||||||
resourceMinStartAmount: number | null
|
resourceMinStartAmount: number | null
|
||||||
resourceMaxStartAmount: number | null
|
resourceMaxStartAmount: number | null
|
||||||
size: number | undefined
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface IInventoryItem {
|
export interface IInventoryItem {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user