コード例 #1
0
ファイル: Terrain2D.cs プロジェクト: sodomon2/dwarfcorp
        public void RenderTile(TerrainElement element, SpriteBatch sprites, int ix, int iy, float x, float originX, Color tint)
        {
            float tileX = ix * TileSize - ((x) * TileSize) % TileSize;
            float tileY = iy * TileSize;

            sprites.Draw(element.Image.SafeGetImage(), new Rectangle((int)tileX, (int)tileY, TileSize, TileSize), element.Image.SourceRect, tint);
        }
コード例 #2
0
    // Use this for initialization
    void Start()
    {
        ManagerGame = Manager.GetComponent("GameManager") as GameManager;
        yandere     = gameObject.GetComponent("MeshRenderer") as MeshRenderer;
        if (editorMode == false)
        {
            blocks = new byte[SizeX, SizeY];
            mesh   = GetComponent <MeshFilter> ().mesh;
            col    = GetComponent <MeshCollider> ();

            Minerals.Add(TerrainElement.CreateInstance(3, "gold", 0.65f, 400, 70));
            Minerals.Add(TerrainElement.CreateInstance(4, "silver", 0.55f, 250, 70));
            Minerals.Add(TerrainElement.CreateInstance(5, "bronze", 0.0f, 150, 200));
            Minerals.Add(TerrainElement.CreateInstance(6, "diamond", 0.80f, 200, 70));
            Minerals.Add(TerrainElement.CreateInstance(7, "iron", 0.25f, 600, 200));



            //StartCoroutine(initialize());
            GenTerrain(blocks, SizeX, SizeY);
            BuildMesh();
            UpdateMesh();
            //StartCoroutine(FadeMaterial());
        }
        else
        {
            blocks = new byte[EditorSizeX, EditorSizeY];
            mesh   = GetComponent <MeshFilter> ().mesh;
            col    = GetComponent <MeshCollider> ();
            GenEditorTerrain(blocks, EditorSizeX, EditorSizeY);
            BuildMesh();
            UpdateMesh();
        }
    }
コード例 #3
0
 public static bool IsVisibleTerrainElement(TerrainElement element)
 {
     if (IsVisibleAABB(element))
     {
         /*if (!instance.cullTerrainElements)
          * {
          *  return true;
          * }
          * if (element.colliders != null && element.colliders.Count > 0)
          * {
          *  foreach (Collider collider in element.colliders)
          *  {
          *      bool result = IsVisibleCollider(collider);
          *      if(result)
          *      {
          *          return true;
          *      }
          *  }
          *  return false;
          * }
          * else*/
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #4
0
ファイル: Terrain2D.cs プロジェクト: sodomon2/dwarfcorp
        public void CreateAssets()
        {
            Tiles = AssetManager.GetContentTexture(ContentPaths.Terrain.terrain_tiles);

            Substrate = new TerrainElement
            {
                Image = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 3, 1),
                Name  = "Rock"
            };

            Soil = new TerrainElement
            {
                Image = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 2, 0),
                Name  = "Dirt"
            };


            Grass = new TerrainElement
            {
                Image = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 3, 0),
                Name  = "Grass"
            };


            Lava = new TerrainElement
            {
                Image = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 0, 7),
                Name  = "Lava"
            };

            Cave = new TerrainElement
            {
                Image = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 1, 0),
                Name  = "Rock2"
            };



            Ores = new List <TerrainElement>
            {
                new TerrainElement
                {
                    Image          = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 2, 11),
                    Name           = "Gold",
                    SpawnScale     = 0.05f,
                    SpawnThreshold = 0.9f
                },
                new TerrainElement
                {
                    Image          = new NamedImageFrame(ContentPaths.Terrain.terrain_tiles, 32, 3, 11),
                    Name           = "Mana",
                    SpawnScale     = 0.04f,
                    SpawnThreshold = 0.9f
                }
            };
        }
コード例 #5
0
    public void UpdateParameters(float dt)
    {
        //The positions of the player and monster turned to shorthand notation
        Vector2 pPos, mPos;

        pPos = PlayerManager.Instance.player.transform.position;
        mPos = monster.transform.position;

        //Update time in the current state
        timeInCurrentState += dt;
        int _currentState = anim.GetCurrentAnimatorStateInfo(0).shortNameHash;

        if (_currentState != currentStateNameHash) //We entered a new state, reset the time in state
        {
            timeInCurrentState   = 0;
            currentStateNameHash = _currentState;
        }
        bool seePlayer = false;

        //Determine if we can see the player
        float distance = Vector2.Distance(pPos, mPos);

        if (distance < aiInfo.aggroRange)
        {
            seePlayer = true;                                                                                                         //We see the player, but is there any obstacles between the two whose height is greater than 0?
            RaycastHit2D[] rayHits = Physics2D.RaycastAll(mPos, pPos - mPos, distance, 1 << LayerMask.NameToLayer("TerrainElement")); // Testing if we hit any terrain elements
            foreach (RaycastHit2D rh in rayHits)
            {
                TerrainElement te = rh.transform.GetComponent <TerrainElement>();
                //if (te.height > 0)
                seePlayer = false;
            }
        }
        anim.SetBool("SeePlayer", seePlayer);

        //Attacks will be done in future, for now monster just rams into you
        //bool inAttackRange = distance < monsterAttachRange;

        //If in idle or wander state too long, it becomes bored and stops chasing
        if ((anim.GetCurrentAnimatorStateInfo(0).IsName("Idle") || anim.GetCurrentAnimatorStateInfo(0).IsName("Wander")) && timeInCurrentState > aiInfo.attentionSpan)
        {
            anim.SetTrigger("BoredOfState");
            timeInCurrentState = 0;
        }

        //Check if dead
        if (monster.bodyInfo.hp <= 0)
        {
            anim.SetTrigger("HasDied");
        }
    }
コード例 #6
0
    // Use this for initialization
    void Start()
    {
        blocks = new byte[SizeX, SizeY];
        mesh   = GetComponent <MeshFilter> ().mesh;
        col    = GetComponent <MeshCollider> ();

        Minerals.Add(TerrainElement.CreateInstance(3, "gold", 0.65f, 400, 70));
        Minerals.Add(TerrainElement.CreateInstance(4, "silver", 0.55f, 250, 70));
        Minerals.Add(TerrainElement.CreateInstance(5, "bronze", 0.0f, 150, 200));
        Minerals.Add(TerrainElement.CreateInstance(6, "diamond", 0.80f, 200, 70));
        Minerals.Add(TerrainElement.CreateInstance(7, "iron", 0.25f, 600, 200));
        GenTerrain(blocks, SizeX, SizeY);
        BuildMesh();
        UpdateMesh();
    }
コード例 #7
0
    private void Awake()
    {
        elementNames = new List <string>();
        elementNames.Add("empty");
        terrainElements = new Dictionary <string, TerrainElement>();
        TerrainElement tree  = new TerrainElement(Resources.Load <GameObject>("Prefabs/Tree"), 3, 3, 0); //width, height, layer
        TerrainElement bush  = new TerrainElement(Resources.Load <GameObject>("Prefabs/Bush"), 1, 1, 0);
        TerrainElement grass = new TerrainElement(Resources.Load <GameObject>("Prefabs/Grass"), 1, 1, 0);

        elementNames.Add("tree");
        terrainElements.Add("tree", tree);   // seed[3]
        elementNames.Add("bush");
        terrainElements.Add("bush", bush);   // seed[2]
        elementNames.Add("grass");
        terrainElements.Add("grass", grass); //seed[1]
    }
コード例 #8
0
    public static bool IsVisibleAABB(TerrainElement element)
    {
        Bounds bounds = element.Bounds;

        bool visible = IsVisibleAABB(bounds);

        /* if (visible)
         * {
         *   RaycastHit hitInfo;
         *   bool hit = Physics.Raycast(new Ray(camera.transform.position, bounds.center - camera.transform.position), out hitInfo, 1000);
         *   if (hit)
         *   {
         *       visible = hitInfo.collider.transform.parent.gameObject == group.b;
         *   }
         * }*/
        return(visible);
    }
コード例 #9
0
        public void FromMapInternal(Map gameMap)
        {
            if (renderer != null)
            {
                renderer.Dispose();
            }
            renderer = new ColoursRendererVbo();
            int width  = (int)gameMap.Width;
            int length = (int)gameMap.Length;

            SetMapSizes(width, length);

            for (int y = 0; y < length; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    TerrainElement tile    = gameMap[x, y];
                    Tile           mapTile = new Tile(x, y, tile.Elevation, tile.TerrainId);
                    this[x, y] = mapTile;
                }
            }
        }
コード例 #10
0
        public Terrain2D(DwarfGame game)
        {
            Bloom = new BloomComponent(game)
            {
                Settings = BloomSettings.PresetSettings[0]
            };
            CaveScale     = 0.08f;
            HeightScale   = 0.01f;
            CaveThreshold = 0.5f;
            LavaHeight    = 0.6f;
            TileSize      = 64;
            Noise         = new Perlin(1928);
            Texture2D tiles = TextureManager.GetTexture(ContentPaths.Terrain.terrain_tiles);

            Substrate = new TerrainElement
            {
                Image = new ImageFrame(tiles, 32, 4, 2),
                Name  = "Rock"
            };

            Soil = new TerrainElement
            {
                Image = new ImageFrame(tiles, 32, 2, 0),
                Name  = "Dirt"
            };


            Grass = new TerrainElement
            {
                Image = new ImageFrame(tiles, 32, 3, 0),
                Name  = "Grass"
            };


            Lava = new TerrainElement
            {
                Image = new ImageFrame(tiles, 32, 0, 7),
                Name  = "Lava"
            };

            Cave = new TerrainElement
            {
                Image = new ImageFrame(tiles, 32, 1, 0),
                Name  = "Rock2"
            };



            Ores = new List <TerrainElement>
            {
                new TerrainElement
                {
                    Image          = new ImageFrame(tiles, 32, 3, 1),
                    Name           = "Gold",
                    SpawnScale     = 0.05f,
                    SpawnThreshold = 0.9f
                },
                new TerrainElement
                {
                    Image          = new ImageFrame(tiles, 32, 7, 1),
                    Name           = "Mana",
                    SpawnScale     = 0.04f,
                    SpawnThreshold = 0.9f
                }
            };

            Bloom.Initialize();
        }