예제 #1
0
    void LoadSettings()
    {
        Debug.Log("Loading settings in Persister");
        if (File.Exists(pathToSaveFile))
        {
            Debug.Log("Loading settings from filename = " + pathToSaveFile);

            BinaryFormatter bf   = new BinaryFormatter();
            FileStream      file = File.Open(pathToSaveFile, FileMode.Open);
            settingsOfTheGame = (CustomGameSettings)bf.Deserialize(file);

//			Debug.Log ("making serializer");
//			var serializer = new XmlSerializer(typeof(CustomGameSettings));
//			Debug.Log ("done making serializer");
//			Debug.Log ("using serializer");
//			settingsOfTheGame = serializer.Deserialize(file) as CustomGameSettings;
            Debug.Log("done using serializer");

            file.Close();
            Debug.Log("settings loaded");
        }
        else
        {
            Debug.Log("making new settings object");
            settingsOfTheGame = new CustomGameSettings();
            settingsOfTheGame.GenerateFakeTopTenScores();
            Debug.Log("done making new settings object");
        }
    }
    public CustomGameSettings CriarCustomGameSettings()
    {
        CustomGameSettings settings = new CustomGameSettings();

        settings.Professor = paginaEscolherProfessor.ProfessorSelecionado;
        settings.Sala      = SalaDeAula.SalaDeCiencias;

        settings.ValorNivelDeEnsino      = paginaInformacoesBasicas.NivelDeEnsinoSelecionado.valor;
        settings.ValorAreaDeConhecimento = paginaInformacoesBasicas.AreaDeConhecimentoSelecionada.valor;

        settings.IntroducaoAula    = introducaoAula.text;
        settings.DescricaoMomento1 = descricaoMomento1.text;
        settings.DescricaoMomento2 = descricaoMomento2.text;
        settings.DescricaoMomento3 = descricaoMomento3.text;

        settings.Procedimento1 = paginaProcedimentoAgrupamento.ProcedimentoMomento1;
        settings.Procedimento2 = paginaProcedimentoAgrupamento.ProcedimentoMomento2;
        settings.Procedimento3 = paginaProcedimentoAgrupamento.ProcedimentoMomento3;

        settings.Agrupamento1 = paginaProcedimentoAgrupamento.AgrupamentoMomento1;
        settings.Agrupamento2 = paginaProcedimentoAgrupamento.AgrupamentoMomento2;
        settings.Agrupamento3 = paginaProcedimentoAgrupamento.AgrupamentoMomento3;

        settings.ArrayMidiaPoderFeedbackMomento1 = paginaFeedbackMidiasMomento1.ArrayMidiaPoderFeedback;
        settings.ArrayMidiaPoderFeedbackMomento2 = paginaFeedbackMidiasMomento2.ArrayMidiaPoderFeedback;
        settings.ArrayMidiaPoderFeedbackMomento3 = paginaFeedbackMidiasMomento3.ArrayMidiaPoderFeedback;

        settings.TituloDaAula = tituloDaAula.text;
        settings.Autor        = autorInputField.text;

        // Definir a data de criação do jogo
        settings.dataDeCriacao = DateTime.Now.ToUniversalTime().AddHours(-3).ToShortDateString();

        return(settings);
    }
예제 #3
0
    public void Configure(CustomGameSettings settings, int index)
    {
        this.settings = settings;

        tituloDaAula.text = settings.TituloDaAula;

        autor.text = settings.Autor;

        nivelDeEnsino.text = NivelDeEnsino.Get(settings.ValorNivelDeEnsino).nome;

        areaDeConhecimento.text = AreaDeConhecimento.Get(settings.ValorAreaDeConhecimento).nome;

        localImage.sprite         = PlaceSpriteDatabase.SpriteOf(settings.Sala);
        localImage.preserveAspect = true;

        DateTime dateTime;

        if (DateTime.TryParse(settings.dataDeCriacao, out dateTime))
        {
            dataDaCriacao.text = dateTime.ToString("d", CultureInfo.CreateSpecificCulture("pt-BR"));
        }

        // Adicionar função ao OnClick do botão excluir, ela irá pedir para
        // o servidor excluir a aula com o índice deste botão
        this.index = index;
        botaoExcluir.onClick.AddListener(() =>
        {
            CustomGameSettings.DeleteFromServerByIndex(this.index);
            Destroy(this.gameObject);
        });
    }
예제 #4
0
 public static void Postfix(CustomGameSettings __instance, SettingConfig config)
 {
     foreach (var tsetting in tsettings)
     {
         __instance.AddSettingConfig(tsetting);
     }
 }
    private void ConfigurarFalasDoProfessorDuranteAula(ClassManager classManager, CustomGameSettings settings)
    {
        var paragrafos = new string[3];

        paragrafos[0] = settings.DescricaoMomento1;
        paragrafos[1] = settings.DescricaoMomento2;
        paragrafos[2] = settings.DescricaoMomento3;

        // Adicionar falas ao diálogo do professor
        var falas = new GameComenius.Dialogo.Dialogo[paragrafos.Length];

        for (int i = 0; i < paragrafos.Length; i++)
        {
            falas[i]                          = new GameComenius.Dialogo.Dialogo();
            falas[i].nodulos                  = new GameComenius.Dialogo.DialogoNodulo[1];
            falas[i].nodulos[0]               = new GameComenius.Dialogo.DialogoNodulo();
            falas[i].nodulos[0].falas         = new GameComenius.Dialogo.Fala[1];
            falas[i].nodulos[0].falas[0]      = new GameComenius.Dialogo.Fala();
            falas[i].nodulos[0].falas[0].fala = paragrafos[i];
            var p = Enum.Parse(typeof(GameComenius.Dialogo.Personagens), settings.Professor.ToString(), true);
            falas[i].nodulos[0].falas[0].personagem = (GameComenius.Dialogo.Personagens)p;
            falas[i].nodulos[0].falas[0].emocao     = GameComenius.Dialogo.Expressao.Sorrindo;
        }
        classManager.Falas = falas;
    }
    private IEnumerator Start()
    {
        yield return(StartCoroutine(CustomGameSettings.LoadAndUseAllSettings(AddCreatedGameButtons)));

        StartCoroutine(AguardarSelecaoELiberarBotaoJogar());
        StartCoroutine(AguardarSenhaELiberarExclusao());
    }
    public void PressButtonThatStartsCustomGame()
    {
        // Criar configurações a partir das escolhas do jogador
        CustomGameSettings settings = CriarCustomGameSettings();

        // Definir essa configuração como a configuração atual
        CustomGameSettings.CurrentSettings = settings;
    }
예제 #8
0
 private void ConfigurarPlanejamento(CustomGameSettings s)
 {
     DefinirFotoDoProfessor(s.Professor);
     DefinirDescricaoDosMomentos(s);
     DefinirPoderDasMidias(s);
     DefinirProcedimentos(s.Procedimento1, s.Procedimento2, s.Procedimento3);
     DefinirAgrupamentos(s.Agrupamento1, s.Agrupamento2, s.Agrupamento3);
 }
    public void AddCreatedGameButton(CustomGameSettings settings, int index)
    {
        var button = Instantiate(createdGameButtonPrefab, content.transform);

        button.transform.localScale = Vector3.one;
        button.Configure(settings, index);

        createdGameButtons.Add(button);
    }
    public void PressButtonThatSavesCustomGame()
    {
        // Criar configurações a partir das escolhas do jogador e
        // criar objeto para escrever no disco
        CustomGameSettings settings = CriarCustomGameSettings();

        // Salvar no servidor
        settings.SaveToDisk();
    }
예제 #11
0
    public static IEnumerator RequestAllGames(List <CustomGameSettings> gameListToBePopulated)
    {
        var request = UnityWebRequest.Get(downloadURI);

        // Timeout, aborta requisição se X segundos passarem
        request.timeout = 10;
        Debug.Log("Resquest created - Timeout = " + request.timeout);

        // Enviar o HTTP Get e esperar pela resposta ou pelo erro
        yield return(request.SendWebRequest());

        if (request.isNetworkError)
        {
            Debug.Log("Network error: " + request.error);
        }
        else if (request.isHttpError)
        {
            Debug.Log("HTTP error: " + request.error);
        }
        else
        {
            var response = request.downloadHandler.data;

            string   converted   = Encoding.Default.GetString(response, 0, response.Length);
            string[] separator   = { "$$$" };
            var      objsStrings = converted.Split(separator, StringSplitOptions.None);

            Debug.Log("HTTP response length = " + response.Length);
            Debug.Log("Quantidade de jogos criados = " + objsStrings.Length);
            Debug.Log("Bytes de um jogo criado = " + objsStrings[0].Length);

            var allGames = new CustomGameSettings[objsStrings.Length];
            for (int i = 0; i < allGames.Length; i++)
            {
                var objBytes = Encoding.Default.GetBytes(objsStrings[i]);
                using (var stream = new MemoryStream())
                {
                    stream.Write(objBytes, 0, objBytes.Length);
                    stream.Seek(0, SeekOrigin.Begin);

                    var formatter = new BinaryFormatter();
                    try
                    {
                        var obj = formatter.Deserialize(stream);
                        Debug.Log("Desserialização foi um sucesso!");
                        allGames[i] = (CustomGameSettings)obj;
                    }
                    catch (SerializationException e)
                    {
                        Debug.Log("Desserialização falhou: " + e.Message);
                    }
                }
            }
            gameListToBePopulated.Clear();
            gameListToBePopulated.AddRange(allGames);
        }
    }
    private void ConfigurarPortas(CustomGameSettings settings)
    {
        // Aplicar sobre todas as portas da sala
        var doors = GameObject.FindGameObjectsWithTag("Door1");

        foreach (var door in doors)
        {
            // Trocar diálogo
            // Novas falas
            var paragrafos = new string[2];
            // Fala da Lurdinha
            paragrafos[0] = "Vou indo então, até mais " + settings.Professor.PrimeiroNome() + "!";
            // Fala do professor
            paragrafos[1] = "Tudo bem, obrigado pela ajuda!!";

            // Substituir componentes relacionados ao diálogo
            var npc = door.GetComponent <NpcDialogo>();
            var originalInteractOffset = npc.interactOffset;
            Destroy(npc);
            Destroy(door.GetComponent <QuestGuest>());
            door.AddComponent <QuestGuest>();
            npc = door.AddComponent <NpcDialogo>();
            npc.interactOffset                    = originalInteractOffset;
            npc.dialogoPrincipal                  = new GameComenius.Dialogo.Dialogo();
            npc.dialogoPrincipal.nodulos          = new GameComenius.Dialogo.DialogoNodulo[1];
            npc.dialogoPrincipal.nodulos[0]       = new GameComenius.Dialogo.DialogoNodulo();
            npc.dialogoPrincipal.nodulos[0].falas = new GameComenius.Dialogo.Fala[paragrafos.Length];

            // Adicionar fala da Lurdinha
            npc.dialogoPrincipal.nodulos[0].falas[0] = new GameComenius.Dialogo.Fala
            {
                fala       = paragrafos[0],
                personagem = GameComenius.Dialogo.Personagens.Lurdinha,
                emocao     = GameComenius.Dialogo.Expressao.Sorrindo
            };

            // Adicionar fala do professor
            npc.dialogoPrincipal.nodulos[0].falas[1]      = new GameComenius.Dialogo.Fala();
            npc.dialogoPrincipal.nodulos[0].falas[1].fala = paragrafos[1];
            var a = Enum.Parse(typeof(GameComenius.Dialogo.Personagens), settings.Professor.ToString(), true);
            npc.dialogoPrincipal.nodulos[0].falas[1].personagem = (GameComenius.Dialogo.Personagens)a;
            npc.dialogoPrincipal.nodulos[0].falas[1].emocao     = GameComenius.Dialogo.Expressao.Sorrindo;

            // Ativar collider da porta, caso esteja desativado
            door.GetComponent <Collider2D>().enabled = true;

            // Configurar o que irá acontecer quando interagir com a porta
            npc.OnEndDialogueEvent += () => StartCoroutine(FinalizarCustomGame());
        }
    }
 protected override void OnPrefabInit()
 {
     instance = this;
     AddSettingConfig(CustomGameSettingConfigs.World);
     AddSettingConfig(CustomGameSettingConfigs.WorldgenSeed);
     AddSettingConfig(CustomGameSettingConfigs.ImmuneSystem);
     AddSettingConfig(CustomGameSettingConfigs.CalorieBurn);
     AddSettingConfig(CustomGameSettingConfigs.Morale);
     AddSettingConfig(CustomGameSettingConfigs.Stress);
     AddSettingConfig(CustomGameSettingConfigs.StressBreaks);
     AddSettingConfig(CustomGameSettingConfigs.CarePackages);
     AddSettingConfig(CustomGameSettingConfigs.SandboxMode);
     VerifySettingCoordinates();
 }
    private void ConfigurarSalaDeAula(CustomGameSettings settings)
    {
        var professor    = FindObjectOfType <TeacherScript>().gameObject;
        var classManager = FindObjectOfType <ClassManager>();

        ConfigurarSpritesDoProfessor(professor, settings);
        ConfigurarFalasDoProfessorDuranteAula(classManager, settings);
        ConfigurarFalaDoProfessorPosAula(classManager, settings);

        // Configurar falas de feedback dos alunos quando a aula terminar
        ClassManager.EndClass += () => ConfigurarFalasDeFeedback(classManager, settings);

        ConfigurarPortas(settings);
    }
예제 #15
0
    public void ConfigurarProfessor(GameObject professorGO, CustomGameSettings settings)
    {
        professor = settings.Professor;

        introducaoAula    = settings.IntroducaoAula;
        descricaoMomento1 = settings.DescricaoMomento1;
        descricaoMomento2 = settings.DescricaoMomento2;
        descricaoMomento3 = settings.DescricaoMomento3;
        DividirEInserirFalas(professorGO);

        // Definir o meu sprite como o sprite do professor escolhido e na
        // direção correta definida no Unity inspector
        spriteNW = CharacterSpriteDatabase.SpriteNW(professor);
        spriteNE = CharacterSpriteDatabase.SpriteNE(professor);
        spriteSE = CharacterSpriteDatabase.SpriteSE(professor);
        spriteSW = CharacterSpriteDatabase.SpriteSW(professor);

        SpriteRenderer mySP = professorGO.GetComponent <SpriteRenderer>();

        switch (facingDirection)
        {
        case Direction.NW:
            mySP.sprite = spriteNW;
            break;

        case Direction.NE:
            mySP.sprite = spriteNE;
            break;

        case Direction.SE:
            mySP.sprite = spriteSE;
            break;

        case Direction.SW:
            mySP.sprite = spriteSW;
            break;
        }

        // Alguns casos especiais, não quero mexer no .png
        // Basicamente, alterar o tamanho de alguns professores
        var professorTransform = professorGO.transform;

        switch (professor)
        {
        case CharacterName.Vladmir:
        case CharacterName.Paulino:
            professorTransform.localScale = Vector3.one * 0.7f;
            break;
        }
    }
예제 #16
0
    public static void PostGame(CustomGameSettings gameSettings)
    {
        var fieldName = "data";

        using (var stream = new MemoryStream())
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(stream, gameSettings);

            List <IMultipartFormSection> formData = new List <IMultipartFormSection>();
            formData.Add(new MultipartFormDataSection(fieldName, stream.ToArray()));

            UnityWebRequest webRequest = UnityWebRequest.Post(uploadURI, formData);
            webRequest.SendWebRequest();
            // ^
            // Verificar se o Post funcionou e impedir o save caso isso ocorra
        }
    }
 public void Init()
 {
     Global.Instance.modManager.Load(Content.LayerableFiles);
     SettingsCache.Clear();
     WorldGen.LoadSettings();
     CustomGameSettings.Instance.LoadWorlds();
     Global.Instance.modManager.Report(base.gameObject);
     settings = CustomGameSettings.Instance;
     widgets  = new List <NewGameSettingWidget>();
     foreach (KeyValuePair <string, SettingConfig> qualitySetting in settings.QualitySettings)
     {
         if (!qualitySetting.Value.debug_only || DebugHandler.enabled)
         {
             ListSettingConfig listSettingConfig = qualitySetting.Value as ListSettingConfig;
             if (listSettingConfig != null)
             {
                 NewGameSettingList newGameSettingList = Util.KInstantiateUI <NewGameSettingList>(prefab_cycle_setting, content.gameObject, true);
                 newGameSettingList.Initialize(listSettingConfig);
                 widgets.Add(newGameSettingList);
             }
             else
             {
                 ToggleSettingConfig toggleSettingConfig = qualitySetting.Value as ToggleSettingConfig;
                 if (toggleSettingConfig != null)
                 {
                     NewGameSettingToggle newGameSettingToggle = Util.KInstantiateUI <NewGameSettingToggle>(prefab_checkbox_setting, content.gameObject, true);
                     newGameSettingToggle.Initialize(toggleSettingConfig);
                     widgets.Add(newGameSettingToggle);
                 }
                 else
                 {
                     SeedSettingConfig seedSettingConfig = qualitySetting.Value as SeedSettingConfig;
                     if (seedSettingConfig != null)
                     {
                         NewGameSettingSeed newGameSettingSeed = Util.KInstantiateUI <NewGameSettingSeed>(prefab_seed_input_setting, content.gameObject, true);
                         newGameSettingSeed.Initialize(seedSettingConfig);
                         widgets.Add(newGameSettingSeed);
                     }
                 }
             }
         }
     }
     Refresh();
 }
    private void ConfigurarSpritesDoProfessor(GameObject professor, CustomGameSettings settings)
    {
        var teacherScript = professor.GetComponent <TeacherScript>();
        var professorName = settings.Professor;

        // Load dos sprites do professor selecionado pelo criador do custom
        var spriteNW = CharacterSpriteDatabase.SpriteNW(professorName);
        var spriteNE = CharacterSpriteDatabase.SpriteNE(professorName);
        var spriteSE = CharacterSpriteDatabase.SpriteSE(professorName);
        var spriteSW = CharacterSpriteDatabase.SpriteSW(professorName);

        // Configurar sprites no componente TeacherScript
        teacherScript.Sprites[0] = spriteSE;
        teacherScript.Sprites[1] = spriteSW;
        teacherScript.Sprites[2] = spriteNE;
        teacherScript.Sprites[3] = spriteNW;

        // Inicialmente o professor vai olhar para o sudeste (SE)
        var mySP = teacherScript.GetComponent <SpriteRenderer>();

        mySP.sprite = spriteSE;

        // Alguns casos especiais, não quero mexer no .png
        // Basicamente, alterar o tamanho de alguns professores
        var professorTransform = professor.transform;

        switch (professorName)
        {
        case CharacterName.Vladmir:
        case CharacterName.Paulino:
            professorTransform.localScale = Vector3.one * 0.7f;
            break;
        }


        // Configurar sprites do professor caminhando
        // Por enquanto estamos usando os mesmos sprites dos professores parados
        // porque alguns professores do custom não tem sprites caminhando ainda
        //for (int i = 0; i < teacherScript.GoLeft.Length; i++)
        //    teacherScript.GoLeft[i] = spriteSW;

        //for (int i = 0; i < teacherScript.GoRight.Length; i++)
        //    teacherScript.GoRight[i] = spriteNE;
    }
예제 #19
0
        /// <summary>
        /// Adds the settings before the immunity
        /// </summary>
        /// <param name="__instance"></param>
        /// <param name="config"></param>
        public static void Prefix(CustomGameSettings __instance, SettingConfig config)
        {
            if (config != CustomGameSettingConfigs.WorldgenSeed)
            {
                return;
            }

            var worldListX = new List <SettingLevel>();

            for (int i = 64; i <= 8192; i += 32)
            {
                worldListX.Add(new SettingLevel(i.ToString(), i.ToString(), "Default: 256"));
            }
            var worldListY = new List <SettingLevel>();

            for (int i = 64; i <= 8192; i += 32)
            {
                worldListY.Add(new SettingLevel(i.ToString(), i.ToString(), "Default: 384"));
            }

            WorldgenSeedX = new ListSettingConfig(WorldsizeX, "Custom World Width", "Use a custom width.",
                                                  worldListX, "256", "256");

            WorldgenSeedY = new ListSettingConfig(WorldsizeY, "Custom World Height", "Use a custom height.",
                                                  worldListY, "384", "384");

            List <SettingConfig> settings = new List <SettingConfig> {
                UseCustomWorld, WorldgenSeedX, WorldgenSeedY
            };

            foreach (SettingConfig settingConfig in settings)
            {
                /*
                 * __instance.QualitySettings.Add(settingConfig.id, settingConfig);
                 * if (!__instance.CurrentQualityLevelsBySetting.ContainsKey(settingConfig.id) || string.IsNullOrEmpty(__instance.CurrentQualityLevelsBySetting[settingConfig.id]))
                 * {
                 *      __instance.CurrentQualityLevelsBySetting[settingConfig.id] = settingConfig.default_level_id;
                 * }
                 */
                __instance.AddSettingConfig(settingConfig);
            }
        }
예제 #20
0
            public static void Prefix(CustomGameSettings __instance, SettingConfig config)
            {
                if (config != CustomGameSettingConfigs.ImmuneSystem)
                {
                    return;
                }

                List <SettingConfig> settings = new List <SettingConfig> {
                    UseCustomWorld, WorldgenSeedX, WorldgenSeedY
                };

                foreach (SettingConfig settingConfig in settings)
                {
                    __instance.QualitySettings.Add(settingConfig.id, settingConfig);
                    if (!__instance.CurrentQualityLevelsBySetting.ContainsKey(settingConfig.id) || string.IsNullOrEmpty(__instance.CurrentQualityLevelsBySetting[settingConfig.id]))
                    {
                        __instance.CurrentQualityLevelsBySetting[settingConfig.id] = settingConfig.default_level_id;
                    }
                }
            }
    private void ConfigurarFalaDoProfessorPosAula(ClassManager classManager, CustomGameSettings settings)
    {
        var dialogos = classManager.DialogosProfessorPosAula();

        foreach (var dialogo in dialogos)
        {
            var p = Enum.Parse(typeof(GameComenius.Dialogo.Personagens), settings.Professor.ToString(), true);
            // falas[1] porque o [0] é dedicada à Lurdinha
            // Se colocarem a fala do professor em falas[0], é só trocar
            if (dialogo.nodulos[0].falas.Length > 1)
            {
                dialogo.nodulos[0].falas[1].personagem = (GameComenius.Dialogo.Personagens)p;
                dialogo.nodulos[0].falas[1].emocao     = GameComenius.Dialogo.Expressao.Sorrindo;
            }
            else
            {
                dialogo.nodulos[0].falas[0].personagem = (GameComenius.Dialogo.Personagens)p;
                dialogo.nodulos[0].falas[0].emocao     = GameComenius.Dialogo.Expressao.Sorrindo;
            }
        }
    }
예제 #22
0
    private void DefinirPoderDasMidias(CustomGameSettings s)
    {
        CreateCustomGamePanel.MidiaPoderFeedback[][] arraysMPF =
        {
            s.ArrayMidiaPoderFeedbackMomento1,
            s.ArrayMidiaPoderFeedbackMomento2,
            s.ArrayMidiaPoderFeedbackMomento3,
        };
        foreach (var arrayMPF in arraysMPF)
        {
            if (arrayMPF == null)
            {
                return;
            }
        }

        MidiaMomento[] midiasMomento =
        {
            GameObject.Find("Midia1").GetComponent <MidiaMomento>(),
            GameObject.Find("Midia2").GetComponent <MidiaMomento>(),
            GameObject.Find("Midia3").GetComponent <MidiaMomento>(),
        };
        foreach (var mm in midiasMomento)
        {
            if (mm == null)
            {
                return;
            }
        }

        for (var i = 0; i < 3; i++)
        {
            var midiaMomento = midiasMomento[i];
            foreach (var mpf in arraysMPF[i])
            {
                midiaMomento.SetPoints(mpf.Midia, (int)mpf.Poder);
            }
        }
    }
예제 #23
0
        public static void Prefix(ref int width, ref int height)
        {
            // 256x512 default

            Debug.Log("CWS: Using custom world size ...");
            if (!CustomGameSettings.Get().is_custom_game)
            {
                Debug.Log("CWS: Nah, no custom game ...");
                return;
            }

            SettingConfig settingConfig         = CustomGameSettings.Get().QualitySettings[CustomWorldMod.UseCustomWorldSize];
            SettingLevel  currentQualitySetting =
                CustomGameSettings.Get().GetCurrentQualitySetting(CustomWorldMod.UseCustomWorldSize);

            bool allowCustomSize = !settingConfig.IsDefaultLevel(currentQualitySetting.id);

            if (!allowCustomSize)
            {
                Debug.Log("CWS: No custom size allowed ...");
                return;
            }

            SettingLevel currentQualitySettingX = CustomGameSettings.Get().GetCurrentQualitySetting(CustomWorldMod.WorldsizeX);
            SettingLevel currentQualitySettingY = CustomGameSettings.Get().GetCurrentQualitySetting(CustomWorldMod.WorldsizeY);

            Int32.TryParse(currentQualitySettingX.id, out width);
            Int32.TryParse(currentQualitySettingY.id, out height);

            Debug.Log("CWS: Using " + width + "/" + height + " as new world size");

            //  if (Config.Enabled && Config.CustomWorldSize)
            //{
            //    width  = Config.width;
            //    height = Config.height;
            //}
        }
예제 #24
0
    // Deve ser usada sempre como uma Coroutine porque faz uma requisição web e
    // não seria legal travar o jogo enquanto esperamos por essa requisição
    // Como usar: StartCoroutine(CustomGameSettings.LoadAndUseAllSettings(...));
    // O argumento callbackAction é a função que será chamada quando o este
    // método (LoadAndUseSettings) conseguir as Settings do servidor web, ou
    // seja, este método passará as Settings como parâmetro para callbackAction
    public static IEnumerator LoadAndUseAllSettings(Action <CustomGameSettings[]> callbackAction)
    {
        var request = UnityWebRequest.Get(downloadURI);

        // Timeout, aborta requisição se X segundos passarem
        request.timeout = 10;
        Debug.Log("Resquest created - Timeout = " + request.timeout);

        // Enviar o HTTP Get e esperar pela resposta ou pelo erro
        yield return(request.SendWebRequest());

        if (request.isNetworkError)
        {
            Debug.Log("Network error: " + request.error);
        }
        else if (request.isHttpError)
        {
            Debug.Log("HTTP error: " + request.error);
        }
        else
        {
            var response = request.downloadHandler.data;
            // Se o servidor não tiver jogos para mostrar
            if (response.Length == 0)
            {
                yield break;
            }

            string converted = Encoding.ASCII.GetString(response, 0, response.Length);

            string[] separator = { "$%$%$" };

            var objsStrings = converted.Split(separator, StringSplitOptions.None);

            Debug.Log("HTTP response length = " + response.Length);
            Debug.Log("Quantidade de jogos criados = " + objsStrings.Length);
            Debug.Log("Bytes de um jogo criado = " + objsStrings[0].Length);

            var allGames = new CustomGameSettings[objsStrings.Length];
            for (int i = 0; i < allGames.Length; i++)
            {
                var objBytes = Encoding.ASCII.GetBytes(objsStrings[i]);
                using (var stream = new MemoryStream())
                {
                    stream.Write(objBytes, 0, objBytes.Length);
                    stream.Seek(0, SeekOrigin.Begin);

                    var formatter = new BinaryFormatter();
                    try
                    {
                        var obj = formatter.Deserialize(stream);
                        Debug.Log("Desserialização foi um sucesso!");
                        allGames[i] = (CustomGameSettings)obj;
                    }
                    catch (SerializationException e)
                    {
                        Debug.Log("Desserialização falhou: " + e.Message);
                    }
                }
            }
            // Se a requisição HTTP funcionou e a desserialização também,
            // chamar a callbackAction passada como argumento para esta função
            callbackAction(allGames);
        }
    }
예제 #25
0
 private void DefinirDescricaoDosMomentos(CustomGameSettings s)
 {
     planejamento.descricaoMomento1 = s.DescricaoMomento1;
     planejamento.descricaoMomento2 = s.DescricaoMomento2;
     planejamento.descricaoMomento3 = s.DescricaoMomento3;
 }
예제 #26
0
 public static void Postfix(CustomGameSettings __instance)
 {
     __instance.AddSettingConfig(SleepNotIncludedPatches.RemoveSleepEffects);
 }
    private void ConfigurarFalasDeFeedback(ClassManager classManager, CustomGameSettings settings)
    {
        // Configurar feedback geral sobre a aula do professor também?
        // ...

        // Configurar falas de feedback específicas sobre as mídias
        // Para cada momento, um aluno na sala falará sobre a mídia escolhida
        // para aquele momento da aula

        // Obter feedbacks escritos pelo criador do custom
        CreateCustomGamePanel.MidiaPoderFeedback[][] arraysMPF =
        {
            settings.ArrayMidiaPoderFeedbackMomento1,
            settings.ArrayMidiaPoderFeedbackMomento2,
            settings.ArrayMidiaPoderFeedbackMomento3,
        };
        foreach (var arrayMPF in arraysMPF)
        {
            if (arrayMPF == null)
            {
                return;
            }
        }

        // Criar 3 Dictionary, um para cada momento, para guardarem o link entre
        // uma mídia e o seu feedback
        var feedbacksPorMidiaNoMomento1Custom = new Dictionary <ItemName, string>();
        var feedbacksPorMidiaNoMomento2Custom = new Dictionary <ItemName, string>();
        var feedbacksPorMidiaNoMomento3Custom = new Dictionary <ItemName, string>();

        Dictionary <ItemName, string>[] feedbacksPorMidiaArray =
        {
            feedbacksPorMidiaNoMomento1Custom,
            feedbacksPorMidiaNoMomento2Custom,
            feedbacksPorMidiaNoMomento3Custom
        };

        // Guardar as informações escritas pelo criador nos Dictionary
        // Depois, esses Dictionary serão usados para instanciar um objeto da
        // classe FeedbacksDosAlunos
        for (var momento = 0; momento < 3; momento++)
        {
            var quantidadeMidias = arraysMPF[momento].Length;
            for (var j = 0; j < quantidadeMidias; j++)
            {
                var mpf = arraysMPF[momento][j];
                feedbacksPorMidiaArray[momento][mpf.Midia] = mpf.Feedback;
            }
        }

        // Configurar falas de feedback gerais sobre a aula
        string[] feedbacksAulaMelhor   = { "A aula foi incrível!" };
        string[] feedbacksAulaMuitoBoa = { "A aula foi muito boa!" };
        string[] feedbacksAulaBoa      = { "A aula foi boa!" };
        string[] feedbacksAulaFraca    = { "A aula foi ruim..." };

        // Criar novo objeto FeedbacksDosAlunos, que conterá falas específicas
        // sobre as mídias e falas gerais sobre a aula de acordo com as escolhas
        // feitas pelo criador da missão custom
        FeedbacksDosAlunos feedbacksDosAlunos = new FeedbacksDosAlunos
                                                (
            feedbacksPorMidiaNoMomento1Custom,
            feedbacksPorMidiaNoMomento2Custom,
            feedbacksPorMidiaNoMomento3Custom,
            feedbacksAulaMelhor,
            feedbacksAulaMuitoBoa,
            feedbacksAulaBoa,
            feedbacksAulaFraca
                                                );

        // Pedir para o ClassManager configurar as falas dos alunos
        // comentaristas com os feedbacks custom
        classManager.AlunosComentaristasSetUp(feedbacksDosAlunos);
    }
예제 #28
0
 public static void Postfix(CustomGameSettings __instance)
 {
     __instance.AddSettingConfig(StartWithAllResearchPatches.StartWithAllResearch);
 }
예제 #29
0
 public static void Postfix(CustomGameSettings __instance)
 {
     __instance.AddSettingConfig(OxygenNotNeededPatches.WorldRequiresOxygen);
 }