Rework resource bar to use new resource manager
This commit is contained in:
		
							parent
							
								
									855bdb0144
								
							
						
					
					
						commit
						ef50c8fed2
					
				| 
						 | 
				
			
			@ -13,10 +13,7 @@ const resources = await getUserResources(new ObjectId(Astro.cookies.get('userid'
 | 
			
		|||
 | 
			
		||||
const resourceArray = [];
 | 
			
		||||
for(const key in resources) {
 | 
			
		||||
    resourceArray.push({
 | 
			
		||||
        name: key,
 | 
			
		||||
        amount: resources[key as never]
 | 
			
		||||
    });
 | 
			
		||||
    resourceArray.push(resources[key as never]);
 | 
			
		||||
}
 | 
			
		||||
---
 | 
			
		||||
<div id="resourcebar">
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +25,7 @@ for(const key in resources) {
 | 
			
		|||
            <div class="resourcebar-item"
 | 
			
		||||
              data-res-type={resourceTypes.find(x => x.name === res.name)?.type ?? "solid"}
 | 
			
		||||
              data-res-amount={res.amount}
 | 
			
		||||
              data-res-mining-rate={res.perHourMiningRate}
 | 
			
		||||
              style={(resourceTypes.find(x => x.name === res.name)?.type ?? "solid") === "solid" ? "" : "display: none;"}
 | 
			
		||||
            >
 | 
			
		||||
                <div class="resourcebar-item-icon">
 | 
			
		||||
| 
						 | 
				
			
			@ -35,11 +33,11 @@ for(const key in resources) {
 | 
			
		|||
                </div>
 | 
			
		||||
                <div class="resourcebar-item-text-wrapper" data-resname={res.name}>
 | 
			
		||||
                    <div class="resourcebar-item-text">{resourceLang[`Label_${res.name}`]}</div>
 | 
			
		||||
                    <div class="resourcebar-item-amount">{res.amount}</div>
 | 
			
		||||
                    <div class="resourcebar-item-amount">{Math.floor(res.amount).toString()}</div>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="resourcebar-item-tooltip">
 | 
			
		||||
                    <div class="resourcebar-item-tooltip-name">{resBarLang['Label_avaliable']} - <span class="resourcebar-item-tooltip-avaliable">{res.amount.toString()}</span></div>
 | 
			
		||||
                    <div class="resourcebar-item-tooltip-name">{resBarLang['Label_production']} - <span class="resourcebar-item-tooltip-production">{'69'}</span></div>
 | 
			
		||||
                    <div class="resourcebar-item-tooltip-name">{resBarLang['Label_avaliable']} - <span class="resourcebar-item-tooltip-avaliable">{Math.floor(res.amount).toString()}</span></div>
 | 
			
		||||
                    <div class="resourcebar-item-tooltip-name">{resBarLang['Label_production']} - <span class="resourcebar-item-tooltip-production">{res.perHourMiningRate.toString()}</span></div>
 | 
			
		||||
                    <div class="resourcebar-item-tooltip-name">{resBarLang['Label_capacity']} - <span class="resourcebar-item-tooltip-capacity">{'21372137'}</span></div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>    
 | 
			
		||||
| 
						 | 
				
			
			@ -132,36 +130,24 @@ for(const key in resources) {
 | 
			
		|||
 | 
			
		||||
<script>
 | 
			
		||||
    function numWithPrefix(x: number) {
 | 
			
		||||
        x = Math.floor(x);
 | 
			
		||||
        if(x < 1_000) return x.toString();
 | 
			
		||||
        if(x < 1_000_000) return (x / 1_000).toFixed(2) + "k";
 | 
			
		||||
        if(x < 1_000_000_000) return (x / 1_000_000).toFixed(2) + "M";
 | 
			
		||||
        return x.toString();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    const perSecondProduction = {
 | 
			
		||||
        "coal": 10,
 | 
			
		||||
        "iron": 15,
 | 
			
		||||
        "gold": 200,
 | 
			
		||||
 | 
			
		||||
        "water": 5,
 | 
			
		||||
        "sulfuricAcid": 1,
 | 
			
		||||
        "liquidNitrogen": 2,
 | 
			
		||||
 | 
			
		||||
        "hydrogen": 5,
 | 
			
		||||
        "oxygen": 50,
 | 
			
		||||
        "helium3": 1
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    setInterval(() => {
 | 
			
		||||
        const resourcebarItems = document.getElementById('resourcebar')?.querySelectorAll('.resourcebar-item');
 | 
			
		||||
 | 
			
		||||
        resourcebarItems?.forEach((item: any) => {
 | 
			
		||||
            const resourceName = (item.querySelector('.resourcebar-item-text-wrapper') as HTMLElement)?.dataset.resname ?? '';
 | 
			
		||||
            const resourceAmount = parseInt(item.dataset.resAmount ?? '0');
 | 
			
		||||
            const newAmount = resourceAmount + perSecondProduction[resourceName as never];
 | 
			
		||||
            const resourceAmount = parseFloat(item.dataset.resAmount ?? '0');
 | 
			
		||||
            const miningRate = parseInt(item.dataset.resMiningRate ?? '0') / 3600;
 | 
			
		||||
            const newAmount = resourceAmount + miningRate;
 | 
			
		||||
 | 
			
		||||
            item.dataset.resAmount = newAmount.toString();
 | 
			
		||||
            (item.querySelector('.resourcebar-item-amount') as HTMLElement).innerHTML = numWithPrefix(newAmount);
 | 
			
		||||
            (item.querySelector('.resourcebar-item-tooltip .resourcebar-item-tooltip-avaliable') as HTMLElement).innerHTML = newAmount.toString();
 | 
			
		||||
            (item.querySelector('.resourcebar-item-tooltip .resourcebar-item-tooltip-avaliable') as HTMLElement).innerHTML = Math.floor(newAmount).toString();
 | 
			
		||||
        });
 | 
			
		||||
    }, 1_000);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,67 @@ import { Users } from "../db/mongodb";
 | 
			
		|||
import type DBResource from "../../types/DBResource";
 | 
			
		||||
import type Resource from "../../types/Resource";
 | 
			
		||||
 | 
			
		||||
export const createInitialResources = async (id: ObjectId) => {
 | 
			
		||||
    const resources: Array<DBResource> = [
 | 
			
		||||
        {
 | 
			
		||||
            name: "coal",
 | 
			
		||||
            amount: 11,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 11
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "iron",
 | 
			
		||||
            amount: 22,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 22
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "gold",
 | 
			
		||||
            amount: 33,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 33
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "water",
 | 
			
		||||
            amount: 44,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 44
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "sulfuricAcid",
 | 
			
		||||
            amount: 55,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 55
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "liquidNitrogen",
 | 
			
		||||
            amount: 66,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 66
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "hydrogen",
 | 
			
		||||
            amount: 77,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 77
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "oxygen",
 | 
			
		||||
            amount: 88,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 88
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            name: "helium3",
 | 
			
		||||
            amount: 99,
 | 
			
		||||
            lastUpdated: new Date(),
 | 
			
		||||
            perHourMiningRate: 99
 | 
			
		||||
        }
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    updateUserResources(id, resources);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const getUserResources = async (id: ObjectId): Promise<Array<DBResource>> => {
 | 
			
		||||
    const user = await getUserById(id);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue