コード例 #1
0
    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);
    }
コード例 #2
0
ファイル: Ship_Collider.cs プロジェクト: francisruf/headspace
    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);
            }
        }
    }
コード例 #3
0
    // 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");
    }
コード例 #4
0
ファイル: Ship_Collider.cs プロジェクト: francisruf/headspace
    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;
            }
        }
    }
コード例 #5
0
    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;
    }
コード例 #6
0
 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;
     }
 }
コード例 #7
0
    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();
            }
        }
    }
コード例 #8
0
    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);
    }
コード例 #9
0
    // 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;
        }
    }
コード例 #10
0
    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);
    }
コード例 #11
0
    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;
        }
    }
コード例 #12
0
    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();
        }
    }
コード例 #13
0
    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);
    }
コード例 #14
0
    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();
        }
    }
コード例 #15
0
 public WormHoleMapUnit(Map map, WormHole wormHole, Vector movementOffset)
     : base(map, wormHole, movementOffset)
 {
     this.wormHole = wormHole;
 }