Example #1
0
    public static Drama CreateRandomOne(List <Room> rooms)
    {
        List <DramaType> dramaTypes        = System.Enum.GetValues(typeof(DramaType)).Cast <DramaType>().ToList();
        DramaType        selectedDramaType = dramaTypes[Random.Range(0, dramaTypes.Count())];

        List <Room> validRooms   = rooms.Where(room => room.roomType != RoomType.COMMON && room.roomStatus != RoomStatus.DESTROYED).ToList();
        Room        selectedRoom = validRooms[Random.Range(0, validRooms.Count())];

        return(new Drama(selectedDramaType, selectedRoom));
    }
Example #2
0
    public IEnumerator Play(DramaType type)
    {
        _viewer = PrefabManager.Instance.InstantiateOn(PrefabModel.Path.DramaView).GetComponent <DramaView>();
        Debug.Log("[ DramaManager ] Play");
        var nowType = type;

        while (type != DramaType.None)
        {
            DramaModel model = null;
            try
            {
                //var data = MasterdataManager.Records<MstDramaRecord>().FirstOrDefault(mst => mst.Type == type);
                var data = Resources.Load <DramaDataScriptableObject>(DramaResourceRoot + type.GetAttribute <ResourcePath>().Path);
                model = DataToModel(data);
                //MasterToModel(data);
            }
            catch (Exception e)
            {
                Debug.Log("<color=red>NoData</color>");
                yield break;
            }
            foreach (var frame in model.Frame)
            {
                var count = 0;

                foreach (var sprite in frame.BackSprite)
                {
                    _viewer.SetBG(sprite, count);
                    count++;
                }
                count = 0;
                foreach (var sprite in frame.LeftChara)
                {
                    _viewer.SetLeft(sprite, count);
                    count++;
                }
                count = 0;
                foreach (var sprite in frame.RightChara)
                {
                    _viewer.SetRight(sprite, count);
                    count++;
                }
                yield return(SetText(frame.Text));

                yield return(null);
            }
            type = DramaType.None;
            if (model.Next != null && model.Next.Length > 0)
            {
                var select = 0;
                if (model.Next.Length > 1)
                {
                    var names = new List <string>();
                    foreach (var n in model.Next)
                    {
                        names.Add(n.Name);
                    }
                    yield return(InputManager.Instance.WaitForSelect(
                                     PlayerManager.Instance.CurrentPlayerModel,
                                     names.ToArray(),
                                     num => select = num));
                }
                type = model.Next[select].Type;
            }
            if (model.Rewards != null && model.Rewards.Length > 0)
            {
                yield return(GetReward(model));
            }
            yield return(GetReward(model));
        }
        Destroy(_viewer.gameObject);
    }
Example #3
0
 public Drama(DramaType type, Room room)
 {
     this.type = type;
     this.room = room;
 }