GameVicioFórum
GameVicioFórum

Core

Core
GameVicio
GameVicio arrow_drop_down
    starsstarsstarsstarsstarsstarsstars
    Administrador
    Associado GameViciado

    Só valorizamos o que nos é privado

    ID: #862044
    Membro desde
    Masculino, 38 anos, Solteiro
    # Core
    Resposta de GameVicio.

    A quem este FAQ é destinado?

    Este FAQ só terá utilidade atualmente para quem desenvolve instaladores e mods pelo Flow.

    O que é Core?

    No Flow, Core é o nome de um namespace. Consiste em um conjunto de métodos que permitem realizar o processo de instalação de uma tradução ou mod.

    O Core é dividido em várias class para melhor organizar o espaço e deixá-lo mais intuitivo.

    Abaixo serão listados e exemplificados os métodos em cada class. Lembre-se que existem métodos com mesmo nome mas com signatures diferentes. Este recurso é chamado de overload.

    Core.Directory

    Esta class é responsável por métodos de diretório.

    Core.Directory.Delete

    2 overloads

    Core.Directory.Delete(string path):void

    Apaga um diretório, se houver arquivos ou subpastas também serão removidos recursivamente. Se o diretório não existir, não acontece nada.

    Core.Directory.Delete(string path, bool onlyIfEmpty):void

    Idêntica à função acima, todavia se o parâmetro onlyIfEmpty for verdadeiro. Só apagará o diretório se ele estiver vazio. Um diretório é considerado não vazio se tiver ao menos um arquivo, isto é, se houver apenas subpastas vazias, o diretório é vazio.

    Core.Directory.Exists

    Core.Directory.Exists(string path):bool

    Retorna um valor booleano (verdadeiro ou falso) indicando se um diretório existe.

    Core.Directory.GetDirectories

    2 overloads

    Core.Directory.GetDirectories(string path):string[]

    Retorna uma lista de pastas contidas no primeiro nível no diretório path. Se o diretório não existir ou se nenhuma subposta existir, retorna uma array de string de comprimento zero. string[0].

    Core.Directory.GetDirectories(string path, bool allDirectories):string

    Idêntico ao método acima, se o parâmetro allDirectories for verdadeiro, exibirá as subpastas em todos os níveis, não apenas no primeiro.

    Exemplo

    Considere a seguinte estrutura de arquivos

    C:/GameVicio/Jogos

    C:/GameVicio/Jogos/Trine

    C:/GameVicio/Flow

    Core.Directory.GetDirectories("C:/GameVicio") retorna string[2]{"Jogos", "Flow"}.

    Core.Directory.GetDirectories("C:/GameVicio",true) retorna string[3]{"Jogos","Jogos/Trine","Flow"}.

    Core.File

    Esta class é responsável por métodos de arquivo.

    Core.File.Copy

    2 overloads

    Core.Directory.Copy(string sourceFileName, string destFileName):void

    Copia o arquivo da origem (sourceFileName) para o destino (destFileName). Se o arquivo de origem não existir, será encerrado. Se o arquivo de destino existir, será sobrescrito, se não existir será criado juntamente com toda a estrutura de diretório (se não houver).

    Core.Directory.Copy(string sourceFileName, string destFileName, bool onlyIfDestExists):void

    Idêntico ao método acima, exceto que se o parâmetro onlyIfDestExists for definido como true, o arquivo só será copiado se o arquivo de destino destFileName existir.

    Core.File.Delete

    Core.File.Delete(string path):void

    Apaga um arquivo. Não é gerado err se o arquivo não existir.

    Core.File.Exists

    Core.File.Exists(string path):bool

    Retorna um valor booleano (verdadeiro ou falso) indicando se um arquivo existe.

    Core.File.GetContents

    Core.File.GetContents(string path,ContentType contentType):object

    Retorna todo o conteúdo do arquivo cujo caminho é informado em path. O valor de contentType pode ser.

    ValorObjeto de retornoDescrição
    ContentType.StringstringRetorna todo o conteúdo em uma única string
    ContentType.StringArraystring[]Cada linha do arquivo é colocada como um item do array
    ContentType.ByteArraybyte[]Todo o conteúdo do arquivo é convertido em um array de bytes

    Exemplo

    string[] lines = (string[])Core.File.GetContent("c:\\arquivos de programas\\gta\\log.txt",ContentType.StringArray)

    Note que como o retorno do método é um objeto, você precisa fazer um casting para poder trabalhar com ele.

    Core.File.GetDirectoryName

    Core.File.GetDirectoryName(string path):string

    Retorna uma string com o caminho do diretório. Se o arquivo não existir ou qualquer outro erro acontecer, retorna uma string vazia.

    Core.File.Rename

    Core.File.Rename(string sourceFileName, string destFileName):void

    Renomeia o arquivo sourceFileName para destFileName. Se o arquivo de origem não existir, encerra o processo. Se o arquivo de destino já existir, será sobrescrito.

    Core.INI

    Esta class é responsável por métodos que lidam com arquivos INI.

    Core.INI.Read

    2 overloads

    Core.INI.Read(string file, string section, string parameter,Encoding encoding):string

    Este método lê o valor de um parâmetro em uma determinada section. ?? importante ressaltar que o arquivo ini precisa de ao menos uma section para que o código possa ser lido.

    file: caminho do arquivo

    section: nome da seção

    parameter: nome do parâmetro

    encoding: codificação do arquivo

    O encoding pode receber os seguintes valores:

    ValorDescrição
    Encoding.ASCIIUtiliza codificação ASCII (7-bit)
    Encoding.DefaultUtiliza a codificação padrão do sistema operacional
    Encoding.UnicodeUtiliza a codificação Unicode, isto é, UTF16
    Encoding.UTF32Utiliza a codificação UTF32
    Encoding.UTF7Utiliza a codificação UTF7
    Encoding.UTF8Utiliza a codificação UTF8

    Core.INI.Read(string file, string section, string parameter):string

    Idêntico ao método acima, todavia não tenta forçar a codificação de leitura do arquivo.

    Core.INI.Write

    2 overloads

    Core.INI.Write(string file, string section, string parameter, object value, Encoding encoding):void

    Escreve o conteúdo de value em no parâmetro de uma seção em um arquivo. Se o arquivo, seção e/ou parâmetro não existirem, serão criados. O valor de encoding segue o mesmo sistema da tabela de leitura acima.

    Core.INI.Write(string file, string section, string parameter,object value):void

    Idêntico ao método acima, todavia não tenta forçar a codificação de escrita do arquivo.

    Core.LZO

    Esta class é responsável por métodos de compressão em LZO.

    Core.LZO.Compress

    2 overloads

    Core.LZO.Compress(byte[] source):byte[]

    O array de bytes passado como parâmetro é comprimido e retornado.

    Core.LZO.Compress(byte[] source,out byte[] destination):void

    Idêntico ao método acima, só que ao invés de retornar o array de bytes comprimidos, ele é armazenado na variável destination passada por referência (através da palavra reservada out).

    Core.LZO.Decompress

    Core.LZO.Decompress(byte[] source, byte[] destination):void

    Descomprime um array de bytes contido na variável source e armazena o resultado na variável destination.

    Core.Registry

    Esta class é responsável por métodos de leitura e escrita do registro do Windows.

    O valor de RootKey usado em todos os métodos desta class são:

    Valor RootKeyValor string longaValor string curta
    RootKey.HKEY_CLASSSES_ROOT"HKEY_CLASSSES_ROOT""HKCR"
    RootKey.HKEY_CURRENT_USER"HKEY_CURRENT_USER""HKCU"
    RootKey.HKEY_LOCAL_MACHINE"HKEY_LOCAL_MACHINE""HKLM"
    RootKey.HKEY_USERS"HKEY_USERS""HKU"
    RootKey.HKEY_CURRENT_CONFIG"HKEY_CURRENT_CONFIG""HKCC"

    Core.Registry.Delete

    2 overloads

    Core.Registry.Delete(RootKey rootKey, string subKey, bool onlyIfEmpty):void

    Apaga um registro, se o parâmetro onlyIfEmptty for verdadeiro e o registro tiver filhos, não será apagado.

    Exemplo:

    Este exemplo apaga a chave do Flow somente se estiver vazia.

    Core.Registry.Delete(RootKey.HKEY_LOCAL_MACHINE,"SOFTWARE\\Wow6432Node\\GameVicio\\Flow",true);

    Core.Registry.Delete(string rootKey, string subKey, bool onlyIfEmpty):void

    Idêntico ao método acima, exceto que ao invés de usar RootKey para refenciar uma chave raíz, utiliza-se uma string.

    Exemplo:

    Este exemplo apaga a chave do Flow somente se estiver vazia.

    Core.Registry.Delete("HKLM","SOFTWARE\\Wow6432Node\\GameVicio\\Flow",true);

    Core.Registry.Exists

    2 overloads

    Core.Registry.Exists(RootKey rootKey, string subKey):bool

    Retorna um valor booleano indicando se a chave existe. ?? importante ressaltar que para motivos de compatibilidade com todos os sistemas operacionais Windows, registros contidos em HKEY_LOCAL_MACHINE\SOFTWARE também são verificados em HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node chave disponível em SOs 64 bits.

    Core.Registry.Exists(string rootKey, string subKey):bool

    Idêntico ao método acima, exceto que rootKey deve ser passado como string.

    Core.Registry.GetSubKeys

    2 overloads

    Core.Registry.GetSubKeys(RootKey rootKey, string subKey):string[]

    Gera um array de string com o nome das subchaves (filhos) de uma chave. Se a chave não existir ou não tiver subchaves, gera um array de comprimento zero (string[0]).

    Core.Registry.GetSubKeys(string rootKey, string subKey):string[]

    Idêntico ao método acima.

    Core.Registry.Read

    2 overloads

    Core.Registry.Read(RootKey rootKey, string subKey, string value):object

    Lê o valor do parâmetro de um registro. O retorno é object, então para trabalhar com ele provavelmente será necessário um casting. Em caso de erro, retorna um objeto do tipo string mas vazio.

    Core.Registry.Read(string rootKey, string subKey, string value):object

    Idêntico ao método acima.

    Core.Registry.Write

    2 overloads

    Core.Registry.Write(RootKey rootKey, string subKey, string name, object value, ValueKind valueKind):void

    Escreve um parâmetro em uma chave. Se a chave (e subchaves) não existir, será criada. Se o parâmetro não existir será adicionado ou então sobrescrito. ?? importante ressaltar que em modelos 64 bits, diferente do método Core.Registry.Read, é preciso informar a chave Wow6432Node - neste caso, é recomendável verificar a existência da chave com o método Core.Registry.Exists especificando o caminho Wow6432Node.

    O objeto ValueKind representa o tipo de dado a ser armazenado. O formato usado na maioria das vezes é do tipo string.

    Valor ValueKindValor stringDescrição
    ValueKind.Binary"Binary"Dado do tipo binário
    ValueKind.DWord"DWord"
    ValueKind.ExpandString"ExpandString"
    ValueKind.MultiString"MultiString"
    ValueKind.QWord"QWord"
    ValueKind.String"String"Dado do tipo string, é o formato mais usado
    ValueKind.Unknown"Unknown"

    Exemplo

    Este exemplo mostra como escrever um valor no registro

    Core.Registry.Write(RootKey.RootKey.HKEY_LOCAL_MACHINE,"SOFTWARE\\Wow6432Node\\GameVicio\\Flow", "Language", "Português", ValueKind.String);

    Core.Registry.Write(string rootKey, string subKey, string name, object value, string valueKind):void

    Idêntico ao método acima.

    Exemplo

    Core.Registry.Write("HKLM","SOFTWARE\\Wow6432Node\\GameVicio\\Flow", "Language", "Português", "String");

    Core.Zip

    Esta class é responsável por métodos de criação e extração de arquivos Zip.

    Core.Zip.Build

    2 overloads

    Core.Zip.Build(string sourceFolder, string fileDest, string[] onlyFiles):void

    Cria um arquivo zip no caminho fileDest a partir do conteúdo da pasta sourceFolder, todavia somente os arquivos contidos em onlyFiles serão armazenados.

    Exemplo

    Cria um zip chamado sound.zip contendo os arquivos audio1.mp3 e audio2.mp3

    Core.Zip.Build("C:\\Gta iv\\sound","C:\\Gta iv\\sound.zip",string[2]{"C:\\Gta iv\\sound\\audio1.mp3","C:\\Gta iv\\sound\\audio2.mp3"});

    Core.Zip.Build(string sourceFolder, string fileDest):void

    Idêntico ao método acima, exceto que todo o conteúdo da pasta sourceFolder será adicionado ao zip.

    Core.Zip.Unbuild

    Core.Zip.Unbuild(string sourceFile, string destFolder, string[] onlyFiles):void

    Abre o zip sourceFile e o descompacta na pasta destFolder, mas somente os arquivos definidos em onlyFiles.

    Exemplo

    O exemplo abaixo mostra descompactar somente 3 arquivos dentro de um zip e armazená-los em uma pasta local.

    Core.Zip.Unbuild("c:\\gta iv\\meus_sons.zip","c:\\gta iv\sons",string[3]{"som1.mp3", "som2.mp3","som3.mp3"}

    Core.Zip.Unbuild(string sourceFile, string destFolder):void

    Idêntico ao método acima, exceto que todo o conteúdo do arqiuvo zip será descompactado.

    //em desenvolvimento