Example #1
0
        public void SpawnMonster(Monster.Info monsterInfo, int playerID, HouseInfo houseInfo)
        {
            //var houseHeight = houseInfo.gameObject.GetComponent<>
            var objPrefab = GetMonsterObject(monsterInfo.IDStr);
            var obj       = Instantiate(objPrefab, _monsterListObject.transform);
            var mob       = obj.GetComponent <Monster.Monster>();
            var offset    = (playerID == Manager.DEFAULT_PLAYER_ID) ? 1 : -1;

            mob.SetInfo(playerID, houseInfo.RealHP, houseInfo.RealAttack, houseInfo.RealSpeed).Initialize();
            var newPos = houseInfo.transform.position + offset * new Vector3(4, 0, 0);

            mob.transform.position = newPos;
            var newLocPos = mob.transform.localPosition;

            newLocPos.y  = 0;
            newLocPos.z -= 5f;
            mob.transform.localPosition = newLocPos;
            //
            // Bind to Rival's player event
            mob.OnMonsterKilled += _players[1 - playerID].OnRivalMonsterKilled;

            if (playerID == Manager.DEFAULT_PLAYER_ID)
            {
                mob.Direction = Direction.Right;
            }
            else
            {
                mob.Direction = Direction.Left;
            }

            mob.Walk();
        }
Example #2
0
    public void CreateMonster(MapInfo.Monster data)
    {
        Monster.Info info = Game.Database.GetMonsterInfo(data.id);

        GameObject go = Game.Database.LoadResource("Roles/" + info.model);

        go.name = info.name.ToString();
        go.transform.SetParent(m_npcRoot);

        CharacterController cc = go.AddComponent <CharacterController>();

        cc.center = new Vector3(0, 1, 0);

        float scale = info.scaling;

        go.transform.localScale = new Vector3(scale, scale, scale);
        data.pos.CopyTo(go.transform);

        Role role = go.AddComponent <Role>();

        role.team        = Role.Team.Red;
        role.m_MoveSpeed = 0.5f;
        role.hp          = info.hp;
        role.atk         = info.atk;
        role.def         = info.def;
        role.exp         = info.exp;

        go.AddComponent <ZakoAI>();
        Monster monster = go.AddComponent <Monster>();

        monster.m_id = data.id;

        m_roles.Add(role);
    }
        private void BindButtonEvent()
        {
            var player = _scene.GetPlayerAt(Manager.DEFAULT_PLAYER_ID);

            System.Action noMoneyMsg = () => new DialogBuilder().SetContent("你沒錢┐( ̄ヘ ̄)┌").Show(_scene.Window);
            System.Action <System.Action> doActionOrShowErrMsg = (System.Action a) =>
            {
                try
                {
                    a();
                }
                catch (System.Exception e)
                {
                    new DialogBuilder()
                    .SetIcon(Dialog.Icon.Error)
                    .SetTitle("錯誤")
                    .SetContent(e.Message)
                    .Show(_scene.Window);
                }
            };
            System.Action <HouseInfo> checkInfoAndShow = (houseInfo) =>
            {
                if (houseInfo != null)
                {
                    CloseAllPanel();
                    DisplayInfo(houseInfo);
                }
                else
                {
                    noMoneyMsg.Invoke();
                }
            };
            _buyOK.onClick.AddListener(() =>
            {
                var houseInfo = player.BuyHouse(_scene.MapGridGenerator.CurPoint);
                checkInfoAndShow.Invoke(houseInfo);
            });
            _buyCancel.onClick.AddListener(() => Hide());

            for (int i = 0; i < _selectCard.Length; i++)
            {
                int finalI = i; // Important, if use i, i always equals to _selectCard.Length
                _selectCard[i].Button.onClick.AddListener(() =>
                {
                    var houseInfo = player.SetHouseMonster(_scene.MapGridGenerator.CurPoint, finalI);
                    checkInfoAndShow.Invoke(houseInfo);
                });
                _selectCard[i].OnMouseOver += () =>
                {
                    var          mobID   = player.Info.GetCardIds()[finalI];
                    Monster.Info mobInfo = Manager.Manager.MonsterInfoCollection[mobID];
                    _monsterInfoText.text = $"名稱: {mobInfo.Name}, 價錢: {mobInfo.Cost}";
                    _monsterDescText.text = mobInfo.Description;
                };
                _selectCard[i].OnMouseLeave += () =>
                {
                    _monsterInfoText.text = "";
                    _monsterDescText.text = "";
                };
            }

            _upgAtt.onClick.AddListener(() =>
            {
                checkInfoAndShow.Invoke(
                    player.UpgradeHouse(_scene.MapGridGenerator.CurPoint, HouseInfo.UpgradeType.Attack)
                    );
            });
            _upgHP.onClick.AddListener(() =>
            {
                checkInfoAndShow.Invoke(
                    player.UpgradeHouse(_scene.MapGridGenerator.CurPoint, HouseInfo.UpgradeType.HP)
                    );
            });
            _upgSpeed.onClick.AddListener(() =>
            {
                checkInfoAndShow.Invoke(
                    player.UpgradeHouse(_scene.MapGridGenerator.CurPoint, HouseInfo.UpgradeType.Speed)
                    );
            });
            _disCard.onClick.AddListener(() =>
            {
                var houseInfo = player.DiscardHouseMonster(_scene.MapGridGenerator.CurPoint);
                checkInfoAndShow.Invoke(houseInfo);
            });
            _uniAttBtn.onClick.AddListener(() =>
            {
                doActionOrShowErrMsg(() => player.DoUniqueSkill(Player.Player.UniqueSkill.Attack));
            });
            _uniDefBtn.onClick.AddListener(() =>
            {
                doActionOrShowErrMsg(() => player.DoUniqueSkill(Player.Player.UniqueSkill.Defense));
            });
        }