private static void processAttackResults(Attack attack, AttackResultObj result) { bool isWinner = result.winnerUsername.Equals(Globals.username); Debug.Log("AttackID: " + attack.attackId + " Won? " + isWinner + " result: " + result); if (isWinner) { GenerateWorld.instance.message.text = "Attack successful! New base aquired"; Debug.Log("My attack successful! Aquired new base - NewBase: " + result.newBase); // Draw new base and portal GenerateWorld.instance.addBase(result.newBase); PortalHandler.instance.addPortal(result.newPortal); EventManager.positionText(); } else { GenerateWorld.instance.message.text = "Attack unsuccessful"; Debug.Log("My attack unsuccessful - lost all the troops I sent to battle"); } WormHole w = attack.attackerWormHole; w.attackState = AttackState.NoAttack; // Remove progress bar //w.gameObject.GetComponentInChildren<OIPProgressScript>().gameObject.SetActive(false); }
private void OnTriggerEnter2D(Collider2D col) { //When inside anomaly affected sector if (col.GetComponent <GridTile_Anomaly>() != null) { GridTile_Anomaly anomaly = col.GetComponent <GridTile_Anomaly>(); ship.anomalyTile = anomaly; mM.ContactWithAnomalyNotif(ship, anomaly); } if (col.GetComponent <Planet_InteractionZone>() != null) { ship.planetInOrbit = col.GetComponent <Planet_InteractionZone>().ParentPlanet; ship.isInPlanetOrbit = true; } if (col.GetComponent <DeployPoint>() != null) { ship.deployP = col.GetComponent <DeployPoint>(); ship.isInDeployPoint = true; } if (col.GetComponent <Cloud>() != null) { ship.isMoving = false; ship.isInCloud = true; mM.ContactWithCloudNotif(ship); } GridTile_Planet planet = col.GetComponent <GridTile_Planet>(); if (planet != null) { planet.RevealPlanet(false); ship.CheckForClients(planet); } GridTile_StaticAnomaly staticAnomaly = col.GetComponent <GridTile_StaticAnomaly>(); if (staticAnomaly != null) { ship.DisableShip(); } // Wormhole WormHole candidateWormhole = col.GetComponent <WormHole>(); if (candidateWormhole != null) { // If collision with wormhole is NOT collision with the current RECEIVING wormhole if (candidateWormhole != ship.receiverWormhole) { // Assign references and call the ship function ship.senderWormhole = col.GetComponent <WormHole>(); ship.receiverWormhole = ship.senderWormhole.SisterWormHole; ship.EnterWormHole(ship.receiverWormhole); mM.ContactWithWormholeNotif(ship); } } }
// Function that teleports the ship to a targetwormhole, stops movement, // assigns a transposed movement vector, and starts moving again public void EnterWormHole(WormHole targetWormHole) { // Get remaining movement Vector2 remainingMovement = targetWorldCoords - (Vector2)transform.position; // Assign states and teleport ship isInWormHole = true; isMoving = false; transform.position = targetWormHole.transform.position; // Start a new movement vector Vector2 newTargetWorldCoords = (Vector2)transform.position + remainingMovement; // Get current grid info and assign max positions, according to game world bounds GridInfo currentGridInfo = GridCoords.CurrentGridInfo; if (currentGridInfo != null) { float minX = currentGridInfo.gameGridWorldBounds.min.x; float maxX = currentGridInfo.gameGridWorldBounds.max.x; float minY = currentGridInfo.gameGridWorldBounds.min.y; float maxY = currentGridInfo.gameGridWorldBounds.max.y; newTargetWorldCoords.x = Mathf.Clamp(newTargetWorldCoords.x, minX, maxX); newTargetWorldCoords.y = Mathf.Clamp(newTargetWorldCoords.y, minY, maxY); } // Assign new vector and start moving again targetWorldCoords = newTargetWorldCoords; isMoving = true; Debug.Log("I am in a wormhole"); }
private void OnTriggerExit2D(Collider2D col) { //When exiting anomaly affected sector if (col.GetComponent <GridTile_Anomaly>() != null) { GridTile_Anomaly anomaly = col.GetComponent <GridTile_Anomaly>(); if (ship.anomalyTile == anomaly) { ship.anomalyTile = null; } mM.ContactWithAnomalyNotif(ship, anomaly); } if (col.GetComponent <Planet_InteractionZone>() != null) { if (col.GetComponent <Planet_InteractionZone>().ParentPlanet == ship.planetInOrbit) { ship.isInPlanetOrbit = false; ship.planetInOrbit = null; } } if (col.GetComponent <DeployPoint>() != null) { if (col.GetComponent <DeployPoint>() == ship.deployP) { ship.isInDeployPoint = false; ship.deployP = null; } } if (col.GetComponent <Cloud>() != null) { ship.isInCloud = false; } // Wormhole WormHole candidateWormhole = col.GetComponent <WormHole>(); if (candidateWormhole != null) { // If exiting the sender wormhole, clear the reference if (candidateWormhole == ship.senderWormhole) { ship.senderWormhole = null; } // If exiting the receiving wormhole, clear the reference else if (candidateWormhole == ship.receiverWormhole) { ship.receiverWormhole = null; ship.isInWormHole = false; } } }
private void createAttackObj(Attack attack) { GameObject progressBar = (GameObject)Instantiate(OIPProgressItemPrefab, new Vector3(0, 0, 0), Quaternion.identity); WormHole w = attack.attackerWormHole; progressBar.transform.SetParent(w.objectInfoPanel.transform); progressBar.GetComponentInChildren <Image> ().sprite = attackSprite; progressBar.SetActive(true); attack.lastUpdateEvent += progressBar.GetComponent <OIPProgressScript> ().updateContent; w.attackState = AttackState.Attacking; }
public void OnMouseDown() { if (Globals.opState == OpState.Attack) { WormHole w = (WormHole)gameObject.GetComponent <InstanceObjectScript>().instanceObject; Base attachedBase = w.b; GenerateWorld.instance.message.text = "Touch checkmark to confirm amount"; SliderBehavior.instance.showSlider(0, attachedBase.units); EventManager.sliderConfirmed += gameObject.GetComponent <WormHoleScript>().onAttackConfirmed; } }
public void Warp(GameObject WarpedTarget, WormHole enterHole) { float temp = 0; WormHole other; if (WrapedObjects.TryGetValue(WarpedTarget, out temp)) { return; } WrapedObjects.Add(WarpedTarget, Time.time); if (enterHole == hole1) { other = hole2; WarpedTarget.transform.position = other.transform.position; } else { other = hole1; WarpedTarget.transform.position = other.transform.position; } if (WarpedTarget.GetComponent <PlayerController>())//if player enters wormhole { if (WarpedTarget.GetComponent <PlayerController>().collectables.Count != 0) { foreach (GameObject g in WarpedTarget.GetComponent <PlayerController>().collectables) { g.transform.position += (other.transform.position - enterHole.transform.position); } } if (LevelManger.Instance.player.attatchedTo != null) { LevelManger.Instance.player.Detatch(); } // TODO fix Camera to zoom to then telaport; // CompleteCameraController.Instance.MoveCameraTo(WarpedTarget.transform.position); } else if (WarpedTarget.GetComponent <AsteroidBehavior>()) { if (WarpedTarget.GetComponent <AsteroidBehavior>().collectable != null) { WarpedTarget.GetComponent <AsteroidBehavior>().collectable.transform.position += (other.transform.position - enterHole.transform.position); } if (LevelManger.Instance.player.attatchedTo == WarpedTarget) { LevelManger.Instance.player.Detatch(); } } }
public Vector3 getUIScreenPosition() { WormHole w = (WormHole)instanceObject; Vector3 worldOffset = new Vector3(0, 0, 0); if (w.relativeCoords.y > 0) { worldOffset = new Vector3(0, this.gameObject.transform.localScale.x, 0); } else if (w.relativeCoords.y < 0) { worldOffset = new Vector3(0, -this.gameObject.transform.localScale.x, 0); } Vector3 textPosition = Camera.main.WorldToScreenPoint(transform.position + worldOffset); //SetActive(!Globals.isInLocalView); return(textPosition); }
// Use this for initializ135ation void Awake() { WrapedObjects = new Dictionary <GameObject, float>(); var holes = GetComponentsInChildren <WormHole>(); hole1 = holes[0]; hole2 = holes[1]; for (int i = 0; i < holes.Length; i++) { var particles = holes[i].GetComponentsInChildren <ParticleSystem>(); particles[1].startColor = RimColour; var COL1 = particles[2].colorOverLifetime; COL1.color = WaveGradient; var COL2 = particles[3].colorOverLifetime; COL2.color = WaveGradient; particles[4].startColor = OrbColour; } }
public override bool Equals(object obj) { if (obj == null) { return(false); } if (ReferenceEquals(this, obj)) { return(true); } if (obj.GetType() != typeof(WormHole)) { return(false); } WormHole other = (WormHole)obj; return(wormholeId == other.wormholeId && b == other.b && connectedWormholeId == other.connectedWormholeId && relativeCoords == other.relativeCoords); }
public IEnumerator coLoadUnderAttacks() { WWWForm wwwform = new WWWForm(); wwwform.AddField("username", "kmw8sf"); WWW request = new WWW("localhost:8080/myapp/world/attacksdefending", wwwform); yield return(request); currentUnderAttacks = JsonMapper.ToObject <List <Attack> >(request.text); foreach (Attack attack in currentUnderAttacks) { GameObject progressBar = (GameObject)Instantiate(OIPProgressItemPrefab, new Vector3(0, 0, 0), Quaternion.identity); WormHole w = attack.defenderWormHole; progressBar.transform.SetParent(w.objectInfoPanel.transform); progressBar.GetComponentInChildren <Image> ().sprite = defendSprite; progressBar.SetActive(true); attack.lastUpdateEvent += progressBar.GetComponent <OIPProgressScript> ().updateContent; w.attackState = AttackState.underAttack; } }
private static void processAttackDefendingResults(Attack attack, AttackResultObj result) { bool isWinner = result.winnerUsername.Equals(Globals.username); Debug.Log("AttackID: " + attack.attackId + " Won? " + isWinner + " result: " + result); if (isWinner) { Debug.Log("Survived attack! Surviving units - New num units: " + result.numUnitsLeft); // Update num units Base b = (Base)ObjectInstanceDictionary.getObjectInstanceById("Base", attack.defenderBaseId); GenerateWorld.instance.message.text = "Survived getting attacked! Lost " + (b.units - result.numUnitsLeft) + " units"; b.units = result.numUnitsLeft; EventManager.positionText(); WormHole w = attack.defenderWormHole; w.attackState = AttackState.NoAttack; // Remove progress bar } else { GenerateWorld.instance.message.text = "Defeated in attack. Base lost."; Debug.Log("Didn't survive attack - lost base BaseId: " + attack.defenderBaseId); // Delete base and connecting portals // Get all connecting portals foreach (int pId in result.lostPortalIds) { GameObject p = ObjectInstanceDictionary.getObjectInstanceById("Portal", pId).gameObject; Destroy(p); } // TODO: Delete all of the base's wormholes, not just the one that the attack came through Destroy(attack.defenderWormHole.gameObject); GameObject b = ObjectInstanceDictionary.getObjectInstanceById("Base", attack.defenderBaseId).gameObject; Destroy(b.GetComponent <BaseScript>().objectInfoPanel); Destroy(b); EventManager.positionText(); } }
public Vector2 getPivot() { WormHole w = (WormHole)instanceObject; Vector2 retVal = new Vector2(); if (w.relativeCoords.x < 0) { retVal.x = 1;; } else { retVal.x = 0; } if (w.relativeCoords.y > 0) { retVal.y = 0; } else { retVal.y = 1; } return(retVal); }
public IEnumerator coOnAttackConfirmed(int numUnits) { WormHole w = (WormHole)gameObject.GetComponent <InstanceObjectScript> ().instanceObject; Base b = w.b; WWWForm wwwform = new WWWForm(); wwwform.AddField("username", "kmw8sf"); wwwform.AddField("baseId", b.baseId); wwwform.AddField("wormholeId", w.wormholeId); wwwform.AddField("numUnits", numUnits); WWW request = new WWW("localhost:8080/myapp/world/attack", wwwform); yield return(request); Attack attack = LitJson.JsonMapper.ToObject <Attack> (request.text); if (attack.attackerBaseId != null) { AttackHandler.instance.addAttack(attack); Base attackBase = (Base)ObjectInstanceDictionary.getObjectInstanceById("Base", attack.attackerBaseId); attackBase.units -= numUnits; EventManager.positionText(); } }
public WormHoleMapUnit(Map map, WormHole wormHole, Vector movementOffset) : base(map, wormHole, movementOffset) { this.wormHole = wormHole; }