90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| ---
 | |
| import { ObjectId } from "mongodb";
 | |
| import LoggedIn from "../../../../layouts/LoggedIn.astro";
 | |
| import locationManager from "../../../../lib/classes/managers/LocationManager";
 | |
| 
 | |
| const { token, lang } = Astro.locals;
 | |
| 
 | |
| const currentSystemId = Astro.cookies.get('currentSystem')?.value ?? null;
 | |
| if(currentSystemId === null) return Astro.redirect('/game/systemManager/select');
 | |
| 
 | |
| const currentSystem = locationManager.getSystem(new ObjectId(currentSystemId));
 | |
| if(currentSystem === undefined) {
 | |
|     Astro.cookies.delete('currentSystem');
 | |
|     return Astro.redirect('/game/systemManager/select');
 | |
| }
 | |
| 
 | |
| const discoveredAsteroids = currentSystem.asteroids.asteroids;
 | |
| ---
 | |
| <LoggedIn id="systemManager" title="System Manager">
 | |
|     <h1>Selected system: {currentSystem.data.name} <a href="/game/systemManager/select">(change)</a></h1>
 | |
|     <div class="system-links">
 | |
|         <a href="/game/systemManager">Overview</a>
 | |
|         <a href="/game/systemManager/structures">System-wide structures</a>
 | |
|         <a href="/game/systemManager/spaceStations">Space stations</a>
 | |
|         <a href="/game/systemManager/asteroids">Asteroids</a>
 | |
|     </div>
 | |
|     <div>
 | |
|         <h2>Avaliable asteroids <button id="scan">Scan for new</button></h2>
 | |
|         <div>
 | |
|             {discoveredAsteroids.map((asteroid) => <div>
 | |
|                 <h3>{asteroid.name} <a href={`/game/systemManager/asteroids/send?dest=${asteroid.id}`}>Send</a></h3>
 | |
|                 <h4>Resources left: </h4>
 | |
|                 {asteroid.resources.map((resource) => <div><p>{resource.id} - {resource.amount}</p></div>)}
 | |
|             </div>)}
 | |
|         </div>
 | |
|     </div>
 | |
| </LoggedIn>
 | |
| <style>
 | |
| * {
 | |
| 	color: white;
 | |
| }
 | |
| 
 | |
| h1 {
 | |
|     text-align: center;
 | |
|     color: white;
 | |
| }
 | |
| 
 | |
| h1 a {
 | |
|     color: lime;
 | |
| }
 | |
| 
 | |
| button, a {
 | |
|     color: white;
 | |
|     background-color: #555;
 | |
|     padding: 0.5rem;
 | |
|     border-radius: 5px;
 | |
|     border: none;
 | |
|     cursor: pointer;
 | |
| }
 | |
| 
 | |
| .system-links {
 | |
|     display: flex;
 | |
|     flex-direction: row;
 | |
|     justify-content: center;
 | |
|     margin-bottom: 1rem;
 | |
| }
 | |
| 
 | |
| .system-links a {
 | |
|     color: white;
 | |
|     background-color: #555;
 | |
|     padding: 0.5rem;
 | |
|     margin: 0 1rem;
 | |
|     border-radius: 5px;
 | |
|     text-decoration: none;
 | |
| }
 | |
| </style>
 | |
| <script>
 | |
| async function scan() {
 | |
|     await fetch('/api/system/asteroids/scan', {
 | |
|         method: 'POST',
 | |
|         headers: {
 | |
|             'Content-Type': 'application/json',
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     window.location.reload();
 | |
| }
 | |
| 
 | |
| document.getElementById('scan')?.addEventListener('click', scan);
 | |
| </script> |