Exemplo n.º 1
0
    public void OnSpriteMouseDown(GameObject spriteObj)
    {
        if (!levelActive)
        {
            return;
        }

        heldSpriteTossable = spriteObj.GetComponent <SpriteTossable>();
        grabPosLocal       = heldSpriteTossable.transform.localPosition; // maintain copy of character's position where grabbed, relative to the boat

        if (heldSpriteTossable is CharBase)
        {
            heldChar = spriteObj.GetComponent <CharBase>();
        }
        else
        {
            heldChar = null;
        }

        // Bring character to focus, in front of everything.
        heldSpriteTossable.SortCompLayerChange(Consts.DrawLayers.FrontOfLevel3, null);

        holdWeight.CurrentValue = heldSpriteTossable.Weight;
        uiUpdate.RaiseEvent();

        spriteMouseRespScpt.SetActive(true);
    }
Exemplo n.º 2
0
    public virtual void EndAction()
    {
        taskCounter       = taskInterval = 0;
        timerBar.IsActive = false;
        IsCancelBtnActive = false;


        if (activeChar != null)
        {
            activeChar.SetStateDazed(false);
            activeChar.ReturnToNeutral();
            activeChar = null;
        }

        if (CharState != Consts.CharState.Saved)
        {
            CharState = Consts.CharState.Default;

            if (!Airborne)
            {
                AnimTrigger("Idle");
            }

            actHold = false;
        }

        activeSkill = Consts.Skills.None;
    }
Exemplo n.º 3
0
    public bool TryRelease(CharBase chara)
    {
        if (chara == character)
        {
            character = null;
            return(true);
        }

        return(false);
    }
Exemplo n.º 4
0
    public bool TryOccupy(CharBase c)
    {
        if (CanWalkWithChar || IsOccupant(c))
        {
            character = c;
            return(true);
        }

        c.CheckAndResolveDeadlock(character);
        return(false);
    }
    public bool Cling(CharBase character)
    {
        if (clingPoints.Count < 1)
        {
            return(false);
        }

        // TODO: Determine which of the available points the character is closest to, and use/remove that one.
        character.transform.position = clingPoints[0].position;
        clingPoints.RemoveAt(0);
        return(true);
    }
Exemplo n.º 6
0
 public void RemoveCharacter(CharBase character)
 {
     charsInPlay.Remove(character);
     if (character is CharChild)
     {
         children.Remove(character as CharChild);
         numChildren--;
     }
     else
     {
         numElders--;
     }
 }
Exemplo n.º 7
0
    public Enemy GetNearestEnemy(CharBase c)
    {
        Enemy e       = null;
        float closest = Mathf.Infinity;

        foreach (var en in chars)
        {
            var m = (en.Value.transform.position - c.transform.position).magnitude;
            if (!e || m < closest)
            {
                closest = m;
                e       = en.Value;
            }
        }

        return(e);
    }
Exemplo n.º 8
0
    // 取得玩家隊伍資料
    void SetPlayerTeamData()
    {
        if (playerTeam != null)
        {
            playerTeam.Clear();
        }

        // official
        PlayerData playerData      = (PlayerData)PlayerDataManager.instance.Load("playerdata", typeof(PlayerData));
        int        teamMemberCount = playerData.teamData;

        for (int i = 1; i <= teamMemberCount; i++)
        {
            string    dataPath  = "character" + i;
            Character character = (Character)PlayerDataManager.instance.Load(dataPath, typeof(Character));
            CharBase  chb       = new CharBase();
            chb.currentHP  = character.equipHP;
            chb.currentAtk = character.equipAtk;
            chb.currentDef = character.equipDef;
            playerTeam.Add(chb);
        }

        // test
//        Character chr = new Character();
//        chr.chrName = "Henry";
//		chr.currentHP = 300;
//		chr.currentAtk = 6;
//		chr.currentDef = 2;
//        playerTeam.Add(chr);
//        chr = new Character();
//        chr.chrName = "Davis";
//        chr.currentHP = 200;
//		chr.currentAtk = 7;
//		chr.currentDef = 1;
//        playerTeam.Add(chr);
//        chr = new Character();
//        chr.chrName = "Woody";
//		chr.currentHP = 350;
//		chr.currentAtk = 4;
//		chr.currentDef = 4;
//        playerTeam.Add(chr);

        playerTeam = playerTeam.OrderBy(val => val.currentHP).ToList();
    }
Exemplo n.º 9
0
    public Char(CharBase charBase, int clevel)
    {
        Base      = charBase;
        Level     = clevel;
        CurrentHP = MaxHP;
        CurrentMP = MaxMP;

        Moves = new List <CharMove>();
        foreach (var move in Base.LearnableMoves)
        {
            if (move.Level <= Level)
            {
                Moves.Add(new CharMove(move.Base));
            }
            if (Moves.Count >= 99)
            {
                break;
            }
        }
    }
Exemplo n.º 10
0
    public void HeldSpriteToss()
    {
        spriteMouseRespScpt.SetActive(false);

        // TODO: Top out the toss speed to something not TOO unreasonable
        //Vector2 tossDir = mouseDelta.normalized;
        float tossSpeed = mouseDelta.magnitude / Time.deltaTime;


        if (heldSpriteTossable is ItemBase)
        {
            RemoveItem(heldSpriteTossable as ItemBase);
            heldSpriteTossable.Toss(mouseDelta * tossSpeed);
        }
        else
        {
            CharBase c = heldSpriteTossable as CharBase;

            // TODO: Character animation still set to Struggling? That's fine for now, but perhaps make something else for when airborne.

            if (c.ItemHeld != null)
            {
                c.ItemHeld.Toss(Utility.AddNoiseDeg(mouseDelta, Consts.TOSS_NOISE_MIN, Consts.TOSS_NOISE_MAX) * tossSpeed);
            }

            c.Toss(mouseDelta * tossSpeed);
        }

        // Change weight in boat
        boat.RemoveLoad(holdWeight.CurrentValue);

        prepTossCalc       = false;
        heldChar           = null;
        heldSpriteTossable = null;

        holdWeight.CurrentValue = 0;
        uiUpdate.RaiseEvent();

        UnPauseLevel();
    }
Exemplo n.º 11
0
    // 根據樓層取得敵人隊伍資料
    void SetEnemyTeamByFloor(int floor)
    {
        if (enemyTeam != null)
        {
            enemyTeam.Clear();
        }

        // test
        for (int i = 0; i < 3; i++)
        {
            Monster mob = new Monster();
            mob.equipHP  = floor * 10 + 5;
            mob.equipAtk = floor * 8 + 2;
            mob.equipDef = floor * 1 + 1;
            CharBase chb = new CharBase();
            chb.currentHP  = mob.equipHP;
            chb.currentAtk = mob.equipAtk;
            chb.currentDef = mob.equipDef;
            enemyTeam.Add(chb);
        }

        enemyTeam = enemyTeam.OrderBy(val => val.currentHP).ToList();
    }
Exemplo n.º 12
0
    public void atkMe(GameObject obj, CharBase src)
    {
        int number = src.getY();

        if (enemies[number].life)
        {
            if (count == 0)
            {
                audioSource.PlayOneShot(atk_sound_me);
                enemies[number].damage(src.getAtk());
                enemies[number].checkLife();
                src.atk_flag           = false;
                obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber());
                src.setY(src.getMyNumber());
                control_bar.reroadBar(charas[0].getHpMaxRate(), charas[1].getHpMaxRate(), charas[2].getHpMaxRate(), enemies[0].getHpMaxRate(), enemies[1].getHpMaxRate(), enemies[2].getHpMaxRate());
            }
            obj.transform.Rotate(0, 0, 18);
        }
        else if (count == 0)
        {
            obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber());
            src.setY(src.getMyNumber());
        }
    }
Exemplo n.º 13
0
    public void moveMe(GameObject obj, CharBase src)
    {
        if (count == 0)
        {
            switch (src.next_rode)
            {
            case 2:
                src.setX(src.getX() + 1);
                break;

            case 3:
                src.setY(src.getY() - 1);
                break;

            case 0:
                src.setX(src.getX() - 1);
                break;

            case 1:
                src.setY(src.getY() + 1);
                break;
            }
            if (src.getX() < 0 || src.getY() < 0 || src.getY() >= 3)
            {
                src.idou = false;
                obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber());
                src.setX(-1);
                src.setY(src.getMyNumber());
            }
            else if (src.getX() >= 5)
            {
                src.idou     = false;
                src.atk_flag = true;
                src.setX(-1);
            }
            else
            {
                int[] able = road[src.getY(), src.getX()].getAble();
                if (able[(src.next_rode + 2) % 4] == 0)
                {
                    src.idou = false;
                    obj.transform.position = new Vector3(-1, 0.5f, src.getMyNumber());
                    src.setX(-1);
                    src.setY(src.getMyNumber());
                }
            }
        }
        if (count == 10)
        {
            src.next_rode = road[src.getY(), src.getX()].getNext((src.next_rode + 2) % 4);
        }

        switch (src.next_rode)
        {
        case 2:
            obj.transform.Translate(0.05f, 0, 0, Space.World);
            break;

        case 3:
            obj.transform.Translate(0, 0, -0.05f, Space.World);
            break;

        case 0:
            obj.transform.Translate(-0.05f, 0, 0, Space.World);
            break;

        case 1:
            obj.transform.Translate(0, 0, 0.05f, Space.World);
            break;
        }
    }
Exemplo n.º 14
0
 public bool IsOccupant(CharBase c)
 {
     return(character == c);
 }
Exemplo n.º 15
0
    public IEnumerator CreatePlayer(NetworkConnection conn)
    {
        yield return(new WaitUntil(() => awaitingConnections.Count > 0));

        List <string> reservedSpawnPoints = new List <string>();
        string        tempSP = "";

        List <Player> pr = new List <Player>();

        foreach (Player p in awaitingConnections)
        {
            pr.Add(p);
            Player player = null;

            for (int i = 0; i < e.Players.Length; i++)
            {
                if (e.Players[i].SpawnPoint != "")
                {
                    reservedSpawnPoints.
                    Add(e.Players[i].SpawnPoint);
                }
                if (p.CID != e.Players[i].CID)
                {
                    continue;
                }
                player = e.Players[i];

                for (int y = 1; y <= 100; y++)
                {
                    tempSP = "SpawnPoint" + player.Side.ToString() + "_" +
                             y.ToString();
                    if (reservedSpawnPoints.Contains(tempSP))
                    {
                        continue;
                    }
                    e.Players[i].SpawnPoint = tempSP;
                    player.SpawnPoint       = tempSP;
                    break;
                }
                break;
            }

            if (player == null)
            {
                continue;
            }

            foreach (PlayerController obj in conn.playerControllers)
            {
                CharBase cbase  = obj.gameObject.GetComponent <CharBase>();
                Health   health = obj.gameObject.GetComponent <Health>();
                //Movement movement = obj.gameObject.GetComponent<Movement>();

                obj.gameObject.name = player.Account_ID;
                cbase.cid           = conn.connectionId;
                health.playerName   = player.PlayerName;
                obj.gameObject.transform.Find("Namebar").Find("Name").
                GetComponent <Text>().text = player.PlayerName;

                // server debug to see the char
                obj.gameObject.transform.Find("DebugServer").gameObject.
                SetActive(true);

                health.selectedSpawnPoint = player.SpawnPoint;
                health.characterID        = player.Character;

                break;
            }
        }

        foreach (Player p in pr)
        {
            awaitingConnections.Remove(p);
        }

        conn.Send(Comm.msgCID, new IntegerMessage(1));


        // notify all clients
        NetworkInstanceId n = new NetworkInstanceId();

        foreach (CharBase cb in FindObjectsOfType <CharBase>())
        {
            if (cb.isMe)
            {
                n = cb.netId;
            }
        }
        Comm.MBChar c = new Comm.MBChar
        {
            connection  = conn.connectionId,
            playerName  = Account.GetUser().Nickname,
            characterID = Match.self.activeEvent.Me.Character,
        };
        NetworkServer.SendToAll(Comm.msgChar, c);
    }
Exemplo n.º 16
0
 public void ConfirmItemSelection(CharBase charToAct, ItemBase item)
 {
     item.RemoveFromChar();
     RemoveItem(item);
 }
Exemplo n.º 17
0
 public void CharKilled(CharBase character)
 {
     charsKilled++;
     RemoveCharacter(character);
     CheckLevelEnd();
 }