Exemplo n.º 1
0
    public void addForTransfer(WeaponTransfer wt)
    {
        foreach (Weapon w in wt.getWeapons())
        {
            // Add to manufactured items
            if (manufacturedItems.ContainsKey(w))
            {
                manufacturedItems[w] += wt.getQuantity(w);
            }
            else
            {
                manufacturedItems.Add(w, wt.getQuantity(w));
            }

            // Add to purchased items
            if (purchasedItems.ContainsKey(w))
            {
                purchasedItems[w] += wt.getQuantity(w);
            }
            else
            {
                purchasedItems.Add(w, wt.getQuantity(w));
            }

            // Occupy storage space
            storageUsed += w.getStorageSpace() * wt.getQuantity(w);
        }
    }
Exemplo n.º 2
0
    public void removeForTransfer(WeaponTransfer wt)
    {
        foreach (Weapon w in wt.getWeapons())
        {
            // Remove from manufactured items
            manufacturedItems[w] -= wt.getQuantity(w);
            if (manufacturedItems[w] == 0)
            {
                manufacturedItems.Remove(w);
            }

            // Remove from purchased items
            purchasedItems[w] -= wt.getQuantity(w);
            if (purchasedItems[w] == 0)
            {
                purchasedItems.Remove(w);
            }

            // Free storage space
            storageUsed -= w.getStorageSpace() * wt.getQuantity(w);
        }
    }
Exemplo n.º 3
0
    void transferWindow(int windowID)
    {
        float margin = 15;
        int space = 10;
        float toolbarHeight = 40;
        float selectionAreaWidth = 7*Screen.width/12 - 2*margin;
        float transferAreaHeight = (Screen.height-topMenuHeight-3*margin)/2;
        float selectionItemWidth = selectionAreaWidth/2;
        float buttonSize = 15;
        float numberWidth = 30;
        float transferItemWidth = 240;

        GUIStyle centeredLabelStyle = new GUIStyle();
        centeredLabelStyle.normal = GUI.skin.label.normal;
        centeredLabelStyle.alignment = TextAnchor.MiddleCenter;
        centeredLabelStyle.margin = GUI.skin.label.margin;

        GUIStyle titleLabelStyle = new GUIStyle();
        titleLabelStyle.normal = GUI.skin.label.normal;
        titleLabelStyle.alignment = TextAnchor.MiddleCenter;
        titleLabelStyle.margin = GUI.skin.label.margin;
        titleLabelStyle.fontSize = 30;

        string[] categories = {"Equipment", "Employees"};

        showTopMenu();

        // Toolbar to select category
        GUILayout.BeginArea(new Rect(margin, topMenuHeight+margin, selectionAreaWidth, toolbarHeight));
        int oldCategory = category;
        category = GUILayout.Toolbar(category, categories, GUILayout.ExpandHeight(true));
        if (oldCategory != category)
        {
            // Switching categories
            scrollPosition = new Vector2(0,0);
            scrollPositionT = new Vector2(0,0);
        }
        GUILayout.EndArea();

        // Selection Area
        GUILayout.BeginArea(new Rect(margin,
                                    topMenuHeight+margin+toolbarHeight+margin,
                                    selectionAreaWidth,
                                    Screen.height-topMenuHeight-toolbarHeight-3*margin),
                            GUI.skin.box);
        scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.ExpandHeight(true));

        GUILayout.BeginVertical ();

        // Column titles
        GUILayout.BeginHorizontal ();
        if (category == 0)
            GUILayout.Label("Items", titleLabelStyle, GUILayout.Width(selectionItemWidth));
        if (category == 1)
            GUILayout.Label("Employees", titleLabelStyle, GUILayout.Width(selectionItemWidth));
        GUILayout.Label("Available/Transfer", titleLabelStyle);
        GUILayout.EndHorizontal();

        // Column entries
        if (category == 0)
        {
            // Item Transfer
            List<Weapon> baseWeapons = currentBase.getPurchasedItems();

            foreach (Weapon w in baseWeapons)
            {
                GUILayout.Space(space);
                GUILayout.BeginHorizontal();
                GUILayout.Label(w.getName(), centeredLabelStyle, GUILayout.Width (selectionItemWidth));
                GUILayout.FlexibleSpace();
                GUILayout.Label(""+(currentBase.getAmountPurchased(w) - wTransfer.getQuantity(w))
                                , centeredLabelStyle, GUILayout.Width (numberWidth));
                GUILayout.Space(space);
                GUILayout.BeginVertical();
                if (GUILayout.Button ("", increaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (wTransfer.getQuantity(w) + currentBase.getEquipped(w) == currentBase.getAmountPurchased(w)) {
                        // Trying to transfer a weapon that a soldier is equipped with.
                        transferMessage = "All remaining items of this type are currently in use by soldiers.";
                    }
                    else if (wTransfer.getQuantity(w) < currentBase.getAmountPurchased(w)) {
                        wTransfer.addWeapon(w);
                    }
                }
                if (GUILayout.Button ("", decreaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (wTransfer.getQuantity(w) > 0)
                        wTransfer.removeWeapon(w);
                }
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }
        }
        else if (category == 1)
        {
            // Employee Transfer
            LinkedList<Soldier> soldiers = currentBase.getHiredSoldiers();

            // Soldiers
            foreach (Soldier s in soldiers)
            {
                GUILayout.Space(space);
                GUILayout.BeginHorizontal();
                GUILayout.Label(s.getName(), centeredLabelStyle, GUILayout.Width (selectionItemWidth));
                GUILayout.FlexibleSpace();
                if (eTransfer.containsSoldier(s)) {
                    GUILayout.Label("0", centeredLabelStyle, GUILayout.Width (numberWidth));
                }
                else {
                    GUILayout.Label("1", centeredLabelStyle, GUILayout.Width (numberWidth));
                }
                GUILayout.Space(space);
                GUILayout.BeginVertical();
                if (GUILayout.Button ("", increaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (!eTransfer.containsSoldier(s)) {
                        if (s.getWeapon() != null || s.getArmor() != null)
                        {
                            transferMessage = "This soldier is equipped with ";
                            if (s.getWeapon() != null)
                                transferMessage += s.getWeapon().getName();
                            if (s.getWeapon() != null && s.getArmor() != null)
                                transferMessage += " and ";
                            if (s.getArmor() != null)
                                transferMessage += s.getArmor().getName();
                            transferMessage += ". These will not be transferred.";
                        }
                        if (currentBase.getAircraft() != null && currentBase.getAircraft().contains(s))
                        {
                            // Soldier will be removed from aircraft when transfer is processed
                            transferMessage += "\nThis soldier will be removed from the aircraft";
                        }
                        eTransfer.addSoldier(s);
                    }
                }
                if (GUILayout.Button ("", decreaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    eTransfer.removeSoldier (s);
                }
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }

            // Scientists
            if (currentBase.getNumbScientists() > 0)
            {
                GUILayout.Space(space);
                GUILayout.BeginHorizontal();
                GUILayout.Label("Scientists", centeredLabelStyle, GUILayout.Width (selectionItemWidth));
                GUILayout.FlexibleSpace();
                GUILayout.Label("" + (currentBase.getNumbScientists() - eTransfer.getScientists())
                                , centeredLabelStyle, GUILayout.Width (numberWidth));
                GUILayout.Space(space);
                GUILayout.BeginVertical();
                if (GUILayout.Button ("", increaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (eTransfer.getScientists() < currentBase.getNumbScientists())
                        eTransfer.addScientist();
                }
                if (GUILayout.Button ("", decreaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (eTransfer.getScientists() > 0)
                        eTransfer.removeScientist ();
                }
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }
            // Workers
            if (currentBase.getNumbWorkers() > 0)
            {
                GUILayout.Space(space);
                GUILayout.BeginHorizontal();
                GUILayout.Label("Workers", centeredLabelStyle, GUILayout.Width (selectionItemWidth));
                GUILayout.FlexibleSpace();
                GUILayout.Label("" + (currentBase.getNumbWorkers() - eTransfer.getWorkers())
                                , centeredLabelStyle, GUILayout.Width (numberWidth));
                GUILayout.Space(space);
                GUILayout.BeginVertical();
                int busyWorkers = 0;
                foreach (ProductionOrder p in currentBase.getActiveOrders()) {
                    busyWorkers += p.getWorkers();
                }
                if (GUILayout.Button ("", increaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (eTransfer.getWorkers() < currentBase.getNumbWorkers() - busyWorkers)
                        eTransfer.addWorker();
                    else if (busyWorkers > 0)
                        transferMessage = "All remaining workers are busy";
                }
                if (GUILayout.Button ("", decreaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (eTransfer.getWorkers() > 0)
                        eTransfer.removeWorker ();
                }
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }

            // Pilots
            if (currentBase.getNumbPilots() > 0)
            {
                GUILayout.Space(space);
                GUILayout.BeginHorizontal();
                GUILayout.Label("Pilots", centeredLabelStyle, GUILayout.Width (selectionItemWidth));
                GUILayout.FlexibleSpace();
                GUILayout.Label("" + (currentBase.getNumbPilots() - eTransfer.getPilots())
                                , centeredLabelStyle, GUILayout.Width (numberWidth));
                GUILayout.Space(space);
                GUILayout.BeginVertical();
                if (GUILayout.Button ("", increaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (eTransfer.getPilots() < currentBase.getNumbPilots())
                    {
                        // If there is only one pilot left in base and aircraft has a pilot, the pilot will be removed from aircraft.
                        if (currentBase.getNumbPilots() - eTransfer.getPilots() == 1 && currentBase.getAircraft() != null
                            && currentBase.getAircraft().hasPilot())
                        {
                            transferMessage = "Pilot will be removed from the aircraft";
                        }
                        eTransfer.addPilot();
                    }
                }
                if (GUILayout.Button ("", decreaseSkin.button, GUILayout.Width (buttonSize), GUILayout.Height (buttonSize)))
                {
                    transferMessage = "";
                    if (eTransfer.getPilots() > 0)
                        eTransfer.removePilot ();
                }
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }
        }
        else
        {
            GUILayout.Label("No corresponding category!!");
        }

        GUILayout.EndVertical ();
        GUILayout.EndScrollView();
        GUILayout.EndArea();

        // Destination Base Area
        GUILayout.BeginArea(new Rect(margin+selectionAreaWidth+margin,
                                    topMenuHeight+margin,
                                    Screen.width-selectionAreaWidth-3*margin,
                                    Screen.height-topMenuHeight-transferAreaHeight-3*margin),
                            GUI.skin.box);

        GUILayout.BeginVertical();
        GUILayout.Space(margin);

        GUILayout.Label("Destination Base", titleLabelStyle);
        GUILayout.Space(space);

        float baseNameHeight = 50;
        GUILayout.FlexibleSpace();
        GUILayout.BeginHorizontal(GUILayout.Height(baseNameHeight));
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Prev", GUILayout.Width(baseNameHeight), GUILayout.ExpandHeight (true)))
        {
            destBase = manager.getBaseBefore(destBase);
            transferMessage = "";
        }
        GUILayout.Label(destBase.getName(), centeredLabelStyle, GUILayout.ExpandHeight (true), GUILayout.Width(200));
        if (GUILayout.Button("Next", GUILayout.Width(baseNameHeight), GUILayout.ExpandHeight (true)))
        {
            destBase = manager.getBaseAfter(destBase);
            transferMessage = "";
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal ();
        GUILayout.FlexibleSpace();

        GUILayout.Label ("Storage available: " + (destBase.getTotalStorageSpace() - destBase.getUsedStorage()),
                        centeredLabelStyle);
        GUILayout.Space(space);

        GUILayout.Label ("Living space available: " + (destBase.getLivingSpace() - destBase.getOccupiedLivingSpace()),
                        centeredLabelStyle);
        GUILayout.Space(space);

        GUILayout.Label(transferMessage, centeredLabelStyle);

        GUILayout.Space(margin);
        GUILayout.EndVertical();
        GUILayout.EndArea();

        // Current Transfer Area
        GUILayout.BeginArea(new Rect(margin+selectionAreaWidth+margin,
                                    Screen.height-margin-transferAreaHeight,
                                    Screen.width-selectionAreaWidth-3*margin,
                                    transferAreaHeight),
                            GUI.skin.box);
        GUILayout.BeginHorizontal();
        GUILayout.Space (margin);
        GUILayout.BeginVertical();
        GUILayout.Space(margin);

        scrollPositionT = GUILayout.BeginScrollView(scrollPositionT, GUILayout.ExpandHeight(true));

        // Items
        foreach (Weapon w in wTransfer.getWeapons())
        {
            GUILayout.BeginHorizontal ();
            GUILayout.FlexibleSpace();
            GUILayout.Label (w.getName(), GUILayout.Width(transferItemWidth));
            GUILayout.Label ("" + wTransfer.getQuantity(w), centeredLabelStyle, GUILayout.Width(numberWidth));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(space);
        }
        foreach (Soldier s in eTransfer.getSoldiers())
        {
            GUILayout.BeginHorizontal ();
            GUILayout.FlexibleSpace();
            GUILayout.Label (s.getName(), GUILayout.Width(transferItemWidth));
            GUILayout.Label ("1", centeredLabelStyle, GUILayout.Width(numberWidth));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(space);
        }
        if (eTransfer.getScientists() > 0)
        {
            GUILayout.BeginHorizontal ();
            GUILayout.FlexibleSpace();
            GUILayout.Label ("Scientists", GUILayout.Width(transferItemWidth));
            GUILayout.Label ("" + eTransfer.getScientists(), centeredLabelStyle, GUILayout.Width(numberWidth));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(space);
        }
        if (eTransfer.getWorkers() > 0)
        {
            GUILayout.BeginHorizontal ();
            GUILayout.FlexibleSpace();
            GUILayout.Label ("Workers", GUILayout.Width(transferItemWidth));
            GUILayout.Label ("" + eTransfer.getWorkers(), centeredLabelStyle, GUILayout.Width(numberWidth));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(space);
        }
        if (eTransfer.getPilots() > 0)
        {
            GUILayout.BeginHorizontal ();
            GUILayout.FlexibleSpace();
            GUILayout.Label ("Pilots", GUILayout.Width(transferItemWidth));
            GUILayout.Label ("" + eTransfer.getPilots(), centeredLabelStyle, GUILayout.Width(numberWidth));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.Space(space);
        }
        GUILayout.EndScrollView ();

        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Transfer", GUILayout.Width (200)))
        {
            if (wTransfer.getStorageSpace() > (destBase.getTotalStorageSpace() - destBase.getUsedStorage()))
            {
                transferMessage = "Not enough storage space in destination base";
            }
            else if (eTransfer.getLivingSpace() > (destBase.getLivingSpace() - destBase.getOccupiedLivingSpace()))
            {
                transferMessage = "Not enough living space in destination base";
            }
            else if (currentBase.Equals(destBase))
            {
                transferMessage = "Current base and destination base are the same";
            }
            else
            {
                transferMessage = "";
                currentBase.removeForTransfer(wTransfer);
                currentBase.removeSoldiersForTransfer(eTransfer);
                List<string> scientists = currentBase.removeScientistsForTransfer(eTransfer);
                List<string> workers = currentBase.removeWorkersForTransfer(eTransfer);
                List<string> pilots = currentBase.removePilotsForTransfer(eTransfer);
                destBase.addForTransfer(wTransfer);
                destBase.addSoldiersForTransfer(eTransfer);
                destBase.addScientistsForTransfer(eTransfer, scientists);
                destBase.addWorkersForTransfer(eTransfer, workers);
                destBase.addPilotsForTransfer(eTransfer, pilots);
                eTransfer = new EmployeeTransfer();
                wTransfer = new WeaponTransfer();
            }
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();

        GUILayout.Space(margin);
        GUILayout.EndVertical();
        GUILayout.Space(margin);
        GUILayout.EndHorizontal();
        GUILayout.EndArea ();
    }
Exemplo n.º 4
0
    void showTopMenu()
    {
        TextAnchor old = GUI.skin.box.alignment;
        GUI.skin.box.alignment = TextAnchor.MiddleCenter;
        // Top Menu:

        GUILayout.BeginArea(new Rect(0, 0, Screen.width, topMenuHeight));
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Prev", GUILayout.ExpandHeight(true), GUILayout.Width(topMenuHeight))) {
            currentBase = manager.previousBase();
            eTransfer = new EmployeeTransfer();
            wTransfer = new WeaponTransfer();
            soldierSelected = 0;
            pilotSelected = 0;
            facilitiesMessage = "";
            researchMessage = "";
            productionMessage = "";
            storeMessage = "";
            transferMessage = "";
            aircraftMessage = "";
        }
        GUILayout.Box("Base Name: " + currentBase.getName(), GUILayout.ExpandHeight(true), GUILayout.Width(Screen.width/2));
        if (GUILayout.Button("Next", GUILayout.ExpandHeight(true), GUILayout.Width(topMenuHeight))) {
            currentBase = manager.nextBase();
            eTransfer = new EmployeeTransfer();
            wTransfer = new WeaponTransfer();
            soldierSelected = 0;
            pilotSelected = 0;
            facilitiesMessage = "";
            researchMessage = "";
            productionMessage = "";
            storeMessage = "";
            transferMessage = "";
            aircraftMessage = "";
        }
        GUILayout.Box("Money: "+gameManager.Instance.getMoney(), GUILayout.ExpandHeight(true));
        if (GUILayout.Button("Back", GUILayout.Width(topMenuHeight), GUILayout.ExpandHeight (true))) {
            if (menuShown == BASE_MAIN) {
                GUI.skin.box.alignment = old;
                manager.setLevel("WorldMap");
            }
            else if (menuShown == EQUIP) {
                menuShown = AIRCRAFT;
            }
            else {
                menuShown = BASE_MAIN;
            }
        }
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
        GUI.skin.box.alignment = old;
    }
Exemplo n.º 5
0
    public void removeForTransfer(WeaponTransfer wt)
    {
        foreach (Weapon w in wt.getWeapons())
        {
            // Remove from manufactured items
            manufacturedItems[w] -= wt.getQuantity (w);
            if (manufacturedItems[w] == 0)
                manufacturedItems.Remove(w);

            // Remove from purchased items
            purchasedItems[w] -= wt.getQuantity(w);
            if (purchasedItems[w] == 0)
                purchasedItems.Remove(w);

            // Free storage space
            storageUsed -= w.getStorageSpace()*wt.getQuantity(w);
        }
    }
Exemplo n.º 6
0
    public void addForTransfer(WeaponTransfer wt)
    {
        foreach (Weapon w in wt.getWeapons())
        {
            // Add to manufactured items
            if (manufacturedItems.ContainsKey(w)) {
                manufacturedItems[w] += wt.getQuantity(w);
            }
            else {
                manufacturedItems.Add(w, wt.getQuantity(w));
            }

            // Add to purchased items
            if (purchasedItems.ContainsKey(w)) {
                purchasedItems[w] += wt.getQuantity(w);
            }
            else {
                purchasedItems.Add(w, wt.getQuantity(w));
            }

            // Occupy storage space
            storageUsed += w.getStorageSpace()*wt.getQuantity(w);
        }
    }