Пример #1
0
    public void AddRocks(ref WorldData worldData, int seed)
    {
        List <RockData> rockData = new List <RockData>();

        System.Random rng  = new System.Random(seed);
        int           size = TerrainGenerator.size;

        float[,] noiseMap = Procedural.NoiseMap(seed + 2, size, rockNoiseScale, AnimationCurve.Linear(0f, 0f, 1f, 1f));

        for (int y = 0; y < size; y++)
        {
            for (int x = 0; x < size; x++)
            {
                Coords coords        = new Coords(x, y);
                bool   adjacentOcean = Util.AdjacentProperty(Util.CoordsToVoxels(worldData.voxelData, Util.GetAdjacent(coords, true)), "isOcean");
                if (worldData.voxelData[x, y].isLand && !adjacentOcean && !worldData.voxelData[x, y].occupied && noiseMap[x, y] < rockThreshold)
                {
                    RockData rock = new RockData(coords, rng.Next(0, rockObjects.Length), rng.Next(0, 360));
                    rockData.Add(rock);
                    worldData.voxelData[coords.x, coords.y].occupied  = true;
                    worldData.voxelData[coords.x, coords.y].navigable = false;
                }
            }
        }

        worldData.rockData = rockData;
    }
Пример #2
0
    public void Init(RockData aRockData, bool ignoreNewlySeen)
    {
        rockData         = aRockData;
        mIgnoreNewlySeen = ignoreNewlySeen;

        if (!mRockShape)
        {
            if (mRockShapes == null)
            {
                mRockShapes = rockShapesRoot.GetComponentsInChildren <Shapes2D.Shape>();
            }

            if (mRockShapes.Length > 0)
            {
                int rockShapeInd = Random.Range(0, mRockShapes.Length);

                for (int i = 0; i < mRockShapes.Length; i++)
                {
                    mRockShapes[i].gameObject.SetActive(rockShapeInd == i);
                }

                mRockShape      = mRockShapes[rockShapeInd];
                mRockShapeImage = mRockShape.GetComponent <Image>();
            }
        }
    }
 void Start()
 {
     for (int i = 0; i < Rocks.Length; i++)
     {
         RockData currentRock = Rocks[i];
         if (RandomSeed)
         {
             currentRock = Instantiate(Rocks[i]);
             currentRock.RandomiseSeed();
         }
         RockGeneratorManager.instance.RequestRock(currentRock, new Vector3(i * 60, 0, 0), callback);
     }
 }
Пример #4
0
        public static WorldObjectData GetData(string name)
        {
            WorldObjectData data = null;

            switch (name)
            {
            case "Person":
                data = new PersonData();
                break;

            case "Castle":
                data = new CastleData();
                break;

            case "Tree":
                data = new TreeData();
                break;

            case "Rock":
                data = new RockData();
                break;

            case "Trap":
                data = new TrapData();
                break;

            case "FakeTree":
                data = new FakeTreeData();
                break;

            case "Cottage":
                data = new CottageData();
                break;

            case "Candle":
                data = new CandleData();
                break;

            case "Water":
                data = new WaterData();
                break;

            case "Bridge":
                data = new BridgeData();
                break;

            default:
                break;
            }
            return(data);
        }
    void Start()
    {
        rocks = new List <GameObject> ();

        for (int i = 0; i < Mathf.RoundToInt(NumberOfRocks / 2); i++)
        {
            for (int y = 0; y < Mathf.RoundToInt(NumberOfRocks / 2); y++)
            {
                RockData newdata = ScriptableObject.CreateInstance <RockData>();
                newdata.RandomiseParameters();
                RockGeneratorManager.instance.RequestRock(newdata, new Vector3(i * 10, 0, y * 10), callback);
            }
        }
    }
Пример #6
0
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        rockDataRef      = animator.gameObject.GetComponent <RockData>();
        ProjectilePrefab = rockDataRef.projectilePrefab;
        projectiles      = new List <GameObject>();
        //Vector3 curPos = new Vector3(0,baseProjectileDistance);
        Vector3 addition;
        float   x;
        float   angle;

        //opp/hyp = invSin, hyp = baseProjectileDistance, therefore opp = hyp * invSin
        for (int i = 0; i < numProjectiles; i++)
        {
            //thanks, https://answers.unity.com/questions/1068513/place-8-objects-around-a-target-gameobject.html
            angle    = i * Mathf.PI * 2f / numProjectiles;
            addition = new Vector3(Mathf.Cos(angle) * baseProjectileDistance, Mathf.Sin(angle) * baseProjectileDistance);

            projectiles.Add(Instantiate(ProjectilePrefab, animator.gameObject.transform.position + addition, Quaternion.identity));
        }
        smallestAngle = 2f * Mathf.PI / numProjectiles;
        rockDataRef.call_arc(projectiles, smallestAngle, baseProjectileDistance, animator);
    }
Пример #7
0
 private void Awake()
 {
     rigidBody   = GetComponent <Rigidbody>();
     ownCollider = GetComponent <Collider>();
     data        = (RockData)WeaponData;
 }
Пример #8
0
 void OnRockSelect(InfoData dat)
 {
     mRockSelect = (RockData)dat;
 }
Пример #9
0
    IEnumerator DoRockSelect()
    {
        var rockCount = inventory.rocksCount;

        if (rockCount > 0)
        {
            rockSelect.Refresh(true, null);

            yield return(rockSelectSequence.Enter());

            rockSelect.Select();

            mRockSelect = null;
            while (!mRockSelect)
            {
                yield return(null);
            }

            yield return(rockSelectSequence.Exit());

            //fail-safe if no metaOutput
            if (!mRockSelect.metaOutput)
            {
                Debug.LogWarning("Rock does not have a meta output: " + mRockSelect.name);
                StartCoroutine(DoRockSelect());
                yield break;
            }

            //generate rock
            if (mRockSelect.count > 0)
            {
                if (!GlobalSettings.isUnlimitedResource)
                {
                    mRockSelect.count--;
                }
                criteria.InvokeUpdate(mRockSelect);
            }

            if (GlobalSettings.isUnlimitedResource)
            {
                mRockSelect.metaOutput.count = GlobalSettings.unlimitedResourceRock;
            }
            else
            {
                mRockSelect.metaOutput.count++;
            }

            mRockResultList.Clear();
            mRockResultList.Add(mRockSelect.metaOutput);
            //

            //animation

            //rock enter
            rockSpriteShape.spriteShape = mRockSelect.spriteShape;

            rockAnimator.gameObject.SetActive(true);

            yield return(rockAnimator.PlayWait(rockTakeEnter));

            //meta morph enter
            metaMorphAnimator.gameObject.SetActive(true);

            yield return(metaMorphAnimator.PlayWait(metaMorphTakeEnter));

            //rock result play
            M8.SoundPlaylist.instance.Play(soundMorph, false);

            rockResultSpriteShape.spriteShape = mRockSelect.metaOutput.spriteShape;

            rockResultAnimator.gameObject.SetActive(true);

            yield return(rockResultAnimator.PlayWait(rockResultTakeEnter));

            //

            rockAnimator.gameObject.SetActive(false);

            //meta morph leave
            yield return(metaMorphAnimator.PlayWait(metaMorphTakeExit));

            metaMorphAnimator.gameObject.SetActive(false);

            criteria.InvokeUpdate(mRockSelect.metaOutput);

            StartCoroutine(DoRockResult());
        }
        else
        {
            //notify that rocks are needed.
            if (noRocksGO)
            {
                noRocksGO.SetActive(true);
            }

            //exitButton.Select();
        }
    }
Пример #10
0
 public void Initialize(RockData rockData)
 {
     this.data = rockData;
     UpdateDict();
 }