Add building modal with details
This commit is contained in:
		
							parent
							
								
									5f305c8983
								
							
						
					
					
						commit
						4db4cc97ad
					
				| 
						 | 
					@ -1,11 +1,37 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "Label": {
 | 
					    "Label": {
 | 
				
			||||||
        "mines": "Mines",
 | 
					        "mines": "Mines",
 | 
				
			||||||
        "iron-mine": "Iron mine",
 | 
					        "iron-mine": {
 | 
				
			||||||
        "gold-mine": "Gold mine",
 | 
					            "name": "Iron mine",
 | 
				
			||||||
 | 
					            "description": "Iron mines produce iron ore, which is used to build and upgrade buildings."
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "gold-mine": {
 | 
				
			||||||
 | 
					            "name": "Gold mine",
 | 
				
			||||||
 | 
					            "description": "Gold mines produce gold ore, useful for trading and building."
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "coal-mine": {
 | 
				
			||||||
 | 
					            "name": "Coal mine",
 | 
				
			||||||
 | 
					            "description": "Coal mines produce coal, which is used to power buildings."
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        "utilities": "Utilities",
 | 
					        "utilities": "Utilities",
 | 
				
			||||||
        "research-lab": "Research lab",
 | 
					        "research-lab": {
 | 
				
			||||||
        "research-facility": "Research facility"
 | 
					            "name": "Research lab",
 | 
				
			||||||
 | 
					            "description": "Research labs are used to research new technologies and improve existing ones."
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "research-facility": {
 | 
				
			||||||
 | 
					            "name": "Research facility",
 | 
				
			||||||
 | 
					            "description": "Research facilities are used to research advanced technologies."
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        "power-plants": "Power plants",
 | 
				
			||||||
 | 
					        "coal-power-plant": {
 | 
				
			||||||
 | 
					            "name": "Coal power plant",
 | 
				
			||||||
 | 
					            "description": "Coal power plants produce electricity using coal."
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "nuclear-power-plant": {
 | 
				
			||||||
 | 
					            "name": "Nuclear power plant",
 | 
				
			||||||
 | 
					            "description": "Nuclear power plants produce electricity using uranium."
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,10 @@
 | 
				
			||||||
        "advanced-technologies": {
 | 
					        "advanced-technologies": {
 | 
				
			||||||
            "name": "Advanced Technologies",
 | 
					            "name": "Advanced Technologies",
 | 
				
			||||||
            "description": "Various advanced technologies"
 | 
					            "description": "Various advanced technologies"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "nuclear-power": {
 | 
				
			||||||
 | 
					            "name": "Nuclear Power",
 | 
				
			||||||
 | 
					            "description": "Advanced power generation using nuclear energy"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,78 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					import { getHighestWeightedLanguage, getLocales } from '../lib/utils/langDriver';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface Props {
 | 
				
			||||||
 | 
					    id: string;
 | 
				
			||||||
 | 
					    name: string;
 | 
				
			||||||
 | 
					    description: string;
 | 
				
			||||||
 | 
					    image: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const lang = await getLocales(await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')), ['resources', 'game', 'buildings', 'research']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="building-card" data-id={Astro.props.id}>
 | 
				
			||||||
 | 
					    <div><img src={Astro.props.image} /></div>
 | 
				
			||||||
 | 
					    <div>
 | 
				
			||||||
 | 
					        <div class="building-card-name">{Astro.props.name}</div>
 | 
				
			||||||
 | 
					        <div class="building-card-description">{Astro.props.description}</div>
 | 
				
			||||||
 | 
					        <a id={`build_${Astro.props.id}`} href="#" class="building-card-build">{lang["game"]['Link_build']}</a>
 | 
				
			||||||
 | 
					        <div class="building-card-info-button">i</div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					.building-card {
 | 
				
			||||||
 | 
					    background-color: #fff;
 | 
				
			||||||
 | 
					    color: #333;
 | 
				
			||||||
 | 
					    border-radius: 8px;
 | 
				
			||||||
 | 
					    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
 | 
				
			||||||
 | 
					    overflow: hidden;
 | 
				
			||||||
 | 
					    position: relative;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    flex-direction: row;
 | 
				
			||||||
 | 
					    width: 49%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.building-card-expanded {
 | 
				
			||||||
 | 
					    height: auto;
 | 
				
			||||||
 | 
					} 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.building-card-name {
 | 
				
			||||||
 | 
					    font-size: 48px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.building-card-description {
 | 
				
			||||||
 | 
					    font-size: 24px;
 | 
				
			||||||
 | 
					    margin-top: 16px;
 | 
				
			||||||
 | 
					    margin-bottom: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.building-card-build {
 | 
				
			||||||
 | 
					    background-color: #333;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    border-radius: 8px;
 | 
				
			||||||
 | 
					    padding: 8px 16px;
 | 
				
			||||||
 | 
					    display: inline-block;
 | 
				
			||||||
 | 
					    margin-top: 16px;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    bottom: 16px;
 | 
				
			||||||
 | 
					    right: 16px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.building-card-info-button {
 | 
				
			||||||
 | 
					    background-color: #333;
 | 
				
			||||||
 | 
					    color: #fff;
 | 
				
			||||||
 | 
					    border-radius: 50%;
 | 
				
			||||||
 | 
					    width: 32px;
 | 
				
			||||||
 | 
					    height: 32px;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    top: 16px;
 | 
				
			||||||
 | 
					    right: 16px;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
| 
						 | 
					@ -47,6 +47,29 @@
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "energy": 11,
 | 
					                "energy": 11,
 | 
				
			||||||
                "multiplier": 2.5
 | 
					                "multiplier": 2.5
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "id": "coal-mine",
 | 
				
			||||||
 | 
					                "requirements": {
 | 
				
			||||||
 | 
					                    "buildings": [],
 | 
				
			||||||
 | 
					                    "research": [],
 | 
				
			||||||
 | 
					                    "resources": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "iron",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "gold",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "coal",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "energy": 11,
 | 
				
			||||||
 | 
					                "multiplier": 3
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
    }, {
 | 
					    }, {
 | 
				
			||||||
| 
						 | 
					@ -109,5 +132,65 @@
 | 
				
			||||||
                "multiplier": 2
 | 
					                "multiplier": 2
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        "category": "power-plants",
 | 
				
			||||||
 | 
					        "buildings": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "id": "coal-power-plant",
 | 
				
			||||||
 | 
					                "requirements": {
 | 
				
			||||||
 | 
					                    "buildings": [],
 | 
				
			||||||
 | 
					                    "research": [],
 | 
				
			||||||
 | 
					                    "resources": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "iron",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "gold",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "coal",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "energy": 100,
 | 
				
			||||||
 | 
					                "multiplier": 3
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "id": "nuclear-power-plant",
 | 
				
			||||||
 | 
					                "requirements": {
 | 
				
			||||||
 | 
					                    "buildings": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "id": "coal-power-plant",
 | 
				
			||||||
 | 
					                            "level": 3
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "research": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "id": "nuclear-power",
 | 
				
			||||||
 | 
					                            "level": 2
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "resources": [
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "iron",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "gold",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "name": "coal",
 | 
				
			||||||
 | 
					                            "amount": 1
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "energy": 100,
 | 
				
			||||||
 | 
					                "multiplier": 2
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -123,5 +123,20 @@
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "time": 1500,
 | 
					        "time": 1500,
 | 
				
			||||||
        "multiplier": 4
 | 
					        "multiplier": 4
 | 
				
			||||||
 | 
					    }, {
 | 
				
			||||||
 | 
					        "id": "nuclear-power",
 | 
				
			||||||
 | 
					        "requirements": {
 | 
				
			||||||
 | 
					            "buildings": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "id": "research-lab",
 | 
				
			||||||
 | 
					                    "level": 10
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "research": [],
 | 
				
			||||||
 | 
					            "resources": {
 | 
				
			||||||
 | 
					                "iron": 1000,
 | 
				
			||||||
 | 
					                "gold": 500
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
import Layout from '../../layouts/Layout.astro';
 | 
					import Layout from '../../layouts/Layout.astro';
 | 
				
			||||||
import NavBar from '../../components/NavBar.astro';
 | 
					import NavBar from '../../components/NavBar.astro';
 | 
				
			||||||
 | 
					import BuildingCard from '../../components/BuildingCard.astro';
 | 
				
			||||||
import { getUserByAccessToken } from '../../lib/db/users';
 | 
					import { getUserByAccessToken } from '../../lib/db/users';
 | 
				
			||||||
import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
 | 
					import { getHighestWeightedLanguage, getLocales } from '../../lib/utils/langDriver';
 | 
				
			||||||
import ResourceBar from '../../components/ResourceBar.astro';
 | 
					import ResourceBar from '../../components/ResourceBar.astro';
 | 
				
			||||||
| 
						 | 
					@ -17,28 +18,47 @@ if(checkUser === null || checkUser.username !== username) return Astro.redirect(
 | 
				
			||||||
const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
 | 
					const locale = await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const lang = await getLocales(locale, ['resources', 'game', 'buildings', 'research']);
 | 
					const lang = await getLocales(locale, ['resources', 'game', 'buildings', 'research']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const modalSet: { [key: string]: { resources: Array<any>, research: Array<any>, buildings: Array<any>, energy: number } } = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					buildingsList.forEach(cat => {
 | 
				
			||||||
 | 
						cat.buildings.forEach(building => {
 | 
				
			||||||
 | 
							modalSet[building.id] = {
 | 
				
			||||||
 | 
								"resources": building.requirements.resources,
 | 
				
			||||||
 | 
								"research": building.requirements.research,
 | 
				
			||||||
 | 
								"buildings": building.requirements.buildings,
 | 
				
			||||||
 | 
								"energy": building.energy
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<Layout title="Buildings">
 | 
					<Layout title="Buildings">
 | 
				
			||||||
	<NavBar loggedIn="true" active="buildings" />
 | 
						<NavBar loggedIn="true" active="buildings" />
 | 
				
			||||||
	<ResourceBar />
 | 
						<ResourceBar />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<div id="building-modal-background">
 | 
				
			||||||
 | 
							<div id="building-modal-details" data-building-id="">
 | 
				
			||||||
 | 
								<h3>Required resources</h3>
 | 
				
			||||||
 | 
								<div class="building-modal-text" id="building-modal-req-resources">None</div>
 | 
				
			||||||
 | 
								<h3>Required buildings</h3>
 | 
				
			||||||
 | 
								<div class="building-modal-text" id="building-modal-req-buildings">None</div>
 | 
				
			||||||
 | 
								<h3>Required research</h3>
 | 
				
			||||||
 | 
								<div class="building-modal-text" id="building-modal-req-research">None</div>
 | 
				
			||||||
 | 
							</div>
 | 
				
			||||||
 | 
						</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {buildingsList.map(cat => (
 | 
					    {buildingsList.map(cat => (
 | 
				
			||||||
		<div class="building-card">
 | 
							<div class="building-card">
 | 
				
			||||||
 | 
								{console.log(cat.category)}
 | 
				
			||||||
			<h3>{lang["buildings"][`Label_${cat.category}`]}</h3>
 | 
								<h3>{lang["buildings"][`Label_${cat.category}`]}</h3>
 | 
				
			||||||
			{cat.buildings.map(building => ( <>
 | 
								<div class="building-cat">
 | 
				
			||||||
				<h4>{lang["buildings"][`Label_${building.id}`]}</h4>
 | 
									{cat.buildings.map(building => <BuildingCard
 | 
				
			||||||
				{building.requirements.resources.map(res => (
 | 
										id={building.id}
 | 
				
			||||||
					<div>{lang["resources"][`Label_${res.name}`]}: {res.amount}</div>
 | 
										name={lang["buildings"][`Label_${building.id}`].name}
 | 
				
			||||||
				))}
 | 
										description={lang["buildings"][`Label_${building.id}`].description}
 | 
				
			||||||
				{building.requirements.buildings.map(b => (
 | 
										image="/favicon.svg" />)}
 | 
				
			||||||
					<div>{lang["buildings"][`Label_${b.id}`]}: {b.level}</div>
 | 
								</div>
 | 
				
			||||||
				))}
 | 
					 | 
				
			||||||
				{building.requirements.research.map(t => (
 | 
					 | 
				
			||||||
					<div>{lang["research"][`Label_${t.id}`].name}: {t.level}</div>
 | 
					 | 
				
			||||||
				))}
 | 
					 | 
				
			||||||
				<a id={`build_${building.id}`} href="#" class="a-button">{lang["game"]['Link_build']}</a>
 | 
					 | 
				
			||||||
			</>))}
 | 
					 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
	))}
 | 
						))}
 | 
				
			||||||
</Layout>
 | 
					</Layout>
 | 
				
			||||||
| 
						 | 
					@ -58,6 +78,39 @@ const lang = await getLocales(locale, ['resources', 'game', 'buildings', 'resear
 | 
				
			||||||
		line-height: 1.6;
 | 
							line-height: 1.6;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						.building-cat {
 | 
				
			||||||
 | 
							display: flex;
 | 
				
			||||||
 | 
							flex-direction: row;
 | 
				
			||||||
 | 
							flex-wrap: wrap;
 | 
				
			||||||
 | 
							row-gap: 40px;
 | 
				
			||||||
 | 
							column-gap: 2%;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#building-modal-background {
 | 
				
			||||||
 | 
							display: none;
 | 
				
			||||||
 | 
							position: fixed;
 | 
				
			||||||
 | 
							top: 0;
 | 
				
			||||||
 | 
							left: 0;
 | 
				
			||||||
 | 
							width: 100%;
 | 
				
			||||||
 | 
							height: 100%;
 | 
				
			||||||
 | 
							background: rgba(0, 0, 0, 0.5);
 | 
				
			||||||
 | 
							z-index: 100;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						#building-modal-details {
 | 
				
			||||||
 | 
							display: none;
 | 
				
			||||||
 | 
							position: fixed;
 | 
				
			||||||
 | 
							top: 50%;
 | 
				
			||||||
 | 
							left: 50%;
 | 
				
			||||||
 | 
							transform: translate(-50%, -50%);
 | 
				
			||||||
 | 
							width: 80%;
 | 
				
			||||||
 | 
							max-width: 800px;
 | 
				
			||||||
 | 
							background: rgba(0, 0, 0, 0.9);
 | 
				
			||||||
 | 
							border-radius: 8px;
 | 
				
			||||||
 | 
							padding: 1rem;
 | 
				
			||||||
 | 
							z-index: 101;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	.astro-a {
 | 
						.astro-a {
 | 
				
			||||||
		position: absolute;
 | 
							position: absolute;
 | 
				
			||||||
		top: -32px;
 | 
							top: -32px;
 | 
				
			||||||
| 
						 | 
					@ -76,6 +129,10 @@ const lang = await getLocales(locale, ['resources', 'game', 'buildings', 'resear
 | 
				
			||||||
		margin-bottom: 1em;
 | 
							margin-bottom: 1em;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						.building-modal-text {
 | 
				
			||||||
 | 
							font-size: 1.5rem;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	.text-gradient {
 | 
						.text-gradient {
 | 
				
			||||||
		background-image: var(--accent-gradient);
 | 
							background-image: var(--accent-gradient);
 | 
				
			||||||
		-webkit-background-clip: text;
 | 
							-webkit-background-clip: text;
 | 
				
			||||||
| 
						 | 
					@ -121,7 +178,50 @@ const lang = await getLocales(locale, ['resources', 'game', 'buildings', 'resear
 | 
				
			||||||
		color: lime;
 | 
							color: lime;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
<script>
 | 
					<script define:vars={{ modalSet, lang }}>
 | 
				
			||||||
 | 
						const modalResources = document.getElementById("building-modal-req-resources");
 | 
				
			||||||
 | 
						const modalBuildings = document.getElementById("building-modal-req-buildings");
 | 
				
			||||||
 | 
						const modalResearch = document.getElementById("building-modal-req-research");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						document.querySelectorAll('.building-card-info-button').forEach((el) => {
 | 
				
			||||||
 | 
					        el.addEventListener('click', () => {
 | 
				
			||||||
 | 
					            // modal
 | 
				
			||||||
 | 
					            const modalDiv = document.getElementById('building-modal-details');
 | 
				
			||||||
 | 
					            if(!modalDiv) return;
 | 
				
			||||||
 | 
					            modalDiv.style.display = 'block';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								modalResources.innerHTML = modalSet[el.parentElement.parentElement.dataset.id].resources.map(resource => {
 | 
				
			||||||
 | 
									return `${lang['resources'][`Label_${resource.name}`]}: ${resource.amount}`;
 | 
				
			||||||
 | 
								}).join("<br />");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								modalBuildings.innerHTML = modalSet[el.parentElement.parentElement.dataset.id].buildings.map(building => {
 | 
				
			||||||
 | 
									return `${lang['buildings'][`Label_${building.id}`].name}: ${building.level}`;
 | 
				
			||||||
 | 
								}).join("<br />");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								modalResearch.innerHTML = modalSet[el.parentElement.parentElement.dataset.id].research.map(research => {
 | 
				
			||||||
 | 
									return `${lang['research'][`Label_${research.id}`].name}: ${research.level}`;
 | 
				
			||||||
 | 
								}).join("<br />");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // background
 | 
				
			||||||
 | 
					            const backgroundDiv = document.getElementById('building-modal-background');
 | 
				
			||||||
 | 
					            if(!backgroundDiv) return;
 | 
				
			||||||
 | 
					            backgroundDiv.style.display = 'block';
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // close modal on background click
 | 
				
			||||||
 | 
					    const bg = document.getElementById('building-modal-background');
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    bg?.addEventListener('click', () => {
 | 
				
			||||||
 | 
					        const modalDiv = document.getElementById('building-modal-details');
 | 
				
			||||||
 | 
					        if(!modalDiv) return;
 | 
				
			||||||
 | 
					        modalDiv.style.display = 'none';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const backgroundDiv = document.getElementById('building-modal-background');
 | 
				
			||||||
 | 
					        if(!backgroundDiv) return;
 | 
				
			||||||
 | 
					        backgroundDiv.style.display = 'none';
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const allButtons = document.getElementsByClassName("a-button");
 | 
						const allButtons = document.getElementsByClassName("a-button");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for(const buildingButton of allButtons) {
 | 
						for(const buildingButton of allButtons) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue