GameObject InstantiateTileGoFromTileType(GridTileType type) { GameObject ret = null; GameObject prefab = null; switch (type) { case GridTileType.GRID_TIILE_TYPE_STATIC: prefab = LevelCreatorEditor.Instance.GetStaticTilePrefab(); break; case GridTileType.GRID_TILE_TYPE_MOVE: prefab = LevelCreatorEditor.Instance.GetBaseMoveTilePrefab(); break; } if (prefab != null) { ret = Instantiate(prefab, Vector3.zero, Quaternion.identity); GridTileInstance tile_script = ret.AddComponent <GridTileInstance>(); tile_script.Init(this, type); } return(ret); }
private void OnTriggerEnter2D(Collider2D collision) { GameEntity entity_hit = collision.gameObject.GetComponent <GameEntity>(); if (entity_hit != null) { if (sender != entity_hit) { EventManager.Event ev = new EventManager.Event(EventManager.EventType.ENTITY_HIT); ev.entity_hit.hit = entity_hit; ev.entity_hit.sender = sender; EventManager.Instance.SendEvent(ev); Destroy(gameObject); return; } } GridTileInstance tile_hit = collision.gameObject.GetComponent <GridTileInstance>(); if (tile_hit != null) { EventManager.Event ev = new EventManager.Event(EventManager.EventType.TILE_HIT); ev.tile_hit.tile = tile_hit; ev.tile_hit.bullet = this; ev.tile_hit.sender = sender; EventManager.Instance.SendEvent(ev); hits = true; Destroy(gameObject); return; } }
private bool CheckMovementTile(GameGridInstance.GridTile tile, MoveDirection dir) { bool ret = false; if (tile != null) { GridTileInstance tile_ins_go = tile.go.GetComponent <GridTileInstance>(); if (tile_ins_go != null && tile_ins_go.Type() != GameGridInstance.GridTileType.GRID_TIILE_TYPE_STATIC) { Vector2Int grid_pos_to_offset = GetOffsetByDirection(dir); Vector2Int grid_pos_to_check = tile.grid_pos + grid_pos_to_offset; GameGridInstance.GetTileByGridPosState state; GameGridInstance.GridTile tile_check = grid_inst.GetTileByGridPos(grid_pos_to_check, out state); switch (state) { case GameGridInstance.GetTileByGridPosState.SUCCES: { if (tile_check.go != null) { ret = CheckMovementTile(tile_check, dir); } else { ret = true; } } break; case GameGridInstance.GetTileByGridPosState.NO_TILE_FOUND: { ret = true; } break; } } } return(ret); }