123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using Sfs2X.Entities;
- using Sfs2X.Entities.Data;
- using UnityEngine;
- using UnityEngine.UI;
- public class RoomData
- {
- #region Config
- private static string IDLabel = "i";
- private static string OwnerLabel = "o";
- private static string DurationLabel = "d";
- private static string MaxPlayerLabel = "m";
- private static string NameLabel = "n";
- private static string StartTimeLabel = "s";
- private static string EndTimeLabel = "e";
- public TimeSpan RemainTime
- {
- get
- {
- if (IsSystemRoom)
- {
- return new TimeSpan(1, 0, 0, 0);
- }
- else
- {
- return EndTime.Subtract(StartTime);
- }
- }
- }
- public int ID;
- public int Duration;
- public int MaxPlayer;
- public long Owner;
- public bool IsSystemRoom;
- public string Name;
- public DateTime StartTime;
- public DateTime EndTime;
- #endregion
- public RoomData(ISFSObject arg)
- {
- ID = arg.GetInt(IDLabel);
- Owner = arg.GetLong(OwnerLabel);
- Duration = arg.GetInt(DurationLabel);
- MaxPlayer = arg.GetInt(MaxPlayerLabel);
- Name = arg.GetUtfString(NameLabel);
- StartTime = DateUtil.GetTimeFromSeconds(arg.GetLong(StartTimeLabel).ToString());
- EndTime = DateUtil.GetTimeFromSeconds(arg.GetLong(EndTimeLabel).ToString());
- if (ID == 1)
- IsSystemRoom = true;
- //Debug.Log(ID);
- //Debug.Log(Owner);
- //Debug.Log(Duration);
- //Debug.Log(MaxPlayer);
- //Debug.Log(Name);
- //Debug.Log(StartTime);
- //Debug.Log(EndTime);
- //Debug.Log(RemainHour);
- //Debug.Log(IsSystemRoom);
- }
- public PlazaRoomItem CreateItem()
- {
- PlazaRoomItem plazaRoomItem = ResourceManager.Get(ResourceLabel.PlazaRoomItem, Folder.UI, false, ResourceManager.Get(CanvasLabel.Z_Grid), false, ObjType.PlazaRoomItem, typeof(PlazaRoomItem)).GetComponent<PlazaRoomItem>();
- plazaRoomItem.Init();
- return plazaRoomItem;
- }
- public static bool operator ==(RoomData r1, RoomData r2)
- {
- if (r1.ID == r2.ID)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public static bool operator !=(RoomData r1, RoomData r2)
- {
- return !(r1 == r2);
- }
- public override bool Equals(object obj)
- {
- return this == (RoomData) obj;
- }
- public override int GetHashCode()
- {
- return ID.GetHashCode();
- }
- }
- public class PlazaRoomItemLabel
- {
- public static string ID = "ID";
- public static string Name = "Name";
- public static string Status = "Status";
- public static string Duration = "Duration";
- public static string People = "People";
- public static string SystemIconBK = "SystemIconBK";
- public static string Btn = "Btn";
- public static string BtnLab = "BtnLab";
- }
- public class PlazaRoomItem : MonoBehaviour
- {
- #region Config
- public bool Inited;
- public RoomData RoomData;
- public Text ID;
- public Text Name;
- public Text Status;
- public Text Duration;
- public Text People;
- public Text ButtonLab;
- public Image SystemIconBK;
- public Button Button;
- #endregion
- public void Init()
- {
- if (Inited)
- return;
- else
- Inited = true;
- Dictionary<string, Transform> dictionary = new Dictionary<string, Transform>();
- Auxiliary.CompileDic(transform, dictionary);
- ID = dictionary[PlazaRoomItemLabel.ID].GetComponent<Text>();
- Name = dictionary[PlazaRoomItemLabel.Name].GetComponent<Text>();
- Status = dictionary[PlazaRoomItemLabel.Status].GetComponent<Text>();
- Duration = dictionary[PlazaRoomItemLabel.Duration].GetComponent<Text>();
- People = dictionary[PlazaRoomItemLabel.People].GetComponent<Text>();
- SystemIconBK = dictionary[PlazaRoomItemLabel.SystemIconBK].GetComponent<Image>();
- Button = dictionary[PlazaRoomItemLabel.Btn].GetComponent<Button>();
- ButtonLab = dictionary[PlazaRoomItemLabel.BtnLab].GetComponent<Text>();
- }
- public PlazaRoomItem Init(RoomData roomData)
- {
- RoomData = roomData;
- if (RoomData.IsSystemRoom)
- {
- ID.SetActive(false);
- SystemIconBK.SetActive(true);
- }
- else
- {
- ID.SetActive(true);
- SystemIconBK.SetActive(false);
- ID.text = RoomData.ID.ToString();
- }
- if (RoomData.IsSystemRoom)
- {
- LanguageManager.Add(Name, new MulLanStr(LanguageLabel.UI__Z_SystemRoomName));
- }
- else
- {
- Name.text = RoomData.Name;
- }
- if (RoomData.IsSystemRoom)
- {
- LanguageManager.Add(Duration, new MulLanStr(LanguageLabel.UI__Z_Permanent));
- }
- else
- {
- Duration.text = RoomData.Duration.ToString();
- }
- RefreshStatus(true);
- Button.onClick.RemoveAllListeners();
- Button.onClick.AddListener
- (
- () =>
- {
- OnJoinBtnClick(roomData);
- }
- );
- return this;
- }
- public void RefreshStatus(bool available)
- {
- if (available)
- {
- LanguageManager.Add(People, new MulLanStr(LanguageLabel.UI__Z_Available));
- People.color = Lib.RoomRunning;
- Button.image.material = null;
- LanguageManager.Add(ButtonLab, new MulLanStr(LanguageLabel.UI__Z_Join));
- }
- else
- {
- LanguageManager.Add(People, new MulLanStr(LanguageLabel.UI__Z_Full));
- People.color = Lib.RoomClosing;
- Button.image.material = Lib.GrayMat;
- LanguageManager.Add(ButtonLab, new MulLanStr(LanguageLabel.UI__Z_Full));
- }
- if (RoomData.RemainTime.TotalMinutes > 10)
- {
- LanguageManager.Add(Status, new MulLanStr(LanguageLabel.UI__Z_Running));
- Status.color = Lib.RoomRunning;
- }
- else
- {
- LanguageManager.Add(Status, new MulLanStr(LanguageLabel.UI__Z_Closing));
- Status.color = Lib.RoomClosing;
- }
- }
- public static void OnJoinBtnClick(RoomData roomData)
- {
- AudioManager.PlayClip(AudioLabel.ClickButton);
- SFSManager.GardenSmartFox.PlazaRoomController.BeginEnterPlazaRoom(roomData);
- SFSManager.GardenSmartFox.EventManager.PlazaRoomEvent.JoinPlazaRoom(roomData.ID);
- }
- }
|