// Use this for initialization void Start() { dungeonFloor = DungeonGenerator.CreateFloor(64, 64, new Dungeon()); RLBaseTile start = null; foreach (RLBaseTile t in dungeonFloor.Tiles) { if (t != null) { if (start == null && !t.GetTileType().BlocksMovement) { start = t; } TileRenderer.BindTile(t); } } _actor = new SimpleActor(StatBlock.CreateInstance(baseStats, 3, 7, 9)) { BasicMoveSkill = move, fieldOfView = new BresenhamFOV(), OnVisibilityChanged = (tile, visible) => { if (visible) { tile.SetCurrentlyVisibleToPlayer(true); tile.SetEverSeenByPlayer(true); } else { tile.SetCurrentlyVisibleToPlayer(false); } } }; StatBlockDisplay.BindStatBlock(_actor.GetStats()); start.SetActor(_actor); RLActorController actorController = Instantiate(ActorPrefab, transform); actorController.effectRenderer = effectRenderer; actorController.BindActor(_actor); InventoryDisplay.BindInventory(_actor); virtualCam.Follow = actorController.transform; }
private void Update() { if (Input.GetKeyDown(KeyCode.I)) { InventoryDisplay.gameObject.SetActive(!InventoryDisplay.gameObject.activeSelf); } if (Input.GetKeyDown(KeyCode.T)) { _actor.AddItem(testItems[Random.Range(0, testItems.Length)]); } if (!CanMove) { return; } float horiz = Input.GetAxis("Horizontal"); float vert = Input.GetAxis("Vertical"); const float tolerance = 0.0001f; RLBaseTile targetTile = null; int x = _actor.GetTile().GetDisplayPosition().x; int y = _actor.GetTile().GetDisplayPosition().y; if (Math.Abs(horiz) > tolerance) { targetTile = dungeonFloor.Tiles[(int)(x + Mathf.Sign(horiz)), y]; } else if (Math.Abs(vert) > tolerance) { targetTile = dungeonFloor.Tiles[x, (int)(y + Mathf.Sign(vert))]; } if (targetTile != null) { _actor.TryBasicMoveToTile(targetTile); CanMove = false; StartCoroutine(ReenableInput()); } }