예제 #1
0
 public void Init(PromoPicInfo picInfo, bool lazyLoad = false)
 {
     base.Id    = picInfo.id;
     base.Type  = FeaturedItem.ItemType.PromoPic;
     this.Order = picInfo.order;
     this.picItem.Init(picInfo.picData, lazyLoad, false, false);
     if (picInfo.picData.HasSave)
     {
         PictureSaveData save = SharedData.Instance.GetSave(picInfo.picData);
         if (save != null)
         {
             this.picItem.AddSave(save);
         }
     }
     if (GeneralSettings.IsOldDesign)
     {
         this.titleLabel.text = picInfo.title;
         this.descLabel.text  = picInfo.desc;
     }
     else
     {
         if (string.IsNullOrEmpty(picInfo.desc))
         {
             this.descLabel.gameObject.SetActive(false);
             this.titleLabel.rectTransform.anchoredPosition = Vector2.zero;
         }
         else
         {
             this.descLabel.text = picInfo.desc;
         }
         this.titleLabel.text = picInfo.title;
         this.btnLabel.text   = picInfo.btnLabel;
     }
 }
예제 #2
0
 public void Init(DailyPicInfo picInfo)
 {
     base.Id    = picInfo.id;
     this.Order = picInfo.order;
     base.Type  = FeaturedItem.ItemType.Daily;
     if (GeneralSettings.IsOldDesign)
     {
         this.dayLabel.text   = picInfo.day;
         this.monthLabel.text = picInfo.month;
     }
     else
     {
         this.dayLabel.text = picInfo.day + "\n" + picInfo.month;
         this.btnLabel.text = picInfo.btnLabel;
     }
     this.descLabel.text = picInfo.desc;
     this.picItem.Init(picInfo.picData, false, false, false);
     if (picInfo.picData.HasSave)
     {
         PictureSaveData save = SharedData.Instance.GetSave(picInfo.picData);
         if (save != null)
         {
             this.picItem.AddSave(save);
         }
     }
 }
예제 #3
0
    private void SaveProcess()
    {
        PictureSaveData data = new PictureSaveData();

        for (int i = 0; i < answerGroup.Count; i++)
        {
            data.answer.Add(answerGroup[i].letter.text);
        }
        for (int j = 0; j < letterGroup.Count; j++)
        {
            data.select.Add(letterGroup[j].letter.text);
            if (letterGroup[j].isShowing)
            {
                data.selectShowing.Add(true);
            }
            else
            {
                data.selectShowing.Add(false);
            }
        }
        for (int k = 0; k < answerDic.Count; k++)
        {
            data.answer_select.Add(answerDic[k].transform.GetSiblingIndex());
        }
        TextManager.Instance.SaveProgress <PictureSaveData> ("PictureProgress.json", data);
    }
예제 #4
0
 public void AddSave(PictureSaveData pictureSaveData)
 {
     DatabaseManager.AddSave(pictureSaveData);
     if (this.orderedMainPage != null)
     {
         for (int i = 0; i < this.orderedMainPage.Count; i++)
         {
             if (this.orderedMainPage[i].Id == pictureSaveData.Id)
             {
                 this.orderedMainPage[i].SetSaveState(true);
             }
         }
     }
     if (this.featuredSection != null)
     {
         this.featuredSection.UpdateSaveState(pictureSaveData.Id, true);
     }
     if (this.newsTabInfo != null)
     {
         this.newsTabInfo.UpdateSaveState(pictureSaveData.Id, true);
     }
     if (this.dailyTabInfo != null)
     {
         this.dailyTabInfo.UpdateSaveState(pictureSaveData.Id, true);
     }
 }
예제 #5
0
    public void AddSave(PictureSaveData save)
    {
        if (save == null)
        {
            return;
        }
        this.saveData = save;
        if (this.pd.picType == PictureType.System)
        {
            return;
        }
        string iconMaskPath = this.saveData.iconMaskPath;

        if (this.saveData.progres == 100)
        {
            this.labels.AddComplete();
        }
        if (string.IsNullOrEmpty(iconMaskPath))
        {
            return;
        }
        if (this.lazyLoad)
        {
            return;
        }
        this.saveIconTask = new LocalIconTask(iconMaskPath, new Action <bool, Texture2D>(this.SaveIconLoaded));
        ImageManager.Instance.LoadLocalIcon(this.saveIconTask);
    }
예제 #6
0
    public bool Create(PictureData picData)
    {
        this.timeFromLastAction = DateTime.Now;
        Texture2D   texture2D = null;
        Texture2D   c         = null;
        PaletteData p         = default(PaletteData);

        this.fillType = picData.FillType;
        if (picData.picType == PictureType.System)
        {
            if (this.Error != null)
            {
                this.Error(Gameboard.LoadError.Unknown);
            }
            return(false);
        }
        if (picData.picType == PictureType.Local)
        {
            try
            {
                texture2D          = FileHelper.LoadTextureFromFile(picData.LineArt);
                texture2D.wrapMode = TextureWrapMode.Clamp;
                if (this.fillType == FillAlgorithm.Flood)
                {
                    c = FileHelper.LoadTextureFromFile(picData.ColorMap);
                }
                string json = FileHelper.LoadTextFromFile(picData.Palette);
                p = JsonUtility.FromJson <PaletteData>(json);
            }
            catch (Exception ex)
            {
                if (this.Error != null)
                {
                    this.Error(Gameboard.LoadError.FileMissing);
                    UnityEngine.Debug.Log(ex.ToString());
                }
                return(false);
            }
        }
        this.Create(texture2D, c, p);
        if (picData.HasSave)
        {
            PictureSaveData pictureSaveData = SharedData.Instance.GetSave(picData);
            if (pictureSaveData != null && pictureSaveData.steps != null)
            {
                this.LoadSave(pictureSaveData.steps);
                if (this.pictureSaveData != null)
                {
                    this.pictureSaveData.AddTimeSpent(pictureSaveData.timeSpent);
                    this.pictureSaveData.hintsUsed = pictureSaveData.hintsUsed;
                }
            }
        }
        return(true);
    }
예제 #7
0
 public static void UpdateSave(PictureSaveData pictureSaveData)
 {
     try
     {
         SaveDb obj = DbTypeConvertor.FromPictureSaveData(pictureSaveData);
         DatabaseManager.db.UpdateTable(obj);
     }
     catch (Exception ex)
     {
         FMLogger.Log("upd saveData fail. " + ex.Message);
     }
 }
예제 #8
0
    public static PictureSaveData GetSave(PictureData pd)
    {
        PictureSaveData result;

        try
        {
            SaveDb          s = DatabaseManager.db.Get <SaveDb>(pd.Id);
            PictureSaveData pictureSaveData = DbTypeConvertor.ToPictureSaveData(s);
            result = pictureSaveData;
        }
        catch
        {
            result = null;
        }
        return(result);
    }
예제 #9
0
    protected override void Awake()
    {
        base.Awake();
        _instance = this;
        PictureSaveData saveData = TextManager.Instance.ReadProgress <PictureSaveData> ("PictureProgress.json");

        if (saveData != null)
        {
            selectLetter      = saveData.select;
            selectShowing     = saveData.selectShowing;
            alreadyShowAnswer = saveData.answer;
            answer_select     = saveData.answer_select;
        }
        hint.info = "picturehintcost";
        hint.SetHint();
        hint.HintEvent += ClickHint;
    }
예제 #10
0
    public static SaveDb FromPictureSaveData(PictureSaveData save)
    {
        SaveDb saveDb = new SaveDb();

        saveDb.PicId     = save.Id;
        saveDb.PackId    = save.PackId;
        saveDb.IconPath  = save.iconMaskPath;
        saveDb.Progress  = save.progres;
        saveDb.TimeSpent = save.timeSpent;
        saveDb.TimeStamp = DateTime.UtcNow.Ticks;
        saveDb.HintsUsed = save.hintsUsed;
        StepsDb obj = new StepsDb
        {
            steps = save.steps
        };

        saveDb.StepsJsonStr = JsonUtility.ToJson(obj);
        return(saveDb);
    }
예제 #11
0
    private PictureData ParseWebPic(WebPicData webPic, string[] serverPaths, List <PictureData> pics, bool forceManualSearch = false)
    {
        if (pics != null)
        {
            PictureData pictureData = pics.Find((PictureData pd) => pd.Id == webPic.id);
            if (pictureData != null)
            {
                pictureData.AddExtras(WebPicData.ParseLabels(webPic.labels), webPic.categories);
                if (pictureData.Solved)
                {
                    PictureSaveData save = this.GetSave(pictureData);
                    if (save != null && save.progres == 100)
                    {
                        pictureData.SetCompleted();
                    }
                }
                return(pictureData);
            }
        }
        else if (forceManualSearch)
        {
            PictureData pictureData2 = this.GetPictureData(webPic.id);
            if (pictureData2 != null)
            {
                pictureData2.AddExtras(WebPicData.ParseLabels(webPic.labels), webPic.categories);
                if (pictureData2.Solved)
                {
                    PictureSaveData save2 = this.GetSave(pictureData2);
                    if (save2 != null && save2.progres == 100)
                    {
                        pictureData2.SetCompleted();
                    }
                }
                return(pictureData2);
            }
        }
        PictureData pictureData3 = new PictureData(webPic, serverPaths);

        pictureData3.AddExtras(WebPicData.ParseLabels(webPic.labels), webPic.categories);
        return(pictureData3);
    }
예제 #12
0
    public static PictureSaveData ToPictureSaveData(SaveDb s)
    {
        PictureSaveData pictureSaveData = new PictureSaveData();

        pictureSaveData.Id           = s.PicId;
        pictureSaveData.PackId       = s.PackId;
        pictureSaveData.iconMaskPath = s.IconPath;
        pictureSaveData.progres      = s.Progress;
        pictureSaveData.timeSpent    = s.TimeSpent;
        pictureSaveData.hintsUsed    = s.HintsUsed;
        StepsDb stepsDb = JsonUtility.FromJson <StepsDb>(s.StepsJsonStr);

        if (stepsDb != null && stepsDb.steps != null)
        {
            pictureSaveData.steps = stepsDb.steps;
        }
        else
        {
            pictureSaveData.steps = null;
        }
        return(pictureSaveData);
    }
예제 #13
0
    private static void AddItem(PictureData pictureData)
    {
        int       id        = pictureData.Id;
        string    filename  = id + "i";
        string    directory = pictureData.PackId.ToString();
        Texture2D iconText  = DbDebugTest.GetIconText();

        FileHelper.SaveTextureToFile(iconText, directory, filename);
        SharedData.Instance.AddPictureToPack(pictureData);
        PictureSaveData pictureSaveData = new PictureSaveData();

        pictureSaveData.PackId       = pictureData.PackId;
        pictureSaveData.Id           = pictureData.Id;
        pictureSaveData.hintsUsed    = UnityEngine.Random.Range(0, 5);
        pictureSaveData.iconMaskPath = "0/shared";
        if (UnityEngine.Random.Range(0, 4) == 1)
        {
            pictureSaveData.progres = 100;
        }
        else
        {
            pictureSaveData.progres = UnityEngine.Random.Range(1, 99);
        }
        pictureSaveData.timeSpent = UnityEngine.Random.Range(1f, 99999f);
        pictureSaveData.steps     = new List <SaveStep>();
        int num = UnityEngine.Random.Range(400, 1000);

        for (int i = 0; i < num; i++)
        {
            SaveStep item = new SaveStep
            {
                colorId = UnityEngine.Random.Range(0, 99),
                point   = new Point(UnityEngine.Random.Range(0, 2048), UnityEngine.Random.Range(0, 2048))
            };
            pictureSaveData.steps.Add(item);
        }
        SharedData.Instance.AddSave(pictureSaveData);
    }
예제 #14
0
 public static void AddSave(PictureSaveData pictureSaveData)
 {
     try
     {
         SaveDb obj = DbTypeConvertor.FromPictureSaveData(pictureSaveData);
         DatabaseManager.db.Insert(obj);
         string    query = "SELECT * FROM PictureDb WHERE PicId=?";
         bool      flag;
         PictureDb pictureDb = DatabaseManager.db.QueryFirstRecord <PictureDb>(out flag, query, new object[]
         {
             pictureSaveData.Id
         });
         if (flag && pictureDb.HasSave == 0)
         {
             pictureDb.HasSave = 1;
             DatabaseManager.db.UpdateTable(pictureDb);
         }
     }
     catch (Exception ex)
     {
         FMLogger.Log("failed to add save. " + ex.Message);
         AnalyticsManager.DbTransactionError("saveDb", "AddSave: " + ex.Message);
     }
 }
예제 #15
0
 public void UpdateSave(PictureSaveData pictureSaveData)
 {
     DatabaseManager.UpdateSave(pictureSaveData);
 }
예제 #16
0
    public void RemoveItemFromFeed(int id)
    {
        ScrollRowItem        rowWithId = this.scroll.GetRowWithId(id);
        List <ScrollRowItem> list      = new List <ScrollRowItem>(this.scroll.Views);

        if (rowWithId != null)
        {
            List <PicItem> pics = new List <PicItem>();
            list.Sort((ScrollRowItem x, ScrollRowItem y) => x.Row.CompareTo(y.Row));
            int num = list.IndexOf(rowWithId);
            if (MenuScreen.RowItems == 2)
            {
                if (rowWithId.pics[0].Id == id)
                {
                    rowWithId.pics[0].Reset();
                    if (rowWithId.pics[1].gameObject.activeSelf)
                    {
                        pics.AddRange(rowWithId.pics);
                    }
                    else
                    {
                        pics.Add(rowWithId.pics[0]);
                    }
                }
                else
                {
                    rowWithId.pics[1].Reset();
                    pics.Add(rowWithId.pics[1]);
                }
            }
            else if (MenuScreen.RowItems == 3)
            {
                if (rowWithId.pics[0].Id == id)
                {
                    rowWithId.pics[0].Reset();
                    pics.Add(rowWithId.pics[0]);
                    if (rowWithId.pics[1].gameObject.activeSelf)
                    {
                        pics.Add(rowWithId.pics[1]);
                    }
                    if (rowWithId.pics[2].gameObject.activeSelf)
                    {
                        pics.Add(rowWithId.pics[2]);
                    }
                }
                else if (rowWithId.pics[1].gameObject.activeSelf && rowWithId.pics[1].Id == id)
                {
                    rowWithId.pics[1].Reset();
                    pics.Add(rowWithId.pics[1]);
                    if (rowWithId.pics[2].gameObject.activeSelf)
                    {
                        pics.Add(rowWithId.pics[2]);
                    }
                }
                else
                {
                    rowWithId.pics[2].Reset();
                    pics.Add(rowWithId.pics[2]);
                }
            }
            for (int i = num + 1; i < list.Count; i++)
            {
                for (int j = 0; j < list[i].pics.Count; j++)
                {
                    if (list[i].pics[j].gameObject.activeSelf)
                    {
                        pics.Add(list[i].pics[j]);
                    }
                }
            }
            for (int k = 0; k < pics.Count - 1; k++)
            {
                pics[k].InitFromItem(pics[k + 1]);
            }
            if (pics.Count == 1)
            {
                pics[pics.Count - 1].Reset();
                pics[pics.Count - 1].gameObject.SetActive(false);
            }
            else
            {
                PictureData pictureData = this.data.Find((PictureData pd) => pd.Id == pics[pics.Count - 2].Id);
                if (pictureData != null)
                {
                    int num2 = this.data.IndexOf(pictureData);
                    if (num2 == this.data.Count - 1)
                    {
                        pics[pics.Count - 1].gameObject.SetActive(false);
                    }
                    else if (num2 != -1 && num2 < this.data.Count - 1)
                    {
                        pics[pics.Count - 1].Init(this.data[num2 + 1], false, true, false);
                        for (int l = 0; l < this.saves.Count; l++)
                        {
                            if (this.saves[l].Id == pics[pics.Count - 1].Id)
                            {
                                pics[pics.Count - 1].AddSave(this.saves[l]);
                                break;
                            }
                        }
                    }
                }
            }
        }
        for (int m = 0; m < this.data.Count; m++)
        {
            PictureData pictureData2 = this.data[m];
            if (pictureData2.Id == id)
            {
                this.data.RemoveAt(m);
                break;
            }
        }
        for (int n = 0; n < this.saves.Count; n++)
        {
            PictureSaveData pictureSaveData = this.saves[n];
            if (pictureSaveData.Id == id)
            {
                this.saves.RemoveAt(n);
                break;
            }
        }
    }