示例#1
0
 /// <summary>
 /// Removes an <see cref="influence"/> from the fog calculations
 /// </summary>
 public static void UnregisterInfluence(FogOfWarInfluence influence)
 {
     if (influence == null)
     {
         throw new ArgumentNullException("influence");
     }
     influences.Remove(influence);
 }
示例#2
0
 /// <summary>
 /// Registers an <see cref="influence"/> to be able to contribute to the fog calculations
 /// </summary>
 public static void RegisterInfluence(FogOfWarInfluence influence)
 {
     if (influence == null)
     {
         throw new ArgumentNullException("influence");
     }
     if (!influences.Contains(influence))
     {
         influences.Add(influence);
     }
 }
示例#3
0
    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);
    }