You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB
JavaScript

import PlayerList from "./PlayerList";
import {Component} from "preact";
import {NwahMap} from "../NwahMap";
import {HeadRenderer} from "../head-render/HeadRenderer";
export default class PlayerMap extends Component {
state = {
players: [],
mapElement: document.createElement('div'),
renderer: new HeadRenderer(),
follow: false,
};
constructor(props) {
super();
this.state.map = new NwahMap(props);
this.state.mapElement.classList.add('map');
}
componentDidMount() {
this.base.appendChild(this.state.mapElement);
this.state.map.init(this.state.mapElement, this);
this.state.renderer.init(200, 200);
}
componentDidUpdate() {
this.state.map.setFollow(this.state.follow);
}
render({}, {players, renderer, map, follow}, {}) {
return <main>
<div className="head">
<h2>N'wah map</h2>
<span>
<label>Follow players
<input type="checkbox" checked={follow}
onChange={(e) => this.setState({follow: e.target.checked})}/>
</label>
</span>
</div>
<div className="sidebar">
<PlayerList players={players} renderer={renderer} map={map}/>
</div>
</main>
}
}