Esempio n. 1
0
    public void OnReceiveUseItemPacket(int node, PacketId id, byte[] data)
    {
        ItemUsePacket packet  = new ItemUsePacket(data);
        ItemUseData   useData = packet.GetPacket();

        Debug.Log("Receive UseItemPacket:" + useData.userId + " -> " +
                  useData.targetId + " (" + useData.itemCategory + ")");

        chrController user = CharacterRoot.getInstance().findPlayer(useData.userId);

        AccountData account_data = AccountManager.get().getAccountData(GlobalParam.getInstance().global_account_id);

        if (user != null && account_data.avator_id != useData.userId)
        {
            Debug.Log("use item. favor:" + useData.itemFavor);

            Item.Favor favor = new Item.Favor();
            favor.category = (Item.CATEGORY)useData.itemCategory;
            this.useItem(-1, favor, useData.userId, useData.targetId, false);
        }
        else
        {
            Debug.Log("Receive packet is already done.");
        }
    }
Esempio n. 2
0
    // 소환수를 소환
    public void             summonBeast(string beast_name)
    {
        do
        {
            if (this.beast != null)
            {
                break;
            }

            if (beast_name == "")
            {
                break;
            }

            string avator_name   = "Beast_" + beast_name;
            string behavior_name = "chrBehaviorBeast_" + beast_name;

            chrController chr = CharacterRoot.getInstance().summonBeast(avator_name, behavior_name);

            if (chr == null)
            {
                break;
            }

            this.beast = chr.behavior;

            this.beast.control.cmdSetPositionAnon(this.getLocalPlayer().control.getPosition() + Vector3.back * 4.0f);

            this.summon_time = 0.0f;

            this.state = SUMMON_STATE.APPEAR;

            //Debug.Log("[CLIENT] Summon beast:" + beast_name);
        } while(false);
    }
Esempio n. 3
0
    public void PickUp(GameObject finder)
    {
        //Show.Log(finder+" picked up "+specificName+"("+typeName+")");
        Game     game = Global.Get <Game>();
        Vector3  p    = transform.position;
        Material mat  = GetComponent <Renderer>().material;

        GameClock.Delay(0, () => {         // make sure object creation happens on the main thread
            FloatyText ft        = FloatyTextManager.Create(p + (Vector3.up * game.maze.tileSize.y * game.maze.wallHeight), kind);
            ft.TmpText.faceColor = mat.color;
        });
        // find which NPC wants this, and make them light up
        ParticleSystem ps = null;
        //Show.Log(specificName+" turns on particle for "+typeName);
        CharacterRoot npc = game.npcCreator.npcs.Find(n => {
            ps = n.GetComponentInChildren <ParticleSystem>();
            //Show.Log(ps.name + " v " + typeName);
            if (ps != null && ps.name == color)
            {
                return(true);
            }
            ps = null;
            return(false);
        });

        if (npc != null && ps != null)
        {
            ps.Play();
        }
    }
Esempio n. 4
0
    // 네트 플레이어 만들기.
    public void             createNetPlayer(int account_global_index)
    {
        chrBehaviorLocal local_player = this.players[0].GetComponent <chrBehaviorLocal>();

        chrBehaviorNet net_player = null;

        int local_index = this.players.Count;

        AccountData account_data = AccountManager.get().getAccountData(account_global_index);

        string avator_name = "Player_" + account_data.avator_id;

        net_player = CharacterRoot.getInstance().createPlayerAsNet(avator_name).GetComponent <chrBehaviorNet>();

        net_player.control.local_index  = local_index;
        net_player.control.global_index = account_global_index;
        net_player.local_player         = local_player;

        net_player.position_in_formation = this.getInFormationOffset(account_global_index);

        SHOT_TYPE shot_type = GlobalParam.get().shot_type[account_global_index];

        net_player.changeBulletShooter(shot_type);

        net_player.transform.Translate(this.getLocalPlayer().control.getPosition() + net_player.position_in_formation);

        this.players.Add(net_player);
    }
Esempio n. 5
0
    public override void initializeMap(GameRoot game_root)
    {
        MapCreator   map_creator   = MapCreator.get();
        PartyControl party_control = PartyControl.get();

        map_creator.setRoomNum(1, 1);

        map_creator.floor_root_go = new GameObject("Floor");

        // 방 만들기.
        RoomController room = map_creator.createRoomFloor(new Map.RoomIndex(0, 0));

        // 더미 방 만들기.
        map_creator.createVacancy(new Map.RoomIndex(0, -1));

        // 방을 구분하는 벽을 만든다.
        map_creator.createRoomWall();

        // 외벽을 만든다.
        map_creator.createOuterWalls();

        GameRoot.get().createLocalPlayer();
        GameRoot.get().createNetPlayers();

        // 플레이어 위치 설정.

        chrBehaviorLocal local_player = PartyControl.get().getLocalPlayer();

        Vector3 playerStartPosition = Vector3.zero;

        local_player.transform.position = playerStartPosition + PartyControl.get().getPositionOffset(local_player.control.global_index);

        for (int i = 0; i < PartyControl.get().getFriendCount(); i++)
        {
            chrBehaviorPlayer friend = PartyControl.get().getFriend(i);

            friend.control.cmdSetPositionAnon(playerStartPosition + PartyControl.get().getPositionOffset(friend.control.global_index));
        }

        party_control.setCurrentRoom(room);

        // ボスの作成.

        chrControllerEnemyBase enemy;

        if (UsesHumanControlForBoss)
        {
            enemy = CharacterRoot.get().createEnemy("Boss1", "chrControllerEnemyBoss", "chrBehaviorEnemyBoss_Human") as chrControllerEnemyBase;
        }
        else
        {
            enemy = CharacterRoot.get().createEnemy("Boss1", "chrControllerEnemyBoss", "chrBehaviorEnemyBoss") as chrControllerEnemyBase;
        }

        enemy.cmdSetPosition(new Vector3(0.0f, 0.0f, 20.0f));

        // 스테이터스 창.

        Navi.get().createStatusWindows();
    }
Esempio n. 6
0
    public void AddToPlayerInventory(InventoryItem ii)
    {
        Vector3  p   = ii.transform.position;
        Material mat = ii.GetComponent <Renderer>().material;

        GameClock.Delay(0, () => {         // make sure object creation happens on the main thread
            FloatyText ft        = FloatyTextManager.Create(p + (Vector3.up * game.maze.tileSize.y * game.maze.wallHeight), mat.name);
            ft.TmpText.faceColor = mat.color;
        });
        // find which NPC wants this, and make them light up
        ParticleSystem ps  = null;
        CharacterRoot  npc = game.npcCreator.npcs.Find(n => {
            ps = n.GetComponentInChildren <ParticleSystem>();
            if (ps.name == mat.name)
            {
                return(true);
            }
            ps = null;
            return(false);
        });

        if (npc != null)
        {
            ps.Play();
        }
    }
Esempio n. 7
0
    // 적 캐릭터 제네레이터를 만든다.
    public chrController    createEnemyLair()
    {
        chrController enemy = CharacterRoot.getInstance().createEnemy("EnemyLairMinato");

        this.enemies.Add(enemy);

        return(enemy);
    }
Esempio n. 8
0
    // 적 캐릭터를 만든다.
    public chrController    createEnemy(string chr_name, string controller_class_name, string behavior_class_name)
    {
        chrController enemy = CharacterRoot.getInstance().createEnemy(chr_name, controller_class_name, behavior_class_name);

        this.enemies.Add(enemy);

        return(enemy);
    }
Esempio n. 9
0
    // 적 캐릭터를 만든다.
    public chrController    createEnemy(string enemy_name)
    {
        chrController enemy = CharacterRoot.getInstance().createEnemy(enemy_name);

        this.enemies.Add(enemy);

        return(enemy);
    }
Esempio n. 10
0
    public void             attack(bool is_local)
    {
        this.is_trigger_attack = true;

        if (is_local)
        {
            CharacterRoot.get().SendAttackData(PartyControl.get().getLocalPlayer().getAcountID(), 1);
        }
    }
Esempio n. 11
0
    public static CharacterRoot     get()
    {
        if (CharacterRoot.instance == null)
        {
            CharacterRoot.instance = GameObject.Find("CharacterRoot").GetComponent <CharacterRoot>();
        }

        return(CharacterRoot.instance);
    }
Esempio n. 12
0
    // ================================================================ //
#if false
    // 적 캐릭터를 만든다.
    public chrController    createEnemy()
    {
        // 일시적으로 항구 버전の적 캐릭터를 생성하도록 변경.
//		chrController	enemy = CharacterRoot.getInstance().createEnemy("Enemy1");
        chrController enemy = CharacterRoot.getInstance().createEnemy("EnemyMinato");

        this.enemies.Add(enemy);

        return(enemy);
    }
Esempio n. 13
0
    // 레벨 시작 시에 호출.
    public override void            start()
    {
        this.player  = PartyControl.get().getLocalPlayer();
        this.kabusan = CharacterRoot.get().findCharacter <chrBehaviorKabu>("NPC_Kabu_San");

        // 스포트 라이트.
        this.spotlight_player  = this.spotlight_prefab.instantiate();
        this.spotlight_kabusan = this.spotlight_kabusan_prefab.instantiate();

        this.spotlight_items = new GameObject[2];
        for (int i = 0; i < 2; i++)
        {
            this.spotlight_items[i] = this.spotlight_prefab.instantiate();
        }
        this.spotlight_items[0].setPosition(WeaponSelectMapInitializer.getNegiItemPosition().Y(4.0f));
        this.spotlight_items[1].setPosition(WeaponSelectMapInitializer.getYuzuItemPosition().Y(4.0f));

        this.spotlight_key = this.spotlight_key_prefab.instantiate();
        this.spotlight_key.SetActive(false);

        // 플래그 - 각 플레이어의 선택이 끝났는가?.

        this.select_done_players = new bool[NetConfig.PLAYER_MAX];

        for (int i = 0; i < this.select_done_players.Length; i++)
        {
            if (GameRoot.get().isConnected(i))
            {
                this.select_done_players[i] = false;
            }
            else
            {
                // 참가하지 않은 플레이어는 '선택완료'로 해 둔다.
                this.select_done_players[i] = true;
            }
        }

        // 다른 플레이어의 상황을 나타내는 아이콘 생성하다.
        this.create_selecting_icons();

        // Network 클래스의 컴포넌트를 획득.
        GameObject obj = GameObject.Find("Network");

        if (obj != null)
        {
            this.m_network = obj.GetComponent <Network>();

            if (this.m_network != null)
            {
                m_network.RegisterReceiveNotification(PacketId.GameSyncInfo, OnReceiveSyncPacket);
            }
        }

        this.step.set_next(STEP.DEMO0);
    }
Esempio n. 14
0
    // 진행 방향으로 돌아 EnemyBullet을 발사한다.
    public void     shootBullet()
    {
        GameObject go = GameObject.Instantiate(CharacterRoot.get().enemy_bullet_prefab) as GameObject;

        go.transform.position = this.transform.TransformPoint(new Vector3(0.0f, 0.25f, 1.0f));
        go.transform.rotation = Quaternion.AngleAxis(this.control.getDirection(), Vector3.up);

        EnemyBulletControl bullet = go.GetComponent <EnemyBulletControl>();

        bullet.owner = this.control;
    }
Esempio n. 15
0
    // 게임 시작 시에 한 번만 호출됩니다.
    public override void    start()
    {
        this.chr_dog = CharacterRoot.get().findCharacter <chrBehaviorNPC_Dog>("Dog");

        this.chr_dog.setItemWan(this);

        this.controll.setBillboard(true);
        this.controll.cmdSetVisible(false);

        this.step.set_next(STEP.READY);
    }
Esempio n. 16
0
    // 이벤트 시작.
    public override void            start()
    {
        this.player = PartyControl.get().getLocalPlayer();
        this.player.beginOuterControll();

        this.kabu_san = CharacterRoot.get().findCharacter <chrBehaviorKabu>("NPC_Kabu_San");

        CameraControl.get().beginOuterControll();

        this.step.set_next(STEP.START);
    }
Esempio n. 17
0
    void    Update()
    {
        // ---------------------------------------------------------------- //
        // 다음 상태로 이행할지 체크합니다.

        switch (this.step.do_transition())
        {
        case STEP.DISPATCH:
        {
            if (this.selection != SELECTION.NONE)
            {
                this.step.set_next(STEP.SELECTED);
            }
        }
        break;
        }

        // ---------------------------------------------------------------- //
        // 상태가 전환했을 때의 초기화.

        while (this.step.get_next() != STEP.NONE)
        {
            switch (this.step.do_initialize())
            {
            case STEP.DISPATCH:
            {
                this.selection = SELECTION.NONE;

                CharacterRoot.get().getGameInput().appendForbiddenArea(this.input_forbidden_area);
            }
            break;

            case STEP.CLOSE:
            {
                CharacterRoot.get().getGameInput().removeForbiddenArea(this.input_forbidden_area);
                this.step.set_next(STEP.IDLE);
            }
            break;
            }
        }

        // ---------------------------------------------------------------- //
        // 각 상태에서의 실행 처리.

        switch (this.step.do_execution(Time.deltaTime))
        {
        case STEP.IDLE:
        {
        }
        break;
        }
    }
Esempio n. 18
0
 public void SetSelection(CharacterRoot character)
 {
     selection.ForEach(f => {
         f.ShowPath(false);
         ShowSelectedVisual(f.gameObject, false);
     });
     selection.Clear();
     if (character != null)
     {
         selection.Add(c2m.Follower(character.move));
     }
     ResetSelectionVisual();
 }
Esempio n. 19
0
    // 進行方向へ向けて EnemyBullet を発射する
    public void PerformFire()
    {
        GameObject go = GameObject.Instantiate(CharacterRoot.getInstance().enemy_bullet_prefab) as GameObject;

        go.transform.position = this.transform.TransformPoint(new Vector3(0.0f, 0.25f, 1.0f));
        go.transform.rotation = Quaternion.AngleAxis(this.getDirection(), Vector3.up);

        EnemyBulletControl bullet = go.GetComponent <EnemyBulletControl>();

        bullet.owner = this;

        // 弾丸の発射待ち
        this.refireDelayTimer = refireDelayTime;
    }
Esempio n. 20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="name">The Characters name</param>
        /// <param name="characterOptions">What characteroptions should be set (enum)</param>
        /// <param name="realm"></param>
        /// <returns>CharacterRoot object</returns>
        public CharacterRoot GetCharacter(string name, CharacterOptions characterOptions, string realm)
        {
            var character = new CharacterRoot();

            var url = string.Format(@"{0}/wow/character/{1}/{2}?locale={3}{4}&apikey={5}",
                                    _Host,
                                    realm,
                                    name,
                                    _Locale,
                                    CharacterFields.BuildOptionalFields(characterOptions),
                                    _APIKey);

            character = json.GetDataFromURL <CharacterRoot>(url);

            return(character);
        }
Esempio n. 21
0
    // 보스 사망 정보 수신 함수.
    public void OnReceiveBossDeadPacket(int node, PacketId id, byte[] data)
    {
        BossDeadPacket packet = new BossDeadPacket(data);
        BossDead       dead   = packet.GetPacket();

        chrBehaviorEnemyBoss behavior = CharacterRoot.get().findCharacter <chrBehaviorEnemyBoss>(dead.bossId);

        if (behavior == null)
        {
            return;
        }

        behavior.dead();

        Debug.Log("Receive boss dead packet");
    }
Esempio n. 22
0
    protected void          create_debug_window()
    {
        var window = dbwin.root().createWindow("query");

        window.createButton("줍는다")
        .setOnPress(() =>
        {
            chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local);

            player.controll.cmdItemQueryPick("Tarai");
        });

        window.createButton("버린다")
        .setOnPress(() =>
        {
            chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local);

            player.controll.cmdItemQueryDrop();
        });

        window.createButton("말풍선")
        .setOnPress(() =>
        {
            //chrBehaviorLocal	player = CharacterRoot.get().findCharacter<chrBehaviorLocal>(GameRoot.getInstance().account_name_local);
            chrBehaviorNet player = CharacterRoot.get().findCharacter <chrBehaviorNet>("Daizuya");

            player.controll.cmdQueryTalk("멀리 있는 사람과 Talk한다", true);
        });

        window.createButton("이사 시작")
        .setOnPress(() =>
        {
            chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local);
            //chrBehaviorNet		player = CharacterRoot.get().findCharacter<chrBehaviorNet>(GameRoot.getInstance().account_name_net);

            player.controll.cmdQueryHouseMoveStart("House1");
        });

        window.createButton("이사 끝")
        .setOnPress(() =>
        {
            chrBehaviorLocal player = CharacterRoot.get().findCharacter <chrBehaviorLocal>(GameRoot.getInstance().account_name_local);
            //chrBehaviorNet		player = CharacterRoot.get().findCharacter<chrBehaviorNet>(GameRoot.getInstance().account_name_net);

            player.controll.cmdQueryHouseMoveEnd();
        });
    }
Esempio n. 23
0
    public void     OnReceiveCharacterPacket(PacketId id, byte[] data)
    {
        CharacterDataPacket packet   = new CharacterDataPacket(data);
        CharacterData       charData = packet.GetPacket();

        if (GlobalParam.get().is_in_my_home != GlobalParam.get().is_remote_in_my_home)
        {
            return;
        }

        chrBehaviorNet remote = CharacterRoot.get().findCharacter <chrBehaviorNet>(charData.characterId);

        if (remote != null)
        {
            remote.CalcCoordinates(charData.index, charData.coordinates);
        }
    }
Esempio n. 24
0
    // 캐릭터를 만듭니다.
    protected void          create_character(string[] words, string local_account, string net_account, bool create_npc)
    {
        string chr_name = words[0];

        chr_name = chr_name.Remove(0, "ChrModel_".Length);

        chrController chr = null;
        Vector3       pos;
        float         direction;

        if (chr_name == local_account)
        {
            chr = CharacterRoot.getInstance().createPlayerAsLocal(chr_name);
        }
        else if (chr_name == net_account)
        {
            if (create_npc)
            {
                chr = CharacterRoot.getInstance().createPlayerAsNet(chr_name);
            }
        }
        else
        {
            chr = CharacterRoot.getInstance().createNPC(chr_name);
        }

        if (chr != null)
        {
            pos.x = float.Parse(words[1]);
            pos.y = 0.0f;
            pos.z = float.Parse(words[2]);

            if (words.Length >= 4)
            {
                direction = float.Parse(words[3]);
            }
            else
            {
                direction = 0.0f;
            }

            chr.cmdSetPosition(pos);
            chr.cmdSetDirection(direction);
        }
    }
Esempio n. 25
0
    // 쿼리 대화(말풍선).
    public QueryTalk        cmdQueryTalk(string words, bool local = false)
    {
        QueryTalk query = null;

        do
        {
            query = CharacterRoot.get().queryTalk(words, local);

            if (query == null)
            {
                break;
            }

            this.queries.Add(query);
        } while(false);

        return(query);
    }
Esempio n. 26
0
    // 쿼리 이사를 시작해도 되는가?.
    public QueryHouseMoveStart      cmdQueryHouseMoveStart(string house_name, bool local = true)
    {
        QueryHouseMoveStart query = null;

        do
        {
            query = CharacterRoot.get().queryHouseMoveStart(house_name, local);

            if (query == null)
            {
                break;
            }

            this.queries.Add(query);
        } while(false);

        return(query);
    }
Esempio n. 27
0
    // 쿼리 이사를 마쳐도 되는가?.
    public QueryHouseMoveEnd        cmdQueryHouseMoveEnd(bool local = true)
    {
        QueryHouseMoveEnd query = null;

        do
        {
            query = CharacterRoot.get().queryHouseMoveEnd(local);

            if (query == null)
            {
                break;
            }

            this.queries.Add(query);
        } while(false);

        return(query);
    }
Esempio n. 28
0
        /// <summary>
        /// Gets data about a character.
        /// </summary>
        /// <param name="name">The Characters name.</param>
        /// <param name="characterOptions">What characteroptions should be set (enum).</param>
        /// <param name="realm">The realm this character exists on.</param>
        /// <returns>CharacterRoot object</returns>
        public async Task <CharacterRoot> GetCharacterAsync(string name, CharacterOptions characterOptions, string realm)
        {
            var character = new CharacterRoot();

            var url =
                string.Format(
                    @"{0}/wow/character/{1}/{2}?locale={3}{4}&apikey={5}",
                    _Host,
                    realm,
                    name,
                    _Locale,
                    CharacterFields.BuildOptionalFields(characterOptions),
                    _APIKey);

            character = await this.jsonUtility.GetDataFromURLAsync <CharacterRoot>(url);

            return(character);
        }
 public void Toggle()
 {
     if (characterMoveProxy.Target == self)
     {
         characterMoveProxy.Target = previous;
         _camera.LerpTarget(previous.transform);
         _camera.LerpView("user");
     }
     else
     {
         previous                  = characterMoveProxy.Target;
         transform.position        = (previous.move.head ? previous.move.head:previous.transform).position;
         characterMoveProxy.Target = self;
         _camera.LerpTo(view);
         clickToMove.SetFollower(previous.move);
         i3dui.triggerArea.transform.SetParent(previous.transform);
         i3dui.triggerArea.transform.localPosition = Vector3.zero;
     }
 }
Esempio n. 30
0
    public void SetCharacter(GameObject obj)
    {
        if (moveProxy != null)
        {
            //Debug.Log("Switching from " + moveProxy.Target);
            if (moveProxy.Target != null)
            {
                Interact3dItem i3i = moveProxy.Target.GetComponent <Interact3dItem>();
                if (i3i != null)
                {
                    i3i.showing = true;
                }
            }
        }
        CharacterRoot cm = obj.GetComponent <CharacterRoot>();

        if (moveProxy.Target != fourthPersonControl.GetMover())
        {
            cam.target       = cm != null && cm.move.head != null ? cm.move.head : obj.transform;
            moveProxy.Target = cm;
        }
        if (cm != null)
        {
            cm.move.move.orientationTransform = cam.transform;
        }
        clickToMove.SetFollower(cm.move);
        Transform t = localPlayerInterfaceObject.transform;

        Interact3dUi.TriggerArea ta = t.GetComponent <Interact3dUi.TriggerArea>();
        ta.Blink();
        t.SetParent(obj.transform);
        t.localPosition = Vector3.zero;
        t.localRotation = Quaternion.identity;
        // TODO if the Interact3dItem is up, disable it.
        if (moveProxy != null)
        {
            Interact3dItem i3i = moveProxy.GetComponent <Interact3dItem>();
            if (i3i != null)
            {
                i3i.showing = false;
            }
        }
    }