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); }
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); }
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(); }
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); } }
// 构建炮塔 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; } } } } }
//建造炮塔 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); }
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); }
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; }
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); }
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"); } }
private void Start() { if (!pricePanel) { return; } pricePanel.SetActive(false); turret = Science.GetTurretById(turretId); if (turret == null) { return; } priceText.text = turret.price.ToString(); }
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; }
//拆除炮塔 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); }
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); }
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); }
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); }
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); }
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); } }
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); }
// 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); }
public void TurretSpawned(TurretData data) { m_TurretDatas.Add(data); }
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; }
public void SellTurret(TurretData turret) { _resources += turret.Cost; OnResourcesChanged?.Invoke(_resources); }
public void TurretDestory() { isUpgrade = false; Destroy(turretGo); turretData = null; }
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); }