Exemple #1
0
 public PartyAttack(StateMachine stateMachine, float timeBeforeNextAttack, WM_party party)
 {
     this.stateMachine         = stateMachine;
     this.party                = party;
     this.timeBeforeNextAttack = timeBeforeNextAttack;
     this.timestamp            = Time.time;
 }
Exemple #2
0
    public void SendAttackRequest(WM_party enemyParty)
    {
        Debug.Log("Sending request to attack by " + gameObject.name);
        WM_CombatManager CM = WM_CombatManager.instance;

        CM.BattleRequest(this, enemyParty);
    }
    bool AlreadyRequested(WM_party unit0, WM_party unit1)
    {
        for (int i = battlePendingRequest.Count - 1; i >= 0; i--)
        {
            if (battlePendingRequest[i].party0 == unit1 || battlePendingRequest[i].party1 == unit1)
            {
                return(true);
            }

            if (battlePendingRequest[i].party0 == unit0 || battlePendingRequest[i].party1 == unit0)
            {
                return(true);
            }
        }

        for (int i = battleList.Count - 1; i >= 0; i--)
        {
            if (battleList[i].party0 == unit1 || battleList[i].party1 == unit1)
            {
                return(true);
            }

            if (battleList[i].party0 == unit0 || battleList[i].party1 == unit0)
            {
                return(true);
            }
        }
        return(false);
    }
Exemple #4
0
    public Vector3 PartyPositionOnNode(WM_party p)
    {
        Vector3 pos;

        float value = partyList.FindIndex(item => item == p) * Mathf.PI / 6;

        pos = new Vector3(transform.position.x + radius * Mathf.Cos(value), transform.position.y, transform.position.z + radius * Mathf.Sin(value));

        return(pos);
    }
Exemple #5
0
 public void Execute()
 {
     nodeToConquer = SelectNode();
     if (nodeToConquer == null)
     {
         return;
     }
     party = SelectParty();
     if (party == null)
     {
         return;
     }
     party.Conquer(nodeToConquer);
 }
    public void BattleRequest(WM_party unit0, WM_party unit1)
    {
        // batle btw 2 npc, returns if the request was accepted or dropped

        // if one of the nodes has already left the node, drop request
        if (unit0.currentNode == null || unit1.currentNode == null)
        {
            return;
        }

        // add them to the battle list because 1st time for both
        if (!AlreadyRequested(unit0, unit1))
        {
            battlePendingRequest.Add(new battle(unit0, unit1));
        }
    }
Exemple #7
0
    WM_party SelectParty()
    {
        //select the closest party available
        WM_party tmp  = null;
        float    dist = Mathf.Infinity;

        for (int i = faction.roamingUnits.Count - 1; i >= 0; i--)
        {
            float tmpdist = Vector3.Distance(faction.roamingUnits[i].transform.position, nodeToConquer.transform.position);
            if (faction.roamingUnits[i].available && faction.roamingUnits[i].currentNode != null && tmpdist < dist)
            {
                tmp  = faction.roamingUnits[i];
                dist = tmpdist;
            }
        }
        return(tmp);
    }
Exemple #8
0
    public void Execute()
    {
        if (!party.available)
        {
            timestamp = Time.time;
            return;
        }

        if (Time.time - timestamp >= guardTimer)
        {
            party.nodeGuarded = true;
            stateMachine.ChangeIdleState(idle);
            return;
        }

        partySpotted = party.Guard();
        if (partySpotted != null)
        {
            stateMachine.ChangeAndExecute(attack);
        }
    }
    void DeclineDuplicateRequest(WM_party unit0, WM_party unit1)
    {
        bool remove = false;

        for (int i = battlePendingRequest.Count - 1; i >= 0; i--)
        {
            if (battlePendingRequest[i].party0 == unit1 || battlePendingRequest[i].party1 == unit1)
            {
                remove = true;
            }

            if (battlePendingRequest[i].party0 == unit0 || battlePendingRequest[i].party1 == unit0)
            {
                remove = true;
            }

            if (remove)
            {
                battlePendingRequest.RemoveAt(i);
            }
        }
    }
Exemple #10
0
    public void SpawnNewUnits(int numberOfUnits, List <WM_party> duty)
    {
        GameObject party    = Instantiate(partyPrefab, transform);
        WM_party   tmpParty = party.GetComponent <WM_party>();

        tmpParty.currentNode = Base;
        tmpParty.faction     = this;
        party.name           = gameObject.name + " party " + partyCount;
        partyCount++;
        for (int i = 0; i < numberOfUnits; i++)
        {
            GameObject obj     = Instantiate(unitPrefab, party.transform);
            WM_Unit    tmpUnit = obj.transform.GetChild(0).GetComponent <WM_Unit>();
            tmpUnit.transform.position = Base.transform.position;
            tmpUnit.currentNode        = Base;
            obj.name            = party.name + " " + party.GetComponent <WM_party>().party.Count;
            tmpUnit.faction     = this;
            tmpUnit.currentNode = Base;
            tmpUnit.party       = tmpParty;
            tmpParty.party.Add(tmpUnit);
        }
        duty.Add(tmpParty);
    }
Exemple #11
0
 public PartyConquer(StateMachine stateMachine, float conquestTimer, WM_party party)
 {
     this.stateMachine  = stateMachine;
     this.conquestTimer = conquestTimer;
     this.party         = party;
 }
Exemple #12
0
 public PartyIdle(StateMachine stateMachine, WM_party party)
 {
     this.stateMachine = stateMachine;
     this.party        = party;
 }
Exemple #13
0
 public void IsFightingPlayer(WM_party ennemyParty)
 {
     Debug.Log(ennemyParty);
     fightingThePlayer = ennemyParty;
 }
Exemple #14
0
 public void Enter()
 {
     partyToAttack   = party.Guard();
     party.available = false;
 }
Exemple #15
0
 public battle(WM_party _u0, WM_party _u1)
 {
     party0    = _u0;
     party1    = _u1;
     processed = false;
 }
Exemple #16
0
 public PartyGuard(StateMachine stateMachine, WM_party party, float guardTimer)
 {
     this.stateMachine = stateMachine;
     this.party        = party;
     this.guardTimer   = guardTimer;
 }
Exemple #17
0
 public battle(WM_party _u0, WM_party _u1, bool proceeding)
 {
     party0    = _u0;
     party1    = _u1;
     processed = proceeding;
 }