Пример #1
0
    /// <summary>
    /// GET STRING to READ from Firebase Database
    /// </summary>
    /// <param name="s_RoomData"></param>
    /// <returns></returns>
    private WolfAndSheep_Room_Data Get_GetFromFirebaseDatabase(string s_RoomData)
    {
        WolfAndSheep_Room_Data cs_RoomData = new WolfAndSheep_Room_Data();

        int i_Read = 0;

        for (int i = 0; i < s_RoomData.Length; i++)
        {
            if (s_RoomData[i] == '$')
            {
                i_Read++;
            }
            else
            {
                switch (i_Read)
                {
                case 0:
                    cs_RoomData._Name += s_RoomData[i];
                    break;

                case 1:
                    cs_RoomData._Type += s_RoomData[i];
                    break;

                case 2:
                    cs_RoomData._Ready += s_RoomData[i];
                    break;
                }
            }
        }

        return(cs_RoomData);
    }
Пример #2
0
    //Ready

    /// <summary>
    /// Button READY in Canvas
    /// </summary>
    public void Button_Ready_Canvas()
    {
        WolfAndSheep_Room_Data cs_MyRoomData = new WolfAndSheep_Room_Data();

        if (b_Ready_Me)
        //If READY >> NOT READY
        {
            t_Ready_Button.text = "READY";

            cs_MyRoomData = new WolfAndSheep_Room_Data(
                cl_Firebase.Get_FirebaseAuth_DisplayName(),
                "Sheep",
                "NotReady");
        }
        else
        if (!b_Ready_Me)
        //If NOT READY >> READY
        {
            t_Ready_Button.text = "WAIT";

            cs_MyRoomData = new WolfAndSheep_Room_Data(
                cl_Firebase.Get_FirebaseAuth_DisplayName(),
                "Sheep",
                "Ready");
        }

        b_Ready_Me = !b_Ready_Me;

        cl_Firebase.Set_FirebaseDatabase_Value(
            "_Room" + s_Room + "/" + cl_Firebase.Get_FirebaseAuth_ID(),
            Get_SetToFirebaseDatabase(cs_MyRoomData));
        //_Room$ROOM-NAME/$ID/ROOM-DATA
    }
Пример #3
0
    /// <summary>
    /// Event PLAYER CHANCe STATE
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Event_Player(object sender, ValueChangedEventArgs e)
    {
        int i_IndexID = Get_Index_ID(e.Snapshot.Key);

        if (i_IndexID != -1)
        {
            WolfAndSheep_Room_Data cs_RoomData = Get_GetFromFirebaseDatabase(e.Snapshot.Value.ToString());

            l_Room_Type[i_IndexID]  = cs_RoomData._Type;
            l_Room_Ready[i_IndexID] = cs_RoomData._Ready;

            b_Chance = true;

            if (!b_Wolf)
            {
                if (l_Room_ID[i_IndexID] == cl_Firebase.Get_FirebaseAuth_ID())
                {
                    if (l_Room_Type[i_IndexID] == "Wolf")
                    {
                        b_Wolf = true;
                    }
                }
            }
        }
    }
Пример #4
0
    /// <summary>
    /// Before Start Working
    /// </summary>
    private void Set_Wolf()
    {
        if (b_Wolf)
        //If ME is Wolf
        {
            int i_Sheep = 0;

            for (int i = 0; i < l_Room_ID.Count; i++)
            {
                if (l_Room_Type[i] == "Sheep")
                //If PLAYER is Sheep
                {
                    i_Sheep++;
                    l_Room_Type[i] = "Sheep" + i_Sheep.ToString();
                }

                WolfAndSheep_Room_Data cs_RoomData = new WolfAndSheep_Room_Data(
                    l_Room_Name[i],
                    l_Room_Type[i],
                    l_Room_Ready[i]);

                cl_Firebase.Set_FirebaseDatabase_Value(
                    "_Room" + s_Room + "/" + l_Room_ID[i],
                    Get_SetToFirebaseDatabase(cs_RoomData));
                //_Room$ROOM-NAME/$ID/ROOM-DATA
            }
        }
    }
Пример #5
0
    /// <summary>
    /// Event JOIN ROOM
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Event_Join(object sender, ChildChangedEventArgs e)
    {
        if (e.Snapshot.Key == "_RoomStart")
        {
            return;
        }

        if (e.Snapshot.Key == "_RoomKick")
        {
            return;
        }

        if (b_Wolf)
        //If ME is Wolf
        {
            if (l_Room_ID.Count < i_MAX_PLAYER)
            //If ROOM still EMTY
            {
                l_Room_ID.Add(e.Snapshot.Key);

                WolfAndSheep_Room_Data cs_RoomData = Get_GetFromFirebaseDatabase(e.Snapshot.Value.ToString());

                l_Room_Name.Add(cs_RoomData._Name);
                l_Room_Type.Add(cs_RoomData._Type);
                l_Room_Ready.Add(cs_RoomData._Ready);

                b_Chance = true;

                cl_Firebase.Set_FirebaseEvent_ValueChanged(
                    "_Room" + s_Room + "/" + e.Snapshot.Key, Event_Player);
            }
            else
            //If ROOM is FULL
            {
                cl_Firebase.Set_FirebaseDatabase_Value(
                    "_Room" + s_Room + "/_RoomKick",
                    e.Snapshot.Key);
                //_Room$ROOM-NAME/_RoomKick
            }
        }
        else
        //If ME is Sheep
        {
            l_Room_ID.Add(e.Snapshot.Key);

            WolfAndSheep_Room_Data cs_RoomData = Get_GetFromFirebaseDatabase(e.Snapshot.Value.ToString());

            l_Room_Name.Add(cs_RoomData._Name);
            l_Room_Type.Add(cs_RoomData._Type);
            l_Room_Ready.Add(cs_RoomData._Ready);

            b_Chance = true;

            cl_Firebase.Set_FirebaseEvent_ValueChanged(
                "_Room" + s_Room + "/" + e.Snapshot.Key, Event_Player);
        }
    }
Пример #6
0
    //Work

    /// <summary>
    /// Set ME in Load
    /// </summary>
    private void Set_Me()
    {
        WolfAndSheep_Room_Data cs_MyRoomData = new WolfAndSheep_Room_Data();

        cs_MyRoomData = new WolfAndSheep_Room_Data(
            cl_Firebase.Get_FirebaseAuth_DisplayName(),
            s_Type,
            "Loaded");

        cl_Firebase.Set_FirebaseDatabase_Value(
            "_Game" + s_Room + s_ID + "/" + cl_Firebase.Get_FirebaseAuth_ID(),
            Get_SetToFirebaseDatabase(cs_MyRoomData));
        //_Room$ROOM-NAME/$ID/ROOM-DATA
    }
Пример #7
0
    //Event

    /// <summary>
    /// Event Load
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void Event_Load(object sender, ChildChangedEventArgs e)
    {
        if (e.Snapshot.Key == "_GameTurn")
        {
            return;
        }

        l_Game_ID.Add(e.Snapshot.Key);

        WolfAndSheep_Room_Data cs_RoomData = Get_GetFromFirebaseDatabase(e.Snapshot.Value.ToString());

        l_Game_Name.Add(cs_RoomData._Name);
        l_Game_Type.Add(cs_RoomData._Type);
        l_Game_Load.Add(cs_RoomData._Ready);

        //cl_Firebase.Set_FirebaseEvent_ValueChanged(
        //    "_Room" + s_Room + "/" + e.Snapshot.Key, Event_Player);
    }
Пример #8
0
    /// <summary>
    /// Exit Working
    /// </summary>
    private void Set_Exit()
    {
        if (i_Step != 4)
        {
            if (b_Wolf)
            //If ME is Wolf
            {
                for (int i = 0; i < l_Room_ID.Count; i++)
                {
                    if (l_Room_ID[i] != cl_Firebase.Get_FirebaseAuth_ID())
                    {
                        WolfAndSheep_Room_Data cs_RoomData = new WolfAndSheep_Room_Data();

                        cs_RoomData = new WolfAndSheep_Room_Data(
                            l_Room_Name[i],
                            "Wolf",
                            "Ready");

                        cl_Firebase.Set_FirebaseDatabase_Value(
                            "_Room" + s_Room + "/" + l_Room_ID[i],
                            Get_SetToFirebaseDatabase(cs_RoomData));
                        //_Room$ROOM-NAME/$ID/ROOM-DATA
                        break;
                    }
                }
            }

            if (l_Room_ID.Count > 1)
            {
                cl_Firebase.Set_FirebaseDatabase_Delete(
                    "_Room" + s_Room + "/" + cl_Firebase.Get_FirebaseAuth_ID());
            }
            else
            if (l_Room_ID.Count == 1)
            {
                cl_Firebase.Set_FirebaseDatabase_Delete(
                    "_Room" + s_Room);
            }
        }
    }
Пример #9
0
 /// <summary>
 /// Get STRING to UPDATE on Firebase Database
 /// </summary>
 private string Get_SetToFirebaseDatabase(WolfAndSheep_Room_Data cs_RoomData)
 {
     return(cs_RoomData._Name + "$" + cs_RoomData._Type + "$" + cs_RoomData._Ready);
 }
Пример #10
0
    //Work

    /// <summary>
    /// Working on Step
    /// </summary>
    private void Set_Step()
    {
        switch (i_Step)
        {
        case 0:
            //Step01: Start Room
        {
            WolfAndSheep_Room_Data cs_MyRoomData = new WolfAndSheep_Room_Data();

            if (b_Wolf)
            //If ME is Wolf
            {
                cs_MyRoomData = new WolfAndSheep_Room_Data(
                    cl_Firebase.Get_FirebaseAuth_DisplayName(),
                    "Wolf",
                    "Ready");

                cl_Firebase.Set_FirebaseDatabase_Value(
                    "_Room" + s_Room + "/_RoomStart",
                    "RoomWait");
                //_Room$ROOM-NAME/_RoomStart

                cl_Firebase.Set_FirebaseDatabase_Value(
                    "_Room" + s_Room + "/_RoomKick",
                    "");
                //_Room$ROOM-NAME/_RoomKick
            }
            else
            //If ME is Sheep
            {
                cs_MyRoomData = new WolfAndSheep_Room_Data(
                    cl_Firebase.Get_FirebaseAuth_DisplayName(),
                    "Sheep",
                    "NotReady");
            }

            cl_Firebase.Set_FirebaseDatabase_Value(
                "_Room" + s_Room + "/" + cl_Firebase.Get_FirebaseAuth_ID(),
                Get_SetToFirebaseDatabase(cs_MyRoomData));
            //_Room$ROOM-NAME/$ID/ROOM-DATA

            i_Step = 1;
        }
        break;

        case 1:
            //Step02: Start Event
        {
            cl_Firebase.Set_FirebaseEvent_ChildAdded(
                "_Room" + s_Room,
                Event_Join);
            cl_Firebase.Set_FirebaseEvent_ChildRemoved(
                "_Room" + s_Room,
                Event_Out);
            //_Room$ROOM-NAME/$ID

            cl_Firebase.Set_FirebaseEvent_ValueChanged(
                "_Room" + s_Room + "/_RoomStart",
                Event_Start);
            //_Room$ROOM-NAME/_RoomStart

            cl_Firebase.Set_FirebaseEvent_ValueChanged(
                "_Room" + s_Room + "/_RoomKick",
                Event_Kick);
            //_Room$ROOM-NAME/_RoomKick

            i_Step = 2;
        }
        break;

        case 2:
            //Step03: Working on UI ROOM
        {
            Set_RoomUI();

            if (b_Start_Me)
            //If ME is Wolf and ME Start this Game
            {
                Set_Wolf();
                i_Step = 3;
            }
            if (s_ID != "")
            //If ME is Sheep and get Start Game Message
            {
                i_Step = 4;
            }
        }
        break;

        case 3:
            //Step04: Game Start (Set Message)
        {
            cl_Firebase.Set_FirebaseDatabase_Value(
                "_Room" + s_Room + "/_RoomStart",
                cl_Firebase.Get_FirebaseAuth_ID());
            //_Room$ROOM-NAME/_START-GAME

            i_Step = 4;
        }
        break;

        case 4:
            //Step04: Game Start (Get Message)
        {
            Set_Start();
        }
        break;
        }
    }