Esempio n. 1
0
    private static void lDoWhenClick()
    {
        Transform s       = GetObjectUnderMouse(SM.SoldierLayer);
        Soldier   soldier = s ? s.GetComponent <Soldier>() : null;
        Soldier   officer = soldier ? SM.GetOfficer(soldier) : null;

        if (officer && (officer.army == yourArmy))
        {
            if (!(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
            {
                ClearTargets();
            }

            Soldier[] subs = SM.AsOfficer(officer).subs;

            if (!targets.Contains(officer))
            {
                officer.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_Officer_HL_" + yourArmy);
                plusTarget(officer);
                foreach (Soldier sold in subs)
                {
                    if (sold != null)
                    {
                        sold.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_HL_" + yourArmy);
                    }
                }
            }
            else
            {
                officer.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_Officer_" + yourArmy);
                minusTarget(officer);
                foreach (Soldier sold in subs)
                {
                    if (sold != null)
                    {
                        sold.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_" + yourArmy);
                    }
                }
            }
        }
        //attack
        else if (Input.GetKey(KeyCode.A))
        {
            Attack();
        }
        //move
        else if (Input.GetKey(KeyCode.G))
        {
            Move();
        }
        else
        {
            ClearTargets();
        }
    }
Esempio n. 2
0
 private static void Test()
 {
     foreach (Soldier off in targets)
     {
         Soldier[] subs = SM.AsOfficer(off).subs;
         off.TestNow();
         foreach (Soldier sold in subs)
         {
             if (sold != null)
             {
                 sold.TestNow();
             }
         }
     }
 }
Esempio n. 3
0
 private void Defend()
 {
     foreach (Soldier off in targets)
     {
         Soldier[] subs = SM.AsOfficer(off).subs;
         off.DefendNow(3f);
         foreach (Soldier sold in subs)
         {
             if (sold != null)
             {
                 sold.DefendNow(SM.AsPrivate(sold).PrivPos(), 3f);
             }
         }
     }
 }
Esempio n. 4
0
    private static void ClearTargets()
    {
        foreach (Soldier officer in targets)
        {
            Soldier[] subs = SM.AsOfficer(officer).subs;

            officer.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_Officer_" + yourArmy);
            foreach (Soldier sold in subs)
            {
                if (sold != null)
                {
                    sold.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_" + yourArmy);
                }
            }
        }
        targets.Clear();
    }
Esempio n. 5
0
    private static void lDoWhenLong()
    {
        if (!(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
        {
            ClearTargets();
        }

        Collider2D[] soldiers = Physics2D.OverlapAreaAll(firstMousePos, mousePos, 1 << SM.SoldierLayer);

        if (soldiers.Length != 0)
        {
            if (!(Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)))
            {
                ClearTargets();
            }
        }

        foreach (Collider2D sold in soldiers)
        {
            Soldier soldd   = sold.GetComponent <Soldier>();
            Soldier officer = SM.GetOfficer(soldd);
            if (officer && officer.army == yourArmy)
            {
                Soldier[] subs = SM.AsOfficer(officer).subs;

                if (!targets.Contains(officer))
                {
                    officer.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_Officer_HL_" + yourArmy);
                    plusTarget(officer);
                    foreach (Soldier sol in subs)
                    {
                        if (sol != null)
                        {
                            sol.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_HL_" + yourArmy);
                        }
                    }
                }
            }
        }
    }
Esempio n. 6
0
 private static void Move()
 {
     if (!keepFormation)
     {
         foreach (Soldier off in targets)
         {
             Soldier[] subs = SM.AsOfficer(off).subs;
             off.MoveNow(mousePos);
             foreach (Soldier sold in subs)
             {
                 if (sold != null)
                 {
                     sold.MoveNow(SM.AsPrivate(sold).PrivPos(mousePos));
                 }
             }
         }
     }
     else
     {
         Vector3 cent = Vector3.zero;
         foreach (Soldier off in targets)
         {
             cent += off.transform.position;
         }
         cent /= targets.Count;
         foreach (Soldier off in targets)
         {
             Vector3   coord = mousePos + off.transform.position - cent;
             Soldier[] subs  = SM.AsOfficer(off).subs;
             off.MoveNow(coord);
             foreach (Soldier sold in subs)
             {
                 if (sold != null)
                 {
                     sold.MoveNow(SM.AsPrivate(sold).PrivPos(coord));
                 }
             }
         }
     }
 }
Esempio n. 7
0
 private void CheckMoral()
 {
     if (SM.IsPrivate(this))
     {
         if (moral <= 0)
         {
             float   l    = 60f;
             Vector3 runV = -(army == "B" ? (SM.rWarlord.position - transform.position) : (SM.bWarlord.position - transform.position)).normalized * l;
             order = new OrdMove(transform.position + runV);
             if (SM.AsPrivate(this).officer != null)
             {
                 Officer off = SM.AsOfficer(SM.AsPrivate(this).officer);
                 off.subs[SM.AsPrivate(this).index]     = null;
                 GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_" + army + "_NO");
                 Private priv = SM.AsPrivate(this);
                 priv.deltaV = Vector3.zero;
                 priv.index  = -1;
                 priv.SetOfficer(null);
             }
         }
     }
 }
Esempio n. 8
0
 private void LoseGainMoral()
 {
     if (SM.IsPrivate(this))
     {
         if (Time.time - lastLostHP < timeBeforeHPrec)
         {
             Private pr = SM.AsPrivate(this);
             float   k1 = 18f * (maxHP - health) / maxHP;
             float   k2 = pr.officer == null ? 2f : (1f / (SM.AsOfficer(pr.officer).subs.Length + 3));
             float   k3 = 20f;
             moral -= k1 * k2 * k3 * Time.deltaTime;
             if (moral < 0f)
             {
                 moral = 0f;
             }
         }
         //else
         //{
         //    float k = 5;
         //    moral += k * Time.deltaTime;
         //}
     }
 }
Esempio n. 9
0
    public void DestroyIt()
    {
        //Debug.Log("DEAD END");
        transform.Translate(new Vector3(0, 0, 0.6f));

        Transform sold = transform.Find("Soldier");

        SM.RemoveSoldier(sold);
        Soldier sol = sold.GetComponent <Soldier>();

        if (SM.IsWarlord(sol))
        {
            if (army == CM.yourArmy)
            {
                SM.OnDefeat();
            }
            else
            {
                SM.OnVictory();
            }
        }
        else if (SM.IsOfficer(sol))
        {
            foreach (Soldier s in SM.AsOfficer(sol).subs)
            {
                if (s != null)
                {
                    s.GetComponent <SpriteRenderer>().sprite = Resources.Load <Sprite>("Soldier/S_Base_" + army + "_NO");
                    Private priv = SM.AsPrivate(s);
                    priv.deltaV = Vector3.zero;
                    priv.index  = -1;
                    priv.SetOfficer(null);
                }
            }
        }
        else if (SM.IsPrivate(sol))
        {
            if (SM.AsPrivate(sol).officer != null)
            {
                Officer off = SM.AsOfficer(SM.AsPrivate(sol).officer);
                off.subs[SM.AsPrivate(sol).index] = null;
            }
        }

        sold.GetComponent <Collider2D>().enabled = false;
        //sold.GetComponent<Collider2D>().isTrigger = false;
        //transform.GetComponent<Rigidbody2D>().mass = 0.01f;
        //sold.gameObject.layer = LayerMask.NameToLayer("Default");
        sold.GetComponent <Soldier>().enabled  = false;
        sold.GetComponent <Animator>().enabled = false;
        GameObject.Destroy(sold.Find("nonTrigger").gameObject);
        GameObject.Destroy(sold.Find("Textures").gameObject);

        Transform lH = sold.Find("L_Hand");
        Transform rH = sold.Find("R_Hand");

        lH.GetComponent <SpriteRenderer>().sprite                      = Resources.Load <Sprite>("Soldier/S_Hand_G");
        lH.GetComponent <SpriteRenderer>().sortingLayerName            = "Default";
        lH.GetComponent <SpriteRenderer>().sortingOrder                = 2;
        lH.Find("Shadow").GetComponent <SpriteRenderer>().sortingOrder = 1;
        rH.GetComponent <SpriteRenderer>().sprite                      = Resources.Load <Sprite>("Soldier/S_Hand_G");
        rH.GetComponent <SpriteRenderer>().sortingLayerName            = "Default";
        rH.GetComponent <SpriteRenderer>().sortingOrder                = 2;
        rH.Find("Shadow").GetComponent <SpriteRenderer>().sortingOrder = 1;
        Transform lW = lH.childCount > 1 ? lH.GetChild(1) : null;
        Transform rW = rH.childCount > 1 ? rH.GetChild(1) : null;

        if (lW != null)
        {
            lW.GetComponent <InHand>().Drop();
        }
        if (rW != null)
        {
            rW.GetComponent <InHand>().Drop();
        }

        //GameObject.Destroy(transform.Find("Bars").GetComponent<Canvas>());
        GameObject.Destroy(transform.Find("Bars").gameObject);

        CM.minusTarget(sol);
        foreach (AI ai in FindObjectsOfType <AI>())
        {
            ai.minusTarget(sol);
        }
        sold.GetComponent <SpriteRenderer>().sprite                      = Resources.Load <Sprite>("Soldier/S_Base_G_" + army);
        sold.GetComponent <SpriteRenderer>().sortingLayerName            = "Default";
        sold.GetComponent <SpriteRenderer>().sortingOrder                = 2;
        sold.Find("Shadow").GetComponent <SpriteRenderer>().sortingOrder = 1;

        transform.SetParent(SM.trash.transform);

        transform.GetComponent <Soldier_Upper>().enabled = false;
    }