/**
     * Used to initialize the Hud for the first time
     */
    public void Initialize(RessourcesController ressourcesController, List <Player> players)
    {
        this.ressourcesController = ressourcesController;

        int numOfPlayers = 0;

        //Initialy set all Player Infos to invisible
        maxNumOfPlayers = playersInfoUI.Count;

        for (int i = 0; i < maxNumOfPlayers; i++)
        {
            playersInfoUI[i].gameObject.SetActive(false);
        }

        //Check if list provided of players is more then the maximum allowed, if it is then just take the ones up to it's max
        if (players.Count > maxNumOfPlayers)
        {
            numOfPlayers = maxNumOfPlayers;
        }
        else
        {
            numOfPlayers = players.Count;
        }

        setNumOfPlayers(numOfPlayers);

        //For each player Set up initial Values
        for (int i = 0; i < numOfPlayers; i++)
        {
            PlayerUpdate(players[i]);
        }

        timer.Run = true;
    }
Beispiel #2
0
    private void InventoryManagement()
    {
        inventory.ShowSlot();
        if (isBuild && buildingStats.hasProduction)
        {
            for (int i = 0; i < buildingStats.productionOrder.rc_Out.Length; i++)
            {
                RessourcesController _rc = buildingStats.productionOrder.rc_Out [i];
                if (inventory.Count(_rc.Element) > 0 && rcGive [i].TotalAmount != inventory.Count(_rc.Element))
                {
                    if (DeactivateAllGiveWorkOrder != null)
                    {
                        DeactivateAllGiveWorkOrder(gameObject);
                    }

                    rcGive [i] = new RessourcesController(inventory.Count(_rc.Element), _rc.Element, RessourcesController.workOrderType.Give_Ressource);
                    if (CreateWorkOrder != null)
                    {
                        CreateWorkOrder(gameObject, flagPostition.transform.position, rcGive [i], inventory.Count(rcGive [i].Element));
                    }
                }
                else if (inventory.Count(_rc.Element) <= 0)
                {
                    DeactivateAllGiveWorkOrder(gameObject);
                }
            }
        }
    }
Beispiel #3
0
 bool CheckInvForElement(RessourcesController _rc)
 {
     if (inventory.Count(_rc.Element) < _rc.TotalAmount)
     {
         return(false);
     }
     return(true);
 }
Beispiel #4
0
    void DeactivateRunningWorkOrder(GameObject _go, RessourcesController _rs)
    {
        WorkOrder work = workOrderQueue.Find(w => w.resController == _rs && w.requestor == _go &&
                                             (w.status == WorkOrder.workOrderStatus.Running || w.status == WorkOrder.workOrderStatus.Reserved));

        if (work != null)
        {
            work.SetInactive();
            //workOrderQueue.Remove (work);
        }
    }
Beispiel #5
0
    bool CheckWorkOrder(GameObject _go, RessourcesController _rs)
    {
        WorkOrder workQ = workOrderQueue.Find(w => w.resController == _rs && w.requestor == _go &&
                                              (w.status == WorkOrder.workOrderStatus.Queue || w.status == WorkOrder.workOrderStatus.Running ||
                                               w.status == WorkOrder.workOrderStatus.Reserved || w.status == WorkOrder.workOrderStatus.Error));

        if (workQ != null)
        {
            return(true);
        }
        return(false);
    }
Beispiel #6
0
 public WorkOrder(GameObject _requestedGo, Vector3 _locOfOrder, RessourcesController _rC, float _amount, int _num)
 {
     requestor       = _requestedGo;
     locationOfOrder = _locOfOrder;
     resController   = _rC;
     typeOfOrder     = _rC.Type;
     status          = workOrderStatus.Queue;
     number          = _num;
     errorCount      = 0;
     amount          = _amount;
     if (amount <= 0)
     {
         Debug.LogError("Error amount < 0:" + amount);
     }
 }
    // Use this for initialization
    void Start()
    {
        //players.Clear ();
        GameObject.Find("GameLoader").GetComponent <GameLoader> ().load(players);

        currentGame          = gameObject.AddComponent <Game>();
        ressourcesController = new RessourcesController();
        setUpPlayers();

        GameObject.Find("GameRecorder").GetComponent <GameRecorder> ().Initialize(players.Count);

        InitializeControllers();

        StartGame();
    }
Beispiel #8
0
 void CommunicationWorkOrderInError(GameObject _go, RessourcesController _rc)
 {
     if (_go == null)
     {
         Debug.LogError("Go == null");
     }
     Debug.LogWarning("go:" + _go.name);
     Debug.LogWarning("GameObject:" + gameObject.name);
     if (gameObject != null && _go != null)
     {
         if (_go == gameObject)
         {
             currentWorkOrderIsError = true;
         }
         else
         {
             currentWorkOrderIsError = false;
         }
     }
 }
Beispiel #9
0
    void Start()
    {
        currentState = State.selected;
        grid         = GameObject.Find("A*").GetComponent <Grid> ();

        inventory = GetComponent <Inventory> ();

        animator = GetComponent <Animator>();
        transform.gameObject.SetActive(true);
        gameObject.name = buildingStats.buildingName;

        if (transform.Find("Flag") == null)
        {
            flagPostition = (GameObject)Instantiate(flagPrefab, transform);
            flagPostition.transform.position = new Vector3(0, 0, -5);
            flagPostition.name = "Flag";
            flagPostition.SetActive(false);
            flagPostition.GetComponent <SpriteRenderer> ().sortingOrder = 1;
        }
        else
        {
            flagPostition = this.transform.Find("Flag").gameObject;
        }

        flagPositionSet = false;

        isBuild = false;

        if (buildingStats.hasProduction)
        {
            rcGive = new RessourcesController[buildingStats.productionOrder.rc_Out.Length];

            for (int i = 0; i < rcGive.Length; i++)
            {
                rcGive [i] = new RessourcesController(0, buildingStats.productionOrder.rc_Out[i].Element, RessourcesController.workOrderType.Give_Ressource);
            }
        }

        WorkOrderManager.CommunicationWorkOrderInError += CommunicationWorkOrderInError;
    }
Beispiel #10
0
    IEnumerator OwnBehaivor()
    {
        while (true)
        {
            if (batteryStatus > 0)
            {
                if (currentStatus == Status.idle)
                {
                    if (sucheArbeit != null)
                    {
                        currentWorkOrder = sucheArbeit(gameObject);
                        if (!currentWorkOrder.IsNull())
                        {
                            currentStatus = Status.workIdle;
                        }
                    }
                }
                else
                {
                    print("current WorkOrder: " + currentWorkOrder.WorkOrderType);
                    if (currentWorkOrder.WorkOrderType == "Need_Ressource")
                    {
                        // Prüft, ob er im eigenen Inv die Ressourcen hat. Falls ja, geht er zum Platz und hinterlässt sein kompletten Inv.
                        // Falls nein, reserviert er den jetzigen Workorder
                        if (inventory.Count(currentWorkOrder.resController.Element) <= 0)
                        {
                            //Debug.LogError ("carring unrequested inv - deleting everything - debug");
                            DroppingElementInGround();
                        }

                        if (inventory.Count(currentWorkOrder.resController.Element) > 0)
                        {
                            print("Inventory über 0");
                            if (currentStatus != Status.transport)
                            {
                                currentStatus = Status.transport;
                                transportToLocation(currentWorkOrder.getLocationOfWork);
                            }

                            if (currentStatus != Status.arrivedAtLocation)
                            {
                                TransferElementsWithBuilding(currentWorkOrder.WorkOrderType);
                            }
                        }
                        else if (inventory.Count(currentWorkOrder.resController.Element) <= 0)
                        {
                            print("Inventory unter 0");
                            ReserveWorkOrder(currentWorkOrder, gameObject);
                            WorkOrder giveWorkOrder = SearchForWorkOrder(currentWorkOrder.resController.Element, "Give_Ressource");
                            if (giveWorkOrder != null)
                            {
                                currentWorkOrder        = giveWorkOrder;
                                currentWorkOrder.status = WorkOrder.workOrderStatus.Running;
                            }
                            else
                            {
                                RessourcesController rc_Dig = new RessourcesController(currentWorkOrder.Amount, currentWorkOrder.resController.Element, RessourcesController.workOrderType.Dig_Ressource);
                                bool doneRequest            = false;
                                if (CheckStatusOfWorkOrder != null)
                                {
                                    doneRequest = CheckStatusOfWorkOrder(gameObject, currentWorkOrder.Amount, currentWorkOrder.resController.Element);
                                    print("Einwohner doneRequest: " + doneRequest);
                                }
                                if (CreateDigWorkOrder != null && !doneRequest)
                                {
                                    //wird von WorkOrderManager aufgerufen

                                    CreateDigWorkOrder(gameObject, Vector3.zero, rc_Dig, rc_Dig.TotalAmount - inventory.Count(rc_Dig.Element));
                                    currentStatus = Status.idle;
                                }
                            }
                        }
                        else
                        {
                            Debug.LogError("error, check");
                        }
                    }
                    else if (currentWorkOrder.WorkOrderType == "Dig_Ressource")
                    {
                        gatheringRessources(currentWorkOrder.resController.Element);
                    }
                    else if (currentWorkOrder.WorkOrderType == "Give_Ressource")
                    {
                        if (currentStatus != Status.transport)
                        {
                            currentStatus = Status.transport;
                            transportToLocation(currentWorkOrder.getLocationOfWork);
                        }
                        if (currentStatus != Status.arrivedAtLocation)
                        {
                            TransferElementsWithBuilding(currentWorkOrder.WorkOrderType);
                        }
                    }
                }
            }


            yield return(new WaitForSeconds(2));
        }
    }
Beispiel #11
0
 public void SetUpGame(HudController hud, RessourcesController ressourcesController, List <Player> players)
 {
     HudController = hud;
     PlayersInGame = players;
     hudController.Initialize(ressourcesController, playersInGame);
 }
Beispiel #12
0
 void CreateWorkOrder(GameObject _go, Vector3 _locationOfWork, RessourcesController _rs, float _missingAmount)
 {
     print("creating Workorder");
     workOrderQueue.Add(new WorkOrder(_go, _locationOfWork, _rs, _missingAmount, counter));
     counter++;
 }