Beispiel #1
0
 public void ShowBuildingInfo(GameBuilding building)
 {
     gameObject.SetActive(true);
     transform.position  = building.gameObject.transform.position;
     transform.position += new Vector3(0, 5, 0);
     m_Text.text         = building.Description;
 }
Beispiel #2
0
 public void DestroyGhost(GameBuilding ghost)
 {
     if (ghost)
     {
         Destroy(ghost.gameObject);
     }
 }
Beispiel #3
0
 public SleepTask(GameObject bed) : base(Task.Action.Sleep)
 {
     this.mBed      = bed.GetComponent <Bed>();
     this.mBuilding = bed.GetComponent <GameBuilding>();
     this.target    = bed;
     this.position  = target.transform.position;
 }
Beispiel #4
0
    void Start()
    {
        ResourceGather resource = GetComponent <ResourceGather>();

        if (resource)
        {
            mTasks.Add(new ResourceGatherTask(gameObject));
        }

        GameItem item = GetComponent <GameItem>();

        if (item)
        {
            mTasks.Add(new PickUpItemTask(gameObject));
        }

        Bed bed = GetComponent <Bed>();

        if (bed)
        {
            mTasks.Add(new SleepTask(gameObject));
        }

        GameBuilding building = GetComponent <GameBuilding>();

        if (building)
        {
            mTasks.Add(new DeconstructTask(gameObject));
        }

        mGameArea = GetComponent <GameArea>();
        mTasks.Add(new MoveTask(transform.position));
        mMoveActionIndex = mTasks.Count - 1;
    }
Beispiel #5
0
    public GameBuilding CreateGameObject(Vector3 position, float rotation)
    {
        GameBuilding gBuilding = Instantiate(prefab, FixPosition(position), Quaternion.Euler(0f, 0f, rotation)).GetComponent <GameBuilding>();

        gBuilding.Configure(this);

        return(gBuilding);
    }
Beispiel #6
0
    public GameBuilding CreateGhost(Vector3 position, float rotation)
    {
        GameBuilding ghost = Instantiate(ghostPrefab, FixPosition(position), Quaternion.Euler(0f, 0f, rotation)).GetComponent <GameBuilding>();

        ghost.Configure(this);

        return(ghost);
    }
Beispiel #7
0
 private void OnGameBuildingCancelled()
 {
     if (instancedScene != null)
     {
         instancedScene.QueueFree();
         instancedScene = null;
     }
 }
 void EngageCells(GameBuilding building)
 {
     for (int i = 0; i <= (int)(building.Type); i++)
     {
         for (int j = 0; j <= (int)(building.Type); j++)
         {
             m_Cells[building.BaseCellX + i, building.BaseCellZ + j] = true;
         }
     }
 }
 void FreeCells(GameBuilding building)
 {
     for (int i = 0; i <= (int)(building.Type); i++)
     {
         for (int j = 0; j <= (int)(building.Type); j++)
         {
             m_Cells[building.BaseCellX + i, building.BaseCellZ + j] = false;
         }
     }
 }
    GameBuilding SpawnBuilding(int x, int z, BuildingType mode)
    {
        GameBuilding cube = Instantiate(m_BuildingPrefabs[(int)mode]) as GameBuilding;

        cube.transform.parent = this.gameObject.transform;
        cube.Place(x, z);
        GameController.Instance().ChangeGameMode(GameController.GameMode.egm_Observe);

        return(cube);
    }
    GameBuilding TryToBuild(int x, int z, BuildingType mode)
    {
        GameBuilding newBuilding = null;

        if (CellsCanBeEngaged(x, z, mode))
        {
            newBuilding = SpawnBuilding(x, z, mode);
            EngageCells(newBuilding);
        }

        return(newBuilding);
    }
Beispiel #12
0
    private void OnGameBuildingSelected(GameBuildingType type)
    {
        // hide the mouse because the building becomes our mouse
        Input.SetMouseMode(Input.MouseMode.Hidden);

        var scene = ResourceLoader.Load <PackedScene>(type.GetScenePath());

        instancedScene = (GameBuilding)scene.Instance();
        instancedScene.NewlySpawned = true;
        instancedScene.PlayerNum    = PlayersManager.Instance.Me.Num;
        instancedScene.Type         = type;
        AddChild(instancedScene);
    }
Beispiel #13
0
    private void OnGameBuildingPlaced(string buildingId, int playerNum, GameBuildingType type, Vector2 position)
    {
        var          scene    = ResourceLoader.Load <PackedScene>(type.GetScenePath());
        GameBuilding building = (GameBuilding)scene.Instance();

        building.PlayerNum  = playerNum;
        building.Position   = position;
        building.BuildingId = buildingId;
        building.Active     = true;
        AddChild(building);

        PlayersManager.Instance.GetPlayer(playerNum).AddScore(ScoreType.BuildingBuilt);
    }
Beispiel #14
0
        private void OnBuildingDestroyed(GameBuilding destroyedBuilding)
        {
            GameLogicMgr gameLogicMgr = GameLogicMgr.GetInstance();

            if (destroyedBuilding.GetTeam() != 0)
            {
                // Display you won message.
                gameLogicMgr.GameWon();
            }
            else
            {
                // Display the you lost message.
                gameLogicMgr.GameOver();
            }
        }
Beispiel #15
0
        public void InitInOrder()
        {
            foreach (var prePlayBuilding in PrePlayBuildings)
            {
                GameBuilding gameBuilding = prePlayBuilding.GetComponent <GameBuilding>();
                gameBuilding.ActorAttributes.Team = Team;
                gameBuilding.OnConstructionComplete();
            }

            foreach (var prePlayUnit in PrePlayUnits)
            {
                GameUnit gameUnit = prePlayUnit.GetComponent <GameUnit>();
                gameUnit.ActorAttributes.Team = Team;
            }
        }
    void InitialSpawn()
    {
        int cellsNumberToSpawn = (int)(FIELD_SIZE * FIELD_SIZE * DEVELOPMENT_COEFF);
        int overallSquare      = 0;
        int steps = 0;

        while (overallSquare < cellsNumberToSpawn)
        {
            steps++;
            GameBuilding randomBuilding = SpawnRandom(cellsNumberToSpawn - overallSquare, steps);

            if (randomBuilding != null)
            {
                overallSquare += GameBuilding.Square((int)(randomBuilding.Type));
            }
        }
    }
    int GetRandomType(int cellsLeftToSpawn, int steps)
    {
        int randomType = 0;
        int maxType    = (int)(BuildingType.ebm_max);

        Random.seed = (int)(Time.time) + steps + 2;

        if (cellsLeftToSpawn > GameBuilding.Square(maxType))
        {
            randomType = Random.Range(0, maxType);
        }
        else if (cellsLeftToSpawn > GameBuilding.Square(--maxType))
        {
            randomType = Random.Range(0, maxType);
        }

        return(randomType);
    }
Beispiel #18
0
    private void CmdSpawnBuilding(Vector3 position, Team team)
    {
        var newFactory = Instantiate(BuildingToBuild);

        PlayersManager.GetInstance().Get(team).Gold -=
            BuildingToBuild.GetComponent <GameBuilding>().BuildingAttributes.BuildCost;

        newFactory.transform.position = position;

        GameBuilding gameBuilding = newFactory.GetComponent <GameBuilding>();

        gameBuilding.ActorAttributes.Team = team;
        gameBuilding.UniqeNetworkId       = gameBuilding.GetHashCode().ToString();

        NetworkServer.SpawnWithClientAuthority(
            newFactory,
            PlayersManager.GetInstance().Get(team).connectionToClient
            );
    }
Beispiel #19
0
        public void Init(int difficulty, Vector3[] defenderLocations, AddObject spawner)
        {
            // The player base is the first base.
            _enemyBase         = spawner.SpawnBases[0].GetComponent <GameBuilding>();
            _defenderLocations = defenderLocations;
            _spawner           = spawner;
            switch (difficulty)
            {
            case 0:
                _coinAc = new CoinAccumulator(10);
                break;

            case 1:
                _coinAc = new CoinAccumulator(15);
                break;

            default:
                _coinAc = new CoinAccumulator(20);
                break;
            }
        }
    public static BuildingScript ReplaceBuilding(BuildingScript toReplace, Building newBuilding)
    {
        // Copy all infos from toReplace to new Building
        GameBuilding toSpawn = new GameBuilding(newBuilding, toReplace.GridX, toReplace.GridY, toReplace.Orientation);

        toSpawn.noTaskCurrent     = toReplace.NoTaskCurrent;
        toSpawn.populationCurrent = toReplace.PopulationCurrent;
        toSpawn.resourceCurrent   = toReplace.StorageCurrent;
        toSpawn.nr    = toReplace.Nr;
        toSpawn.stage = toReplace.Stage;
        toSpawn.childBuildingStorage = toReplace.ChildBuildingStorage;
        toSpawn.childBuildingField   = toReplace.ChildBuildingField;
        toSpawn.SetTransform(toReplace.transform);

        // destroy old building and spawn new building
        //Destroy(toReplace.gameObject);
        BuildingScript newBs = SpawnBuilding(toSpawn);

        newBs.replacing = toReplace;
        return(newBs);
    }
Beispiel #21
0
        public void Init(int difficulty, Vector3[] defenderLocations, AddObject spawner)
        {
            // The player base is the first base.
            _enemyBase = spawner.SpawnBases[0].GetComponent<GameBuilding>();
            _defenderLocations = defenderLocations;
            _spawner = spawner;
            switch (difficulty)
            {
                case 0:
                    _coinAc = new CoinAccumulator(10);
                    break;
                case 1:
                    _coinAc = new CoinAccumulator(15);
                    break;
                default:
                    _coinAc = new CoinAccumulator(20);
                    break;
            }


        }
Beispiel #22
0
    public void ActivateMenuInMode(GameController.GameMode gameMode, GameBuilding building)
    {
        CloseAllMenus();

        switch (gameMode)
        {
        case GameController.GameMode.egm_Observe:
            m_BuildMenu.gameObject.SetActive(true);
            break;

        case GameController.GameMode.egm_Build:

            break;

        case GameController.GameMode.egm_Info:
            if (building != null)
            {
                OnBuildingClickHandler(building);
            }
            break;
        }
    }
Beispiel #23
0
 public void SetBuilding(GameBuilding building)
 {
     m_Building = building;
 }
 void DemolishBuilding(GameBuilding building)
 {
     FreeCells(building);
     Destroy(building.gameObject);
     GameController.Instance().ChangeGameMode(GameController.GameMode.egm_Observe);
 }
Beispiel #25
0
 void OnDemolishClickHandler(GameBuilding building)
 {
     OnDemolishClick(building);
 }
    public static BuildingScript SpawnBuilding(GameBuilding gameBuilding)
    {
        // Spawn prefab
        GameObject newBuilding = Instantiate(gameBuilding.building.models,
                                             gameBuilding.GetPosition(), gameBuilding.GetRotation(), Instance.buildingParentTransform);

        // Add BuildingScript
        BuildingScript bs = newBuilding.AddComponent <BuildingScript>();

        bs.SetBuilding(gameBuilding);

        // Add fog of war influencer if building is starter building
        if (bs.Name == "Höhle")
        {
            SimpleFogOfWar.FogOfWarInfluence fowi = newBuilding.AddComponent <SimpleFogOfWar.FogOfWarInfluence>();
            fowi.ViewDistance = bs.ViewRange;
        }

        Instantiate(Instance.placeParticles, bs.transform);

        // Blueprint UI
        GameObject canvRange = Instantiate(Instance.rangeCanvas);

        canvRange.transform.SetParent(newBuilding.transform, false);
        canvRange.name = "CanvasRange";
        canvRange.SetActive(false);
        GameObject canvBlueprint = Instantiate(Instance.blueprintCanvas);

        canvBlueprint.transform.SetParent(newBuilding.transform, false);
        canvBlueprint.name = "CanvasBlueprint";
        if (bs.Blueprint)
        {
            foreach (GameResources res in bs.CostResource)
            {
                if (res.Amount == 0)
                {
                    continue;
                }
                GameObject materialPanel = (GameObject)Instantiate(Instance.blueprintMaterialPanel, canvBlueprint.transform.Find("Cost"));
                materialPanel.transform.Find("TextMat").GetComponent <Text>().text     = "0/" + res.Amount;
                materialPanel.transform.Find("ImageMat").GetComponent <Image>().sprite = res.Icon;
            }
        }
        canvBlueprint.transform.Find("ButtonCancel").GetComponent <Button>().onClick.AddListener(() => bs.DestroyBuilding());

        // Set Grid
        int gx = gameBuilding.orientation % 2 == 0 ? bs.GridWidth : bs.GridHeight;
        int gy = gameBuilding.orientation % 2 == 1 ? bs.GridWidth : bs.GridHeight;

        for (int dx = 0; dx < gx; dx++)
        {
            for (int dy = 0; dy < gy; dy++)
            {
                if (!Grid.ValidNode(gameBuilding.gridX + dx, gameBuilding.gridY + dy))
                {
                    continue;
                }

                Node n = Grid.GetNode(gameBuilding.gridX + dx, gameBuilding.gridY + dy);
                n.SetNodeObject(newBuilding.transform);
                if (!bs.Walkable)
                {
                    n.objectWalkable = false;
                }
            }
        }

        if (bs.Name == "Höhle")
        {
            Instance.cave = bs;
        }

        return(bs);
    }
Beispiel #27
0
 void OnInfoClickHandler(GameBuilding building)
 {
     CloseAllMenus();
     m_InfoWindow.gameObject.SetActive(true);
     m_InfoWindow.SetInfo(building);
 }
Beispiel #28
0
 /*public void SetFamilyJob(Job job)
  * {
  *  gameBuilding.familyJobId = job.id;
  * }*/
 public void SetBuilding(GameBuilding gameBuilding)
 {
     this.gameBuilding = gameBuilding;
 }
Beispiel #29
0
 public void SetInfo(GameBuilding building)
 {
     m_Text.text = building.Description;
 }
    // Instantiate a new building at the same place as the hover building and disable it
    public static void PlaceBuilding()
    {
        // Check if we have enough coins
        //if (myVillage.GetCoins() < placingBuilding.GetCost()) canBuild = false;

        int gx = Instance.rotation % 2 == 0 ? placingBuilding.gridWidth : placingBuilding.gridHeight;
        int gy = Instance.rotation % 2 == 1 ? placingBuilding.gridWidth : placingBuilding.gridHeight;

        if (CanBuild())
        {
            // Disable old occupation temporary
            for (int dx = 0; dx < gx; dx++)
            {
                for (int dy = 0; dy < gy; dy++)
                {
                    if (!Grid.ValidNode(Instance.hoverGridX + dx, Instance.hoverGridY + dy))
                    {
                        continue;
                    }
                    Node checkNode = Grid.GetNode(Instance.hoverGridX + dx, Instance.hoverGridY + dy);
                    checkNode.SetTempOccupied(false, false);
                }
            }

            BuildingScript mb = Instance.movingBuilding;
            if (mb) // moving an existing building
            {
                int oldGx = mb.RotWidth();
                int oldGy = mb.RotHeight();
                for (int dx = 0; dx < oldGx; dx++)
                {
                    for (int dy = 0; dy < oldGy; dy++)
                    {
                        if (!Grid.ValidNode(mb.GridX + dx, mb.GridY + dy))
                        {
                            continue;
                        }
                        Node n = Grid.GetNode(mb.GridX + dx, mb.GridY + dy);
                        n.SetNodeObject(null);
                        if (!mb.Walkable)
                        {
                            n.objectWalkable = true;
                        }
                    }
                }

                mb.RemoveTerrainGround();

                mb.transform.position = Instance.hoverBuilding.position;
                mb.transform.rotation = Instance.hoverBuilding.rotation;
                mb.SetPosRot(Instance.hoverGridX, Instance.hoverGridY, Instance.rotation);

                mb.MoveBuilding();

                for (int dx = 0; dx < gx; dx++)
                {
                    for (int dy = 0; dy < gy; dy++)
                    {
                        if (!Grid.ValidNode(Instance.hoverGridX + dx, Instance.hoverGridY + dy))
                        {
                            continue;
                        }
                        Node n = Grid.GetNode(Instance.hoverGridX + dx, Instance.hoverGridY + dy);
                        n.SetNodeObject(mb.transform);
                        if (!mb.Walkable)
                        {
                            n.objectWalkable = false;
                        }
                    }
                }
            }
            else
            {
                GameBuilding toSpawn = new GameBuilding(placingBuilding, Instance.hoverGridX, Instance.hoverGridY, Instance.rotation);
                if (toSpawn.building.stayInRangeOfParent)
                {
                    toSpawn.parentBuildingNr = UIManager.Instance.GetSelectedBuilding().Nr;
                }
                toSpawn.SetPosition(Instance.hoverBuilding.position);
                toSpawn.SetRotation(Instance.hoverBuilding.rotation);
                toSpawn.blueprint = true;
                /*BuildingScript bs = */ SpawnBuilding(toSpawn);
            }

            // Take cost for coins
            //myVillage.Purchase(b);

            // If shift is pressed, don't exit the placing mode
            if (mb || !Input.GetKey(KeyCode.LeftShift) || !placingBuilding.multipleBuildings)
            {
                EndPlacing();
            }

            InputManager.LeftClickHandled = true;
        }
    }
Beispiel #31
0
 public void ShowBuildingInfo(GameBuilding building)
 {
     m_WorldText.ShowBuildingInfo(building);
 }