Exemplo n.º 1
0
    public void OnReceivePrizeResultPacket(int node, PacketId id, byte[] data)
    {
        PrizeResultPacket packet = new PrizeResultPacket(data);
        PrizeResultData   result = packet.GetPacket();

        Debug.Log("[CLIENT] ReceivePrizeResultPacket");

        for (int i = 0; i < result.cakeDataNum; ++i)
        {
            this.cake_counts[i] = result.cakeNum[i];

            Debug.Log("[CLIENT] Cake num[" + i + "]:" + result.cakeNum[i]);
        }

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

        QueryCakeCount query = QueryManager.get().findQuery <QueryCakeCount>(x => x.account_id == local_player.getAcountID());

        if (query != null)
        {
            Debug.Log("[CLIENT]QueryCakeCount done");
            query.set_done(true);
            query.set_success(true);
        }
    }
Exemplo n.º 2
0
    // 애니메이션으로부터 호출되는 공격 판정의 발생 타이밍.
    public void NotifyImpactLanded()
    {
        this.cmdEnableCollision(true);

        // 충돌판정: 범위 원 안에 있으면 대미지로 한다.
        List <chrBehaviorPlayer> targets = PartyControl.getInstance().getPlayers();

        foreach (var t in targets)
        {
            Vector3 toTarget = t.transform.position - transform.position;
            if (toTarget.magnitude < rangeAttackArea * this.getScale())
            {
                //공격 범위 안에 있으므로 대미지 대상으로 한다.
                if (t.isLocal())
                {
                    t.control.causeDamage(getBehavior().control.vital.getAttackPower(), -1);
                }
                else
                {
                    // 리모트 플레이어에는 대미지를 주지 않는다.
                }
                // 뒤로 날려버린다.
                t.beginBlowOut(this.transform.position, 3.0f * this.getScale());
            }
        }

        // 얀츨영 연기를 많이 만든다.
        for (float degree = 0; degree < 360; degree += 30.0f)
        {
            this.createFootSmoke(degree, 10.0f);
        }
    }
Exemplo n.º 3
0
    // 제네레이터를 찾는다.
    protected chrBehaviorEnemy_Lair         find_lair(string lair_name)
    {
        chrBehaviorEnemy_Lair lair = null;

        do
        {
            RoomController room_control = PartyControl.get().getCurrentRoom();

            Room room = this.rooms[room_control.getIndex().x, room_control.getIndex().z];

            var lairs = room.enemies.FindAll(x => ((x.behavior as chrBehaviorEnemy_Lair) != null));

            if (lairs.Count == 0)
            {
                break;
            }

            var lair_control = lairs.Find(x => (x.name == lair_name));

            if (lair_control == null)
            {
                break;
            }

            lair = lair_control.behavior as chrBehaviorEnemy_Lair;
        } while(false);

        return(lair);
    }
 protected IControler ControlerFactory(string command)
 {
     IControler controler;
     switch (command)
     {
         case "quizme":
             controler = new QuizController();
             break;
         case "help":
         case "h":
         case "-h":
             controler = new HelpControler();
             break;
         case "1":
         case "2":
         case "3":
         case "4":
             controler = new ResponseControl();
             break;
         case "which":
             controler = new PartyControl();
             break;
         default:
             controler = new FallBackControler();
             break;
     }
     return controler;
 }
Exemplo n.º 5
0
    // ================================================================ //
    // 비헤이비어용 커맨드.
    // 쿼리 계.

    // 쿼리 대화(말풍선).
    public QueryTalk        queryTalk(string account_id, string words, bool is_local)
    {
        QueryTalk query = null;

        do
        {
            query = new QueryTalk(account_id, words);

            if (query == null)
            {
                break;
            }

            QueryManager.get().registerQuery(query);


            if (m_network != null && is_local)
            {
                // 말풍선 요청을 보낸다.
                ChatMessage chat = new ChatMessage();

                chat.characterId = PartyControl.get().getLocalPlayer().getAcountID();
                chat.message     = words;

                ChatPacket packet = new ChatPacket(chat);

                int serverNode = m_network.GetServerNode();
                m_network.SendReliable <ChatMessage>(serverNode, packet);
            }
        } while(false);


        return(query);
    }
Exemplo n.º 6
0
    // 게임 시작 시에 한 번만 호출된다.
    public override void    start()
    {
        this.player = PartyControl.get().getLocalPlayer();

        this.camera_control = CameraControl.get();

        // ---------------------------------------------------------------- //

        this.control.rigidbody.isKinematic = true;
        this.control.rigidbody.Sleep();

        this.control.setVisible(false);

        this.hover.gravity     = Physics.gravity.y * 0.1f;
        this.hover.accel_scale = 2.0f;

        this.hover.zero_level     = 3.0f;
        this.hover.hard_limit.max = 100.0f;

        this.radius = 5.0f;

        //

        this.step.set_next(STEP.IDLE);
    }
Exemplo n.º 7
0
 public override void OnControlLoad(object sender, EventArgs e)
 {
     using (PartyControl partyControl = new PartyControl())
     {
         this.Placeholder1.Controls.Add(partyControl);
     }
 }
Exemplo n.º 8
0
    // 삭제 직전에 호출된다.
    public override void            onDelete()
    {
        base.onDelete();

        // 아이템을 생성한다.
        if (this.reward_item.type != "" && this.reward_item.name != "")
        {
            string local_player_id = PartyControl.get().getLocalPlayer().getAcountID();

            ItemManager.get().createItem(this.reward_item.type, this.reward_item.name, local_player_id);
            ItemManager.get().setPositionToItem(this.reward_item.name, this.control.getPosition());

            var item = ItemManager.get().findItem(this.reward_item.name);

            if (item != null)
            {
                item.behavior.setFavorOption(this.reward_item.option0);
                item.behavior.beginSpawn();
            }
        }

        if (this.room != null)
        {
            LevelControl.get().onDeleteEnemy(this.room, this.control);
        }
    }
Exemplo n.º 9
0
    // ?⑥뼱???덈뒗 ?꾩씠??以띻린.
    public ItemController   pickItem(QueryItemPick query, string owner_id, string item_id)
    {
        // ?꾨줈洹몃옩??踰꾧렇瑜?留됯퀬??荑쇰━媛€ ?놁쑝硫?
        // 以띿? 紐삵븯寃??덈떎.

        ItemController item = null;

        do
        {
            // ?쇰떒 荑쇰━??寃곌낵??泥댄겕.
            if (!query.isSuccess())
            {
                break;
            }

            item = this.find_item(item_id);

            if (item == null)
            {
                break;
            }

            item.picker = owner_id;
            item.startPicked();

            if (item_id.StartsWith("key"))
            {
                PartyControl.get().pickKey(item_id, owner_id);
            }
        } while(false);

        return(item);
    }
Exemplo n.º 10
0
    void    Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            //YellDisp	yell = this.createCakeCount(1, 1, 32);

            //yell.setPosition(Vector3.up*64.0f);
            //this.dispatchYell(YELL_WORD.READY);
        }

        if (this.stat_win_local != null)
        {
            this.stat_win_local.setHP(PartyControl.get().getLocalPlayer().control.vital.getHitPoint());
        }

        //

        if (this.stat_wins_net != null)
        {
            for (int i = 0; i < this.stat_wins_net.Length; i++)
            {
                this.stat_wins_net[i].setHP(PartyControl.get().getFriend(i).control.vital.getHitPoint());
            }
        }
    }
Exemplo n.º 11
0
    public void             execute_queries()
    {
        // 조정이 끝난 쿼리를 찾는다.
        List <QueryBase> queries = QueryManager.get().findDoneQuery(this.control.getAccountID());

        foreach (QueryBase query in queries)
        {
            switch (query.getType())
            {
            case "talk":
            {
                Debug.Log("query talk: " + PartyControl.get().getLocalPlayer().getAcountID());

                if (query.isSuccess())
                {
                    QueryTalk query_talk = query as QueryTalk;

                    this.control.cmdDispBalloon(query_talk.words);
                }
                query.set_expired(true);
            }
            break;
            }

            // 용무가 끝났으므로 삭제한다.
            query.set_expired(true);

            if (!query.isSuccess())
            {
                continue;
            }
        }
    }
Exemplo n.º 12
0
    public override void    initialize()
    {
        this.player        = PartyControl.get().getLocalPlayer();
        this.player_weapon = this.player.gameObject.findDescendant("anim_wepon");

        this.data = GameObject.Find("EventDataIceAtari").GetComponent <EventDataIceAtari>();

        // 당첨의 막대 모델.
        this.ice_bar = this.data.prefab_ice_atari_bar.instantiate();

        this.ice_bar.setParent(this.player.gameObject.findDescendant("anim_wrist_R"));
        this.ice_bar.setLocalPosition(new Vector3(-0.056f, -0.086f, 0.039f));
        this.ice_bar.SetActive(false);

        // "!" 말풍선.
        this.sprite_bikkuri = Sprite2DRoot.get().createSprite(this.data.texture_bikkuri, true);
        this.sprite_bikkuri.setVisible(false);

        // 당첨 말풍선.
        this.sprite_atari = Sprite2DRoot.get().createSprite(this.data.texture_atari, true);

        this.sprite_atari.setPosition(new Vector2(0.0f, 150.0f));
        this.sprite_atari.setVisible(false);

        this.sprite_ice_bar = Sprite2DRoot.get().createSprite(this.data.texture_ice_bar, true);
        this.sprite_ice_bar.setVisible(false);
        this.sprite_ice_bar.setMaterial(this.data.material_ice_sprite);

        this.spline = this.data.gameObject.findDescendant("spline_ice").GetComponent <SimpleSplineObject>();
        this.tracer.attach(this.spline.curve);
    }
Exemplo n.º 13
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();
    }
Exemplo n.º 14
0
    // 떨어져 있는 아이템 줍기.
    public ItemController   pickItem(QueryItemPick query, string owner_id, string item_id)
    {
        // 프로그램의 버그를 막고자 쿼리가 없으면.
        // 줍지 못하게 했다.

        ItemController item = null;

        do
        {
            // 일단 쿼리의 결과도 체크.
            if (!query.isSuccess())
            {
                break;
            }

            item = this.find_item(item_id);

            if (item == null)
            {
                break;
            }

            item.picker = owner_id;
            item.startPicked();

            if (item_id.StartsWith("key"))
            {
                PartyControl.get().pickKey(item_id, owner_id);
            }
        } while(false);

        return(item);
    }
Exemplo n.º 15
0
        public override void OnControlLoad(object sender, EventArgs e)
        {
            using (PartyControl partyControl = new PartyControl())
            {
                this.Placeholder1.Controls.Add(partyControl);
            }

            this.InitializeResourceStrings();
        }
Exemplo n.º 16
0
    public static PartyControl      getInstance()
    {
        if (PartyControl.instance == null)
        {
            PartyControl.instance = GameObject.Find("GameRoot").GetComponent <PartyControl>();
        }

        return(PartyControl.instance);
    }
Exemplo n.º 17
0
    public void             attack(bool is_local)
    {
        this.is_trigger_attack = true;

        if (is_local)
        {
            CharacterRoot.get().SendAttackData(PartyControl.get().getLocalPlayer().getAcountID(), 1);
        }
    }
Exemplo n.º 18
0
    public void OnReceiveMovingRoomPacket(int node, PacketId id, byte[] data)
    {
#if false
        RoomPacket packet = new RoomPacket(data);
        MovingRoom room   = packet.GetPacket();

        // 방 이동 커맨드 발행.
        PartyControl.getInstance().cmdMoveRoom(room.keyId);
#endif
    }
Exemplo n.º 19
0
    // 작지할 장소   캐릭터마다 다르다.
    protected Vector3       calc_landing_position(chrBehaviorPlayer player)
    {
        Vector3 position = Vector3.zero;

        position = PartyControl.get().getPositionOffset(player.control.global_index);

        position = Quaternion.AngleAxis(this.door_dir_to_y_angle(this.door.door_dir), Vector3.up) * position;

        return(position);
    }
Exemplo n.º 20
0
    // 애니메이션에서 호출되는 이벤트 퀵 공격이 성공한 순간.
    public void     NotifyQuickAttack_Impact()
    {
        chrBehaviorLocal player = PartyControl.get().getLocalPlayer();

        if (Vector3.Distance(player.control.getPosition(), this.getPosition()) < 6.0f * this.getScale())
        {
            player.control.causeDamage(vital.getAttackPower(), -1);
            player.beginBlowOut(this.getPosition(), 3.0f * this.getScale());
        }
    }
Exemplo n.º 21
0
    void    Update()
    {
        // 플레이어가 주운 것을 목록에서 제외.
        this.cakes.RemoveAll(x => x == null);

        //

        this.create_timer += Time.deltaTime;

        do
        {
            if (!this.is_started)
            {
                break;
            }

            if (this.first_serve > 0)
            {
                if (this.create_timer < 0.5f)
                {
                    break;
                }

                if (this.first_serve == FIRST_SERVE_COUNT)
                {
                    this.set_position   = PartyControl.get().getLocalPlayer().control.getPosition() + new Vector3(0.5f, 0.0f, 0.0f);
                    this.set_position.y = 0.0f;
                }
                else
                {
                    this.calc_next_set_position();
                }
                this.first_serve--;
            }
            else
            {
                if (this.create_timer < 0.3f)
                {
                    break;
                }
                if (this.cakes.Count > 30)
                {
                    break;
                }

                this.calc_next_set_position();
            }

            //

            this.create_cakes(this.set_position);

            this.create_timer = 0.0f;
        } while(false);
    }
Exemplo n.º 22
0
    // 트리거에 충돌한 순간만 호출되는 메소드.
    void    OnTriggerEnter(Collider other)
    {
        // 이벤트 박스에 들어간 플레이어를 리스트에 추가한다.
        do
        {
            if (other.tag != "Player")
            {
                break;
            }

            chrController player = other.gameObject.GetComponent <chrController>();

            if (player == null)
            {
                break;
            }

            if (player.local_index < 0)
            {
                break;
            }

            if (this.entered_players.Contains(player.local_index))
            {
                break;
            }

            this.entered_players.Add(player.local_index);

            // 게임 서버에 알림.
            if (this.step.get_current() == STEP.WAIT_ENTER &&
                player.global_index == GlobalParam.get().global_account_id)
            {
                CharDoorState door = new CharDoorState();
                door.globalId    = player.global_index;
                door.keyId       = (this.keyItemName != null)? this.keyItemName : "NONE";
                door.isInTrigger = true;
                door.hasKey      = (this.keyItemName != null)? PartyControl.getInstance().hasKey(player.local_index, door.keyId) : true;

                string log = "DoorId:" + door.keyId + " trigger:" + door.isInTrigger + " hasKey:" + door.hasKey;
                Debug.Log(log);

                DoorPacket packet = new DoorPacket(door);
                if (m_network != null)
                {
                    int server_node = m_network.GetServerNode();
                    m_network.SendReliable <CharDoorState>(server_node, packet);
                }
                else
                {
                    PartyControl.get().cmdMoveRoom(door.keyId);
                }
            }
        } while(false);
    }
Exemplo n.º 23
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);
    }
Exemplo n.º 24
0
        public override void    execute()
        {
            if (this.finish_child())
            {
                this.step.set_next(STEP.BOTTACHI);
            }

            // ---------------------------------------------------------------- //
            // 다음 상태로 이동할지 체크합니다.

            switch (this.step.do_transition())
            {
            // 서있기.
            case STEP.BOTTACHI:
            {
                chrBehaviorLocal player = PartyControl.get().getLocalPlayer();

                if (this.behavior.isInAttackRange(player.control))
                {
                    this.push(this.melee_attack);
                    this.step.sleep();
                }
            }
            break;
            }

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

            while (this.step.get_next() != STEP.NONE)
            {
                switch (this.step.do_initialize())
                {
                case STEP.BOTTACHI:
                {
                }
                break;
                }
            }

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

            switch (this.step.do_execution(Time.deltaTime))
            {
            case STEP.BOTTACHI:
            {
            }
            break;
            }

            // ---------------------------------------------------------------- //

            this.execute_child();
        }
Exemplo n.º 25
0
    // 플로어 키가 위에서 내려온다.
    protected void create_floor_key()
    {
        this.key_instance_name = key_item_name + "." + this.player.getAcountID();

        ItemManager.get().createItem(key_item_name, this.key_instance_name, PartyControl.get().getLocalPlayer().getAcountID());
        ItemManager.get().setPositionToItem(this.key_instance_name, WeaponSelectLevelSequence.getKeyStayPosition());

        ItemController item_key = ItemManager.get().findItem(this.key_instance_name);

        item_key.behavior.beginFall();
    }
Exemplo n.º 26
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);
    }
Exemplo n.º 27
0
    //========================================================================

    // 보스가 싸우는 플레이어 리스트를 가져온다.
    protected void initializeTargetPlayers()
    {
        // 계정 이름으로 ABC순으로 정렬해 둔다.
        targetPlayers = new List <chrBehaviorPlayer>(PartyControl.getInstance().getPlayers());
        targetPlayers.Sort((a, b) => string.CompareOrdinal(a.name, b.name));

        indexOfTargets = 0;

        // 노릴 플레이어를 결정한다. ABC 정렬 전의 선두 계정 이름을 가진 플레이어가 최초의 표적이 된다.
        focus = targetPlayers[indexOfTargets];
    }
Exemplo n.º 28
0
    // ================================================================ //

    // 공격할 플레이어를 선택한다.
    public chrBehaviorPlayer        selectTargetPlayer(float distance_limit, float angle_limit)
    {
        chrBehaviorPlayer target = null;

        // 공격 가능 범위에서 가장 가깝고 정면에 있는 플레이어를.
        // 찾는다.

        var players = PartyControl.get().getPlayers();

        float min_score = -1.0f;

        foreach (var player in players)
        {
            // 거리를 조사한다.

            float distance = (this.control.getPosition() - player.control.getPosition()).Y(0.0f).magnitude;

            if (distance >= distance_limit)
            {
                continue;
            }

            // 정면에서 어느 정도 방향이 어긋나는가?.

            float angle = MathUtility.calcDirection(this.control.getPosition(), player.control.getPosition());

            angle = Mathf.Abs(MathUtility.snormDegree(angle - this.control.getDirection()));

            if (angle >= angle_limit)
            {
                continue;
            }

            //

            float score = distance * MathUtility.remap(0.0f, angle_limit, angle, 1.0f, 2.0f);

            if (target == null)
            {
                target    = player;
                min_score = score;
            }
            else
            {
                if (score < min_score)
                {
                    target    = player;
                    min_score = score;
                }
            }
        }

        return(target);
    }
Exemplo n.º 29
0
    // 스테이터스 창을 만든다.
    public void             createStatusWindows()
    {
        int local_gindex = PartyControl.get().getLocalPlayer().control.global_index;

        int friend_count = PartyControl.get().getFriendCount();

        int[] friend_gindex = new int[friend_count];

        for (int i = 0; i < friend_count; i++)
        {
            friend_gindex[i] = PartyControl.get().getFriend(i).control.global_index;
        }

        // 스테이터스 창   로컬 플레이어용.

        GameObject go;

        go = GameObject.Instantiate(this.status_window_local_prefab) as GameObject;

        this.stat_win_local = go.GetComponent <StatusWindowLocal>();

        this.stat_win_local.face_icon_texture    = this.face_icon_textures[local_gindex];
        this.stat_win_local.cookie_icon_textures = this.cookie_icon_textures;
        this.stat_win_local.number_textures      = this.number_textures;
        this.stat_win_local.lace_texture         = this.lace_texture;
        this.stat_win_local.create();
        this.stat_win_local.setPosition(new Vector2(640.0f / 2.0f - 70.0f, 480.0f / 2.0f - 70.0f));

        // 스테이터스 창 리포트 플레이어용.


        this.stat_wins_net = new StatusWindowNet[friend_count];

        Vector2 position = new Vector2(640.0f / 2.0f - 60.0f, 60.0f);

        for (int i = 0; i < friend_count; i++)
        {
            go = GameObject.Instantiate(this.status_window_net_prefab) as GameObject;

            StatusWindowNet stat_win_net = go.GetComponent <StatusWindowNet>();

            stat_win_net.face_icon_texture    = this.face_icon_textures[friend_gindex[i]];
            stat_win_net.cookie_icon_textures = this.cookie_icon_textures;
            stat_win_net.lace_texture         = this.lace_texture;
            stat_win_net.create();

            stat_win_net.setPosition(position);

            this.stat_wins_net[i] = stat_win_net;

            position.y -= 96.0f;
        }
    }
Exemplo n.º 30
0
    void    Update()
    {
        // ---------------------------------------------------------------- //

        if (this.player == null)
        {
            this.player = PartyControl.getInstance().getLocalPlayer();
        }

        // ---------------------------------------------------------------- //

        // 아이템 아이콘(슬롯)을 클릭했을 때.
        if (this.clicked_slot >= 0)
        {
            GameInput gi = GameInput.getInstance();

            if (gi.pointing.trigger_off)
            {
                do
                {
                    // 아이템 사용 중.
                    if (this.player.step.get_next() == chrBehaviorLocal.STEP.USE_ITEM)
                    {
                        break;
                    }

                    Item.Slot slot = this.player.item_slot.miscs[this.clicked_slot];

                    if (slot.favor == null)
                    {
                        break;
                    }

                    // 사용 중인 아이템(조작은 할 수 있게 됐지만 슬롯에서는 아직.
                    // 삭제되지 않은 때).
                    if (slot.is_using)
                    {
                        break;
                    }

                    this.player.control.cmdUseItemSelf(this.clicked_slot, slot.favor, true);

                    SoundManager.getInstance().playSE(Sound.ID.DDG_SE_SYS03);
                } while(false);

                this.clicked_slot = -1;
            }
        }
    }
Exemplo n.º 31
0
    // 트리거로부터 뭔가가 부딪힌 순간만 호출되는 메소드.
    void    OnTriggerExit(Collider other)
    {
        // 이벤트 박스에서 나온 플레이어를 리스트에서 제거.
        do
        {
            if (other.tag != "Player")
            {
                break;
            }

            chrController player = other.gameObject.GetComponent <chrController>();

            if (player == null)
            {
                break;
            }

            if (!this.entered_players.Contains(player.local_index))
            {
                break;
            }

            this.entered_players.Remove(player.local_index);

            // 게임 서버에 알림.
            if (player.global_index == GlobalParam.get().global_account_id)
            {
                CharDoorState door = new CharDoorState();
                door.globalId    = player.global_index;
                door.keyId       = (this.keyItemName != null)? this.keyItemName : "NONE";
                door.isInTrigger = false;
                door.hasKey      = PartyControl.getInstance().hasKey(player.local_index, door.keyId);

                string log = "DoorId:" + door.keyId + " trigger:" + door.isInTrigger + " hasKey:" + door.hasKey;
                Debug.Log(log);

                DoorPacket packet = new DoorPacket(door);
                if (m_network != null)
                {
                    int serer_node = m_network.GetServerNode();
                    m_network.SendReliable <CharDoorState>(serer_node, packet);
                }
                else
                {
                    PartyControl.get().clearDoorState(door.keyId);
                }
            }
        } while(false);
    }
Exemplo n.º 32
0
	public static PartyControl	getInstance()
	{
		if(PartyControl.instance == null) {

			PartyControl.instance = GameObject.Find("GameRoot").GetComponent<PartyControl>();
		}

		return(PartyControl.instance);
	}