Example #1
0
    public void DestroyTurret()
    {
        Destroy(turretGo);
        isUpgraded = false;
        turretGo   = null;
        turretData = null;
        Vector3 pos = transform.position;

        pos.x += 8;
        GameObject effect = (GameObject)GameObject.Instantiate(BuildEffect, pos, Quaternion.identity);

        Destroy(effect, 1.5f);
    }
    // Build turret
    public void BuildTurret(TurretData turretData)
    {
        // let the current cube hold the turret data to facilitate the upgrade on the turret on the cube
        this.turretData = turretData;
        // Each build turret resets the upgrade logo
        isUpgraded = false;
        // instantiate the turret
        turretGo = GameObject.Instantiate(turretData.turretPrefab, transform.position, Quaternion.identity);
        // Construction of turret dust effects
        GameObject effect = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);

        Destroy(effect, 1.5f);
    }
Example #3
0
    internal void BuildTurret(TurretData turretData)
    {
        this.turretData = turretData;
        isUpgraded      = false;
        turretGo        = GameObject.Instantiate(turretData.turretPrefab,
                                                 transform.position,
                                                 Quaternion.identity);
        var effect = GameObject.Instantiate(buildefffect,
                                            transform.position,
                                            Quaternion.identity);

        Destroy(effect, 1f);
    }
Example #4
0
        private void SpawnTurret(TurretAsset asset, Vector2Int coordinate, Node selectedNode)
        {
            TurretView view = Object.Instantiate(asset.ViewPrefab);
            TurretData data = new TurretData(asset, selectedNode);

            data.AttachView(view);
            Game.Player.TurretSpawned(data);
            if (!m_Grid.TryOccupyNode(coordinate, true))
            {
                Debug.Log("Something has gone wrong");
            }
            m_Grid.UpdatePathFinding();
        }
Example #5
0
        private void TrySpawnTurret(TurretAsset asset, Node node)
        {
            bool wasOccupied = Game.Player.Grid.TryOccupyNode(node);

            if (wasOccupied)
            {
                m_Market.BuyTurret(asset);
                TurretView view = Object.Instantiate(asset.ViewPrefab);
                TurretData data = new TurretData(asset, node);
                data.AttachView(view);
                Game.Player.TurretSpawned(data);
            }
        }
Example #6
0
    // 构建炮塔
    public void BuildTurret(TurretData turretData)
    {
        // 让当前cube持有炮塔的数据,方便对cube上的炮塔升级
        this.turretData = turretData;
        // 每次构建炮塔都重置升级标识
        isUpgraded = false;
        // 实例化炮塔
        turretGo = GameObject.Instantiate(turretData.turretPrefab, transform.position, Quaternion.identity);
        // 构建炮塔的尘土特效
        GameObject effect = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);

        Destroy(effect, 1.5f);
    }
    private void Update()
    {
        if (!selectLaserTurret && !selectMissileTurret && !selectStandardTurret)
        {
            selectedTurretData = null;
        }

        if (Input.GetMouseButtonDown(0))
        {
            if (!EventSystem.current.IsPointerOverGameObject())
            {
                //点击左键  并且没有点击UI
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                bool       isCollider = Physics.Raycast(ray, out hit, 1000, LayerMask.GetMask("MapCube"));
                if (isCollider)
                {
                    MapCube mapCube = hit.collider.GetComponent <MapCube>();
                    if (mapCube.turretGo == null)
                    {
                        if (selectedTurretData != null && money < selectedTurretData.cost)
                        {
                            moneyAnimator.SetTrigger("Flicker");
                        }

                        //可以创建炮台
                        if (selectedTurretData != null && money >= selectedTurretData.cost)
                        {
                            StartCoroutine("HideUpgradeUI");
                            ChangeMoney(-selectedTurretData.cost);
                            mapCube.BuildTurret(selectedTurretData);
                            //selectedTurretData = null;
                        }
                    }
                    else
                    {
                        //升级炮台
                        if (mapCube == selectedMapCube && upgradeCanvas.activeInHierarchy)
                        {
                            StartCoroutine("HideUpgradeUI");
                        }
                        else
                        {
                            ShowUpgradeUI(mapCube.transform.position, mapCube.isUpgraded);
                        }
                        selectedMapCube = mapCube;
                    }
                }
            }
        }
    }
Example #8
0
    //建造炮塔
    public void BuildTurret(TurretData data)
    {
        isLevelTop  = false;
        this.turret = GameObject.Instantiate(data.initialTurret,
                                             new Vector3(transform.position.x, transform.position.y + data.initialTurret.transform.position.y, transform.position.z),
                                             Quaternion.identity);
        this.turretData = data;

        GameObject effect = GameObject.Instantiate(builtEffect,
                                                   new Vector3(transform.position.x, transform.position.y + data.initialTurret.transform.position.y, transform.position.z),
                                                   Quaternion.identity);

        Destroy(effect, 1);
    }
Example #9
0
        private void SpawnTurret(TurretAsset asset, Node node)
        {
            TurretView view = Object.Instantiate(asset.ViewPrefab);
            TurretData data = new TurretData(asset, node);

            data.AttachView(view);

            if (m_Grid.ChangeNodeOccupationStatus(node, true))
            {
                m_Grid.UpdatePathfinding();
            }

            Game.Player.TurretSpawned(data);
        }
Example #10
0
    public void AddTurret(int turretCode, int quantity)
    {
        TurretData data = turretData[turretCode];

        wood   -= data.wood * quantity;
        stone  -= data.stone * quantity;
        energy -= data.energy * quantity;

        woodText.text  = "x " + wood.ToString();
        stoneText.text = "x " + stone.ToString();

        print("Adding Turret");

        turrets += quantity;
    }
Example #11
0
        public static void UpdateTurret(TurretData p_data, float p_xValue)
        {
            if (_instance == null)
            {
                return;
            }

            var transform1 = _instance.transform;
            var position   = transform1.position;

            position.x          = p_xValue;
            transform1.position = position;
            _instance.UpdateTurretInfo(p_data);
            _instance.gameObject.SetActive(true);
        }
Example #12
0
 public void BuildTurret(TurretData turretData)
 {
     if (turretData != null)
     {
         this.turretData = turretData;
         isUpgraded      = false;
         turrentGo       = GameObject.Instantiate(turretData.turretPrefab, transform.position, Quaternion.identity);
         GameObject effect = GameObject.Instantiate(buildeffect, transform.position, Quaternion.identity);
         Destroy(effect, 1.4f);
     }
     else
     {
         Debug.Log("no selected turret");
     }
 }
Example #13
0
    private void Start()
    {
        if (!pricePanel)
        {
            return;
        }

        pricePanel.SetActive(false);
        turret = Science.GetTurretById(turretId);
        if (turret == null)
        {
            return;
        }
        priceText.text = turret.price.ToString();
    }
Example #14
0
    public UtilityAIBehaviour Launch(Turret lazer)
    {
        TurretController ltr = new TurretController(lazer);

        this.AddController(ltr);

        this.AddStartListener("Aim", ltr.OnStartAimAt);
        this.AddEndListener("Aim", ltr.OnEndAimAt);

        if (this.turretData == null)
        {
            this.turretData = lazer.turretData;
        }

        return(this);
    }
    private void AddTurret(TurretData data)
    {
        int nextLocation = 0;

        for (int i = 1; i < locationCounts.Length - 1; i++)
        {
            if (locationCounts[i] < locationCounts[nextLocation])
            {
                nextLocation = i;
            }
        }

        locationCounts[nextLocation]++;
        activeTurrets.Add(new Turret(data, (Turret.Location)nextLocation));
        currentDifficulty += data.difficulty;
    }
Example #16
0
    //拆除炮塔
    public int ReleaseTurret()
    {
        GameObject effect = GameObject.Instantiate(releaseEffect,
                                                   new Vector3(transform.position.x, transform.position.y + this.turret.transform.position.y, transform.position.z),
                                                   Quaternion.identity);

        Destroy(turret);
        Destroy(effect, 1);

        int money = isLevelTop ? (turretData.upgradedCost + turretData.cost) : turretData.cost;

        isLevelTop = false;
        turret     = null;
        turretData = null;

        return(money);
    }
Example #17
0
    public override void OnInspectorGUI()
    {
        TurretData myTarget = (TurretData)target;

        myTarget.name          = EditorGUILayout.TextField("Name", myTarget.name);
        myTarget.cost          = EditorGUILayout.IntField("Cost", myTarget.cost);
        myTarget.reloadTime    = EditorGUILayout.FloatField("Reload time", myTarget.reloadTime);
        myTarget.attackRange   = EditorGUILayout.FloatField("Attack range", myTarget.attackRange);
        myTarget.minxRange     = EditorGUILayout.FloatField("Min horizontal Range", myTarget.minxRange);
        myTarget.projectile    = (PlayerProjectile)EditorGUILayout.ObjectField("Projectile", myTarget.projectile, typeof(PlayerProjectile), false);
        myTarget.aniController = (RuntimeAnimatorController)EditorGUILayout.ObjectField("Animator controller", myTarget.aniController, typeof(RuntimeAnimatorController), false);
        myTarget.fireSound     = (AudioClipGroup)EditorGUILayout.ObjectField("Projectile", myTarget.fireSound, typeof(AudioClipGroup), false);
        myTarget.sprite        = (Sprite)EditorGUILayout.ObjectField("Sprite", myTarget.sprite, typeof(Sprite), false);
        EditorGUILayout.LabelField("Impact Dps", myTarget.dps.ToString());
        EditorGUILayout.LabelField("Dps per $", myTarget.DpsPerCost.ToString());
        EditorUtility.SetDirty(myTarget);
    }
    /// <summary>
    /// 当三个ToggleGroup中的任一Toggle被点击,根据传入的name来判断是哪一个toggle被点击
    /// </summary>
    /// <param name="name"></param>
    public void OnTurretItemSelected(String name)
    {
        switch (name)
        {
        case "LaserToggle":
            selectedTurretData = laserTurretData;
            break;

        case "MissleToggle":
            selectedTurretData = missilrTurretData;
            break;

        case "StandardToggle":
            selectedTurretData = standardTurretData;
            break;
        }
    }
    public TurretData[] GetSourceTurretDatas()
    {
        // TEMP
        //if(m_sourceTurrets.Count < (int)Turret.End)
        //{
        //    Debug.LogError("The sourc turrets is less than Turret.End");
        //    return null;
        //}

        TurretData[] datas = new TurretData[(int)Turret.End];

        for (int i = 0; i < (int)Turret.End; ++i)
        {
            datas[i] = GetSourceTurretData((Turret)i);
        }

        return(datas);
    }
Example #20
0
        public override StructureData GetNetworkData()
        {
            TurretData data = new TurretData();

            data.XPos          = PosX;
            data.YPos          = PosY;
            data.CurrentHealth = CurrentHealth;
            data.Id            = Id;
            data.TurretType    = TurretType;
            data.StructureType = StructureType;

            if (!IsOnPlanet)
            {
                data.OwnerTeamIDs = _playerLocator.GetPlayerAsync(OwnerID).Result.GetTeamIDs();
            }

            return(data);
        }
Example #21
0
    public void DestroyTurret()
    {
        if (isUpgraded == false)
        {
            BuildManager.Instance.ChangeMoney(BuildManager.Instance.selectedMapCube.turretData.cost * 0.5f);
        }
        else
        {
            BuildManager.Instance.ChangeMoney((BuildManager.Instance.selectedMapCube.turretData.cost + BuildManager.Instance.selectedMapCube.turretData.costUpgraded) * 0.5f);
        }

        Destroy(turretGo);
        isUpgraded = false;
        turretGo   = null;
        turretData = null;
        GameObject effect = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);

        Destroy(effect, 1.5f);
    }
Example #22
0
    public void DestroyTurret()
    {
        switch (currentLevel)
        {
        case 0: break;

        case 1: ReturnMoneyEvent(this, new ReturnMoneyEventArgs(turretData.level1.cost / 2)); break;

        case 2: ReturnMoneyEvent(this, new ReturnMoneyEventArgs((turretData.level1.cost + turretData.level2.cost) / 2)); break;

        case 3: ReturnMoneyEvent(this, new ReturnMoneyEventArgs((turretData.level1.cost + turretData.level2.cost + turretData.level3.cost) / 2)); break;
        }
        Destroy(turretGo);
        currentLevel = 0;
        turretGo     = null;
        turretData   = null;
        GameObject effect = Instantiate(buildEffect, transform.position, Quaternion.identity);

        Destroy(effect, 1.5f);
    }
Example #23
0
    public void BuildTurret(TurretData turretData)
    {
        if (isFlipped)
        {
            if (hasFlag)
            {
                GameObject temp = myFlagModel;

                Destroy(myFlagModel);
                myFlagModel = null;
                //myFlagModel.gameObject.SetActive(false);
                Debug.Log("set active fail");
            }

            BuildeAudio.Play();
            this.turretData = turretData;
            isUpgraded      = false;
            turretGo        = GameObject.Instantiate(turretData.turretPrefab, transform.position, Quaternion.identity);
            GameObject effect = GameObject.Instantiate(buildEffect, transform.position, Quaternion.identity);
            Destroy(effect, 1.5f);
        }
    }
Example #24
0
    public void BuildTurret(TurretData turretdata, bool isBattacks = false)
    {
        Vector3 temp = transform.position;

        temp.y         += 2f;
        this.turretdata = turretdata;
        if (isBattacks)
        {
            thisTurret = Instantiate(turretdata.BasePrefab, temp, transform.rotation);
        }
        else
        {
            thisTurret = Instantiate(turretdata.BasePrefab, temp, Quaternion.identity);
        }
        GameObject effect = Instantiate(vars.BuildEffect, temp, Quaternion.identity);

        Gamemanager.Instance.Up.transform.GetChild(0).GetComponent <Text>().text = turretdata.UpgradedCost.ToString();

        DestoryFade();

        Destroy(effect, 1);
    }
Example #25
0
        // takes the current placed levelObjects and serializes it into the levelData format
        public static LevelData CreateLevelData()
        {
            if (LevelPlacer.generatedLevel != null && editLevel != null)
            {
                print("CreateLevelData");
                LevelDataMono level = LevelPlacer.generatedLevel;
                LevelData     l     = new LevelData(level.levelData.id);

                // save level info
                l.author     = level.levelData.author;
                l.id         = level.levelData.id;
                l.presetTime = DoubleToTwoDecimals(level.levelData.presetTime);
                l.title      = level.levelData.title;
                l.custom     = level.levelData.custom;

                // save moveArea mesh
                Vector3[]   verts    = level.moveArea.meshFilter.mesh.vertices;
                Position2[] posVerts = new Position2[verts.Length];
                for (int i = 0; i < verts.Length; i++)
                {
                    posVerts[i] = new Position2(verts[i].x, verts[i].y);
                }
                if (!posVerts.Equals(editLevel.moveVerticies))
                {
                    Debug.Log("Different Vertices");
                }
                l.moveVerticies = posVerts;
                l.moveTriangles = level.moveArea.meshFilter.mesh.triangles;

                // save spawn
                Vector3 spawnPos = level.spawn.transform.localPosition;
                l.objectData.spawnPosition = new Position2(spawnPos.x, spawnPos.y);

                // save finish
                Vector3 finishPos = level.finish.transform.localPosition;
                l.objectData.finishPosition = new Position2(finishPos.x, finishPos.y);

                // save turrets
                foreach (Turret t in level.turrets)
                {
                    Position2  turretPosition = new Position2(t.transform.localPosition.x, t.transform.localPosition.y);
                    TurretData td             = new TurretData(turretPosition);
                    td.rotation     = new Position3(t.transform.rotation.eulerAngles.x, t.transform.rotation.eulerAngles.y, t.transform.rotation.eulerAngles.z);
                    td.shotDelay    = FloatToTwoDecimals(t.shotDelay);
                    td.shotSpeed    = FloatToTwoDecimals(t.shotSpeed);
                    td.startupDelay = FloatToTwoDecimals(t.startupDelay);
                    td.constantFire = t.constantFire;
                    l.objectData.turretData.Add(td);
                }

                // save attractors
                foreach (Attractor a in level.attractors)
                {
                    Position2     aPosition = new Position2(a.transform.localPosition.x, a.transform.localPosition.y);
                    AttractorData ad        = new AttractorData(aPosition);
                    ad.pullStrength = (int)a.maxPullForce;
                    ad.radius       = (int)a.pullRadius;
                    l.objectData.attractorData.Add(ad);
                }

                // save portals
                foreach (Portal p in level.portals)
                {
                    Position2  pPosition = new Position2(p.transform.localPosition.x, p.transform.localPosition.y);
                    PortalData pd        = new PortalData(pPosition, p.portalID);
                    pd.portalID       = p.portalID;
                    pd.linkedPortalID = p.linkedPortalID;
                    l.objectData.portalData.Add(pd);
                }

                // save speedstrips
                foreach (SpeedStrip s in level.speedStrips)
                {
                    Position2      pPosition = new Position2(s.transform.localPosition.x, s.transform.localPosition.y);
                    SpeedStripData sd        = new SpeedStripData(pPosition);
                    sd.rotation     = new Position3(s.transform.rotation.eulerAngles.x, s.transform.rotation.eulerAngles.y, s.transform.rotation.eulerAngles.z);
                    sd.pushStrength = (int)s.accelSpeed;
                    l.objectData.speedStripData.Add(sd);
                }

                foreach (Bouncer b in level.bouncers)
                {
                    Position2   bPosition = new Position2(b.transform.localPosition.x, b.transform.localPosition.y);
                    BouncerData bd        = new BouncerData(bPosition);
                    bd.rotation   = new Position3(b.transform.rotation.eulerAngles.x, b.transform.rotation.eulerAngles.y, b.transform.rotation.eulerAngles.z);
                    bd.bounciness = b.bounciness;
                    bd.width      = b.width;
                    l.objectData.bouncerData.Add(bd);
                }

                return(l);
            }
            return(null);
        }
Example #26
0
 public void TurretSpawned(TurretData data)
 {
     m_TurretDatas.Add(data);
 }
Example #27
0
    private void Update()
    {
        if (errorDelta > 0)
        {
            errorDelta -= Time.deltaTime;
            Color c = errortext.color;
            c.a             = errorDelta / errorTime;
            errortext.color = c;
        }

        if (Status != StatusKind.Build)
        {
            return;
        }
        if (Input.GetMouseButtonDown(1))
        {
            Status = StatusKind.None;
            return;
        }

        buildIcon.position = Input.mousePosition;

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (!Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, buildLayer))
        {
            return;
        }

        bool canBuild = !Physics.CheckSphere(hit.point, 1, turretLayer);

        buildPlace.SetStatus(canBuild);
        buildPlace.transform.position = hit.point;

        if (!Input.GetMouseButtonDown(0))
        {
            return;
        }

        if (!canBuild)
        {
            //TODO errror message
            ShowError("Can't build here", 0);
            return;
        }

        string turretId = "";

        switch (buildTurret)
        {
        case 0:
            turretId = "laser";
            break;

        case 1:
            turretId = "plasma";
            break;

        case 2:
            turretId = "missile";
            break;
        }
        if (turretId == "")
        {
            return;
        }

        TurretData turret = Science.GetTurretById(turretId);

        if (turret == null)
        {
            return;
        }

        if (turret.price > Science.money)
        {
            //TODO mesage not money
            ShowError("Not enough money", 1);
            return;
        }
        Science.money -= turret.price;
        BuildTurret(hit.point);

        //TODO after build status going to none? yes
        Status = StatusKind.None;
    }
Example #28
0
    public void SellTurret(TurretData turret)
    {
        _resources += turret.Cost;

        OnResourcesChanged?.Invoke(_resources);
    }
Example #29
0
 public void TurretDestory()
 {
     isUpgrade = false;
     Destroy(turretGo);
     turretData = null;
 }
Example #30
0
    static private List <string> GetPropPropertyNamesToSave(PropData propData)
    {
        List <string> ps = new List <string>(); // property names!

        // YES travelMind?? Add that!
        if (propData.travelMind.IsUsed)
        {
            ps.Add("travelMind");
        }
        // NO TravelMind?? Add pos!
        else
        {
            ps.Add("pos");
        }
        if (!Mathf.Approximately(propData.rotation, 0))
        {
            ps.Add("rotation");
        }
        // BaseGroundData?
        if (propData is BaseGroundData)
        {
            ps.Add("size");
            BaseGroundData d = propData as BaseGroundData;
            if (!d.mayPlayerEat)
            {
                ps.Add("mayPlayerEat");
            }
            if (d.isPlayerRespawn)
            {
                ps.Add("isPlayerRespawn");
            }
            if (d.preventHappyHop)
            {
                ps.Add("preventHappyHop");
            }
        }

        Type type = propData.GetType();

        if (type == typeof(BatteryData))
        {
        }
        else if (type == typeof(BuzzsawData))
        {
            ps.Add("size");
        }
        else if (type == typeof(CameraBoundsData))
        {
            ps.Add("size");
        }
        else if (type == typeof(CharBarrelData))
        {
            ps.Add("otherCharName");
        }
        else if (type == typeof(CharUnlockOrbData))
        {
            ps.Add("myCharName");
        }
        else if (type == typeof(CrateData))
        {
            ps.Add("hitsUntilBreak"); ps.Add("numCoinsInMe");
        }
        else if (type == typeof(GateData))
        {
            ps.Add("channelID");
        }
        else if (type == typeof(GateButtonData))
        {
            ps.Add("channelID");
        }
        else if (type == typeof(GemData))
        {
            ps.Add("type");
        }
        else if (type == typeof(InfoSignData))
        {
            ps.Add("myText");
        }
        else if (type == typeof(LiftData))
        {
            ps.Add("size"); ps.Add("strength");
        }
        else if (type == typeof(PlayerStartData))
        {
        }
        else if (type == typeof(ProgressGateData))
        {
            ps.Add("numSnacksReq");
        }
        else if (type == typeof(RoomDoorData))
        {
            ps.Add("myID"); ps.Add("worldToIndex"); ps.Add("roomToKey"); ps.Add("doorToID");
        }
        else if (type == typeof(SnackData))
        {
            ps.Add("playerType");
        }
        else if (type == typeof(VeilData))
        {
            ps.Add("size");
        }
        // Enemies
        else if (type == typeof(DweebData))
        {
            ps.Add("speed");
        }
        // Props with optional params
        else if (type == typeof(TurretData))
        {
            TurretData d = propData as TurretData;
            ps.Add("interval");
            ps.Add("speed");
            if (d.startOffset > 0)
            {
                ps.Add("startOffset");
            }
        }
        else if (type == typeof(SpikesData))
        {
            SpikesData d = propData as SpikesData;
            ps.Add("size");
            if (d.onOffer.IsUsed)
            {
                ps.Add("onOffer");
            }
        }
        else if (type == typeof(LaserData))
        {
            LaserData d = propData as LaserData;
            if (d.onOffer.IsUsed)
            {
                ps.Add("onOffer");
            }
        }
        else if (type == typeof(DispGroundData))
        {
            DispGroundData d = propData as DispGroundData;
            ps.Add("doRegen");
            if (d.regenTime != DispGround.RegenTimeDefault)
            {
                ps.Add("regenTime");
            }
            if (d.dieFromBounce)
            {
                ps.Add("dieFromBounce");
            }
            if (d.dieFromPlayerLeave)
            {
                ps.Add("dieFromPlayerLeave");
            }
            if (d.dieFromVel)
            {
                ps.Add("dieFromVel");
            }
        }
        else if (type == typeof(GroundData))
        {
            GroundData d = propData as GroundData;
            if (d.isBouncy)
            {
                ps.Add("isBouncy");
            }
            if (!d.mayBounce)
            {
                ps.Add("mayBounce");
            }
            if (!d.doRechargePlayer)
            {
                ps.Add("doRechargePlayer");
            }
        }
        else if (type == typeof(PlatformData))
        {
            PlatformData d = propData as PlatformData;
            if (!d.canDropThru)
            {
                ps.Add("canDropThru");
            }
        }
        else if (type == typeof(ToggleGroundData))
        {
            ps.Add("startsOn");
            ps.Add("togFromContact");
            ps.Add("togFromAction");
        }
        else
        {
            Debug.LogWarning("Prop in Room not recognized for serialization: " + type);
        }
        return(ps);
    }