protected override void Subscribed() { Raise(new SetClearColourEvent(0, 0, 0)); if (_logicalMap != null) { return; } var assetManager = Resolve <IAssetManager>(); var state = Resolve <IGameState>(); _logicalMap = new LogicalMap2D(assetManager, _mapData, state.TemporaryMapChanges, state.PermanentMapChanges); var tileset = assetManager.LoadTexture(_logicalMap.TilesetId); AttachChild(new ScriptManager()); AttachChild(new Collider2D(_logicalMap, !_logicalMap.UseSmallSprites)); var renderable = AttachChild(new MapRenderable2D(_logicalMap, tileset)); var selector = AttachChild(new SelectionHandler2D(_logicalMap, renderable)); selector.HighlightIndexChanged += (sender, x) => renderable.HighlightIndex = x; TileSize = new Vector3(renderable.TileSize, 1.0f); _logicalMap.TileSize = renderable.TileSize; var movementSettings = _logicalMap.UseSmallSprites ? MovementSettings.Small() : MovementSettings.Large(); _partyMovement = AttachChild(new PartyCaterpillar(Vector2.Zero, MovementDirection.Right, movementSettings)); foreach (var npc in _logicalMap.Npcs) { AttachChild(_logicalMap.UseSmallSprites ? new SmallNpc(npc) as IComponent : new LargeNpc(npc)); } RebuildPartyMembers(); }
public Movement2D(MovementSettings settings) => _settings = settings ?? throw new ArgumentNullException(nameof(settings));