Exemplo n.º 1
0
    public void SetupCurrentAttraction(AttractionController _attraction)
    {
        currentAttraction       = _attraction;
        attractionNameText.text = _attraction.attractionName;

        UIAttractionStartAnim.SetBool("isOpen", true);
    }
Exemplo n.º 2
0
    public AttractionController BuildAttraction(AttractionController _attraction)
    {
        if (myAttraction != null)
        {
            return(myAttraction); // Wenn bereits eine Attraktion steht, nicht erneut bauen.
        }
        buildingSite.SetActive(false);
        GameObject attraction = (GameObject)Instantiate(_attraction.gameObject);

        hud.ShowAlert(LocalizationManager.instance != null ? LocalizationManager.instance.GetLocalizedValue("alert_new_attraction") : "Neue Attraktion!");

        float   spawnHeight   = 30f;
        Vector3 spawnPosition = new Vector3(transform.position.x, transform.position.y + spawnHeight, transform.position.z);

        attraction.transform.position = spawnPosition;
        if (transform.position.x > 0)
        {
            Vector3 rot = attraction.transform.eulerAngles;

            attraction.transform.rotation = Quaternion.Euler(rot.x, rot.y + 180, rot.z);
        }
        AttractionController ac = attraction.GetComponent <AttractionController>();

        myAttraction = ac;
        attraction.transform.parent = this.transform;
        //Moved die Attraktion auf Bodenhöhe
        StartCoroutine(MoveToPosition(attraction.transform, spawnPosition, transform.position, spawnAnimationDuration));
        audioSource.PlayOneShot(fallingSound, 0.2f);

        return(ac);
    }
Exemplo n.º 3
0
    public void AddAttraction(AttractionController _attraction)
    {
        if (AttractionAlreadyInList(_attraction))
        {
            return;
        }

        //Füge Attraktion der Liste hinzu
        activeAttractions.Add(_attraction);
    }
Exemplo n.º 4
0
    void OnTriggerExit(Collider other)
    {
        AttractionController attraction = other.GetComponentInParent <AttractionController>();

        if (attraction != null)
        {
            agent.obstacleAvoidanceType = ObstacleAvoidanceType.HighQualityObstacleAvoidance;
            CapsuleCollider collider = gameObject.GetComponent <CapsuleCollider>();
            collider.enabled = true;
        }
    }
Exemplo n.º 5
0
        private void searchAttraction(object sender, RoutedEventArgs e)
        {
            int        id   = Int32.Parse(idText.Text);
            Attraction rslt = AttractionController.SearchByID(id);

            if (rslt != null)
            {
                attractionNameText.Text         = rslt.AttractionName;
                AttractionDescriptionText.Text  = rslt.AttractionDescription;
                attractionHowToWorkText.Text    = rslt.AttractionHowToWork;
                AttractionParticipantsText.Text = rslt.AttractionParticipant;
                AttractionStartDate.Text        = rslt.AttractionStartDate.ToString();
            }
        }
Exemplo n.º 6
0
    public bool AttractionAlreadyInList(AttractionController _attraction)
    {
        //Suche ob genau diese Attraction (dieses gameObject) schon in Liste vorhanden ist.
        if (activeAttractions.Contains(_attraction))
        {
            return(true);
        }

        //Gibt es schon eine Attraktion dieser Art?
        for (int i = 0; i < activeAttractions.Count; i++)
        {
            if (activeAttractions[i].id == _attraction.id)
            {
                return(true);
            }
        }

        return(false);
    }
Exemplo n.º 7
0
        public AttractionControllerTest()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();

            optionsBuilder.UseInMemoryDatabase();
            var context = new ApplicationDbContext(optionsBuilder.Options);

            var mockMapper = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile(new AutoMapperProfiles());
            });
            var mapper = mockMapper.CreateMapper();

            _photoRepo   = new PhotoRepoFake(context);
            _appUserRepo = new AppUserRepoFake(context);
            _repo        = new AttractionRepoFake(context);

            _controller = new AttractionController(_appUserRepo, mapper, null, _repo, _photoRepo, null);
        }
Exemplo n.º 8
0
        private void ExecuteButton_Click(object sender, RoutedEventArgs e)
        {
            int id = Int32.Parse(idText.Text);

            if (RideRadioButton.IsChecked == true)
            {
                if (RequestRideController.SearchByID(id).RideStatus_.Equals("Accepted For Adding"))
                {
                    RideController.CreateRide(RequestRideController.SearchByID(id));
                }
                else if (RequestRideController.SearchByID(id).RideStatus_.Equals("Accepted For Updating"))
                {
                    RideController.UpdateRide(RequestRideController.SearchByID(id));
                }
                else
                {
                    RideController.deleteRide(RequestRideController.SearchByID(id));
                }
                RequestRideController.FinishRequestRide(id);
            }
            else
            {
                if (RequestAttractionController.SearchByID(id).AttractionStatus.Equals("Accepted For Adding"))
                {
                    AttractionController.CreateRide(RequestAttractionController.SearchByID(id));
                }
                else if (RequestAttractionController.SearchByID(id).AttractionStatus.Equals("Accepted For Updating"))
                {
                    AttractionController.UpdateAttraction(RequestAttractionController.SearchByID(id));
                }
                else
                {
                    AttractionController.deleteAttraction(RequestAttractionController.SearchByID(id));
                }

                RequestAttractionController.FinishRequestAttraction(id);
            }
        }
Exemplo n.º 9
0
    public void CreateNewAttraction()
    {
        //Finde eine Attraktion die noch nicht in der Liste ist
        Debug.Log("Trying to add new Attraction");
        AttractionDatabase          db            = FindObjectOfType <AttractionDatabase>();
        List <AttractionController> attrAvailable = new List <AttractionController>();

        for (int i = 0; i < db.attractionPrefabs.Count; i++)
        {
            if (!AttractionAlreadyInList(db.attractionPrefabs[i]))
            {
                attrAvailable.Add(db.attractionPrefabs[i]);
            }
        }

        if (attrAvailable.Count > 0)
        {
            AttractionController          attrToBuild       = attrAvailable[Random.Range(0, attrAvailable.Count)];
            AttractionBuildingSpot[]      allBuildingSpots  = FindObjectsOfType <AttractionBuildingSpot>();
            List <AttractionBuildingSpot> freeBuildingSpots = new List <AttractionBuildingSpot>();
            for (int i = 0; i < allBuildingSpots.Length; i++)
            {
                if (allBuildingSpots[i].myAttraction == null)
                {
                    freeBuildingSpots.Add(allBuildingSpots[i]);
                }
            }

            AttractionController createdAttraction = freeBuildingSpots[Random.Range(0, freeBuildingSpots.Count)].BuildAttraction(attrToBuild);
            AddAttraction(createdAttraction);
        }
        else
        {
            Debug.Log("no Available Attractions");
        }
    }
Exemplo n.º 10
0
    void Update()
    {
        // If the next update is reached
        if (Time.time >= nextUpdate)
        {
            nextUpdate = Mathf.FloorToInt(Time.time) + 1;
            UpdateEverySecond();
        }

        // Create new path
        if (currentStatus == status.IDLE && remainingIdleTime == 0)
        {
            // 50:50 Chance calculator
            // 1 = attraction
            // 0 = random
            walkRandom = (Random.value > 0.55f);

            // Show NPC
            ShowNPC();
            currentStatus = status.WALKING;

            if (!walkRandom)
            {
                ParkManager parkManager = FindObjectOfType <ParkManager>();
                if (parkManager)
                {
                    List <AttractionController> attractions = parkManager.activeAttractions;
                    if (attractions.Count > 0)
                    {
                        int attractionIndex = Random.Range(0, attractions.Count);

                        // Do not move to last attraction again
                        if (!lastVisitedAttraction || lastVisitedAttraction != attractions[attractionIndex])
                        {
                            destination = attractions[attractionIndex].entrancePosition;

                            lastVisitedAttraction = attractions[attractionIndex];

                            agent.SetDestination(new Vector3(destination.position.x, transform.position.y, destination.position.z));
                            anim.SetBool("moving", true);
                        }
                        else
                        {
                            currentStatus = status.IDLE;
                        }
                    }
                    else
                    {
                        currentStatus = status.IDLE;
                    }
                }
                else
                {
                    currentStatus = status.IDLE;
                }
            }
            else
            {
                remainingIdleTime = Random.Range(game.idleTimeMin, game.idleTimeMax);;
                agent.SetDestination(GetRandomLocation());
                anim.SetBool("moving", true);
            }
        }

        if (currentStatus == status.WALKING)
        {
            if (!agent.pathPending)
            {
                if (agent.remainingDistance <= agent.stoppingDistance)
                {
                    if (!agent.hasPath || agent.velocity.sqrMagnitude == 0f)
                    {
                        if (destination)
                        {
                            anim.SetBool("moving", false);

                            AttractionController attraction = lastVisitedAttraction.GetComponent <AttractionController>();
                            // Check if target is really an attraction
                            if (attraction)
                            {
                                attraction.AddNPCToQueue(gameObject);
                                remainingIdleTime = 0;

                                HideNPC();
                            }

                            destination = null;
                        }
                        else if (walkRandom && remainingIdleTime != 0)
                        {
                            currentStatus = status.IDLE;
                            anim.SetBool("moving", false);
                        }
                    }
                }
            }
        }
    }
Exemplo n.º 11
0
 public void LeaveAttraction()
 {
     currentAttraction       = null;
     attractionNameText.text = "";
     UIAttractionStartAnim.SetBool("isOpen", false);
 }