Skip to content

Commit

Permalink
Add color & render mode to sprite params
Browse files Browse the repository at this point in the history
  • Loading branch information
ArKaNeMaN committed Apr 21, 2021
1 parent e4dbe74 commit 935bf4a
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 11 deletions.
31 changes: 27 additions & 4 deletions SprLett-Saver.sma
Expand Up @@ -130,7 +130,7 @@ SaveToFile(){

JSON:WordToJson(const WordEnt){
new JSON:WordObj = json_init_object();
new Float:Vec[3], Str[WORD_MAX_LENGTH], Float:Fl;
new Float:Vec[3], Str[WORD_MAX_LENGTH], Float:Fl, i;

get_entvar(WordEnt, var_origin, Vec);
json_object_set_vector(WordObj, "Origin", Vec);
Expand All @@ -141,6 +141,9 @@ JSON:WordToJson(const WordEnt){
get_entvar(WordEnt, var_SL_WordDir, Vec);
json_object_set_vector(WordObj, "Dir", Vec);

get_entvar(WordEnt, var_rendercolor, Vec);
json_object_set_vector(WordObj, "Color", Vec);

get_entvar(WordEnt, var_SL_WordText, Str, charsmax(Str));
json_object_set_string(WordObj, "Text", Str);

Expand All @@ -153,11 +156,17 @@ JSON:WordToJson(const WordEnt){
Fl = get_entvar(WordEnt, var_SL_WordOffset);
json_object_set_real(WordObj, "Offset", Fl);

Fl = get_entvar(WordEnt, var_renderamt);
json_object_set_real(WordObj, "Alpha", Fl);

i = get_entvar(WordEnt, var_rendermode);
json_object_set_number(WordObj, "RenderMode", i);

return WordObj;
}

JsonToWord(const JSON:WordObj, const WordEnt){
new Float:Vec[3], Str[WORD_MAX_LENGTH], Float:Fl;
new Float:Vec[3], Str[WORD_MAX_LENGTH], Float:Fl, i;

json_object_get_vector(WordObj, "Origin", Vec);
set_entvar(WordEnt, var_origin, Vec);
Expand All @@ -168,6 +177,9 @@ JsonToWord(const JSON:WordObj, const WordEnt){
json_object_get_vector(WordObj, "Dir", Vec);
set_entvar(WordEnt, var_SL_WordDir, Vec);

json_object_get_vector(WordObj, "Color", Vec);
set_entvar(WordEnt, var_rendercolor, Vec);

json_object_get_string(WordObj, "Text", Str, charsmax(Str));
set_entvar(WordEnt, var_SL_WordText, Str);

Expand All @@ -180,6 +192,12 @@ JsonToWord(const JSON:WordObj, const WordEnt){
Fl = json_object_get_real(WordObj, "Offset");
set_entvar(WordEnt, var_SL_WordOffset, Fl);

Fl = json_object_get_real(WordObj, "Alpha");
set_entvar(WordEnt, var_renderamt, Fl);

i = json_object_get_number(WordObj, "RenderMode");
set_entvar(WordEnt, var_rendermode, i);

return WordEnt;
}

Expand All @@ -195,11 +213,16 @@ JSON:json_init_vector(const Float:Vec[], const Size = 3){
}

json_get_vector(const JSON:Item, Float:Vec[], const Size = 3){
for(new i = 0; i < Size; i++)
Vec[i] = json_array_get_real(Item, i);
if(!json_is_array(Item))
for(new i = 0; i < Size; i++)
Vec[i] = 0.0;
else
for(new i = 0; i < Size; i++)
Vec[i] = json_array_get_real(Item, i);
}

json_object_get_vector(const JSON:Obj, const Name[], Float:Vec[], const Size = 3, const bool:DotNot = false){
new JSON:Item = json_object_get_value(Obj, Name, DotNot);
json_get_vector(Item, Vec, Size);
json_free(Item);
}
24 changes: 17 additions & 7 deletions SprLetters.sma
Expand Up @@ -35,13 +35,15 @@ new CHARSET_DEFAULT_NAME[32] = "Default";
#define IsWordOrLetter(%1) (IsLetter(%1)||IsWord(%1))

new SprParams[SprLett_Params] = {
1.0, // SL_P_Scale
255.0, // SL_P_Alpha
9.0, // SL_P_Size
18.0, // SL_P_Offset
1.0, // SL_P_Scale
255.0, // SL_P_Alpha
9.0, // SL_P_Size
18.0, // SL_P_Offset
kRenderTransAdd, // SL_P_RenderMode
};
new Float:SprWordDir[3] = {1.0, 0.0, 0.0};
new Float:SprAngles[3] = {0.0, 0.0, 0.0};
new Float:SprColor[3] = {255.0, 255.0, 255.0};
new SprCharset[SprLett_CharsetData];

new bool:EditMode = false;
Expand Down Expand Up @@ -105,16 +107,21 @@ InitWord(const Word[], const Float:Origin[3]){
return nullent;

set_entvar(WordEnt, var_classname, WORD_CLASSNAME);

set_entvar(WordEnt, var_origin, Origin);
set_entvar(WordEnt, var_angles, SprAngles);
set_entvar(WordEnt, var_scale, SprParams[SL_P_Scale]);
set_entvar(WordEnt, var_renderamt, SprParams[SL_P_Alpha]);
set_entvar(WordEnt, var_LetterSize, SprParams[SL_P_Size]);
set_entvar(WordEnt, var_WordOffset, SprParams[SL_P_Offset]);
set_entvar(WordEnt, var_WordDir, SprWordDir);

set_entvar(WordEnt, var_WordText, Word);
set_entvar(WordEnt, var_WordCharset, SprCharset[SL_CD_Name]);

set_entvar(WordEnt, var_renderamt, SprParams[SL_P_Alpha]);
set_entvar(WordEnt, var_rendercolor, SprColor);
set_entvar(WordEnt, var_rendermode, SprParams[SL_P_RenderMode]);

return WordEnt;
}

Expand Down Expand Up @@ -183,8 +190,10 @@ BuildWord(const WordEnt){
MakeWordLetter(const WordEnt, const LetterEnt){
SetEntSize(LetterEnt, get_entvar(WordEnt, var_LetterSize));
copy_entvar_num(WordEnt, var_renderamt, LetterEnt);
copy_entvar_num(WordEnt, var_rendermode, LetterEnt);
copy_entvar_num(WordEnt, var_scale, LetterEnt);
copy_entvar_vec(WordEnt, var_angles, LetterEnt);
copy_entvar_vec(WordEnt, var_rendercolor, LetterEnt);

set_entvar(LetterEnt, var_WordEnt, WordEnt);
}
Expand Down Expand Up @@ -222,13 +231,14 @@ CreateLetter(const Letter[LETTER_SIZE], const Float:Origin[3], const bool:ForWor
set_entvar(Ent, var_movetype, MOVETYPE_FLY);
set_entvar(Ent, var_solid, EditMode ? SOLID_BBOX : SOLID_NOT);
set_entvar(Ent, var_origin, Origin);
set_entvar(Ent, var_rendermode, kRenderTransAdd);
set_entvar(Ent, var_LetterText, Letter);

if(!ForWord){
set_entvar(Ent, var_rendermode, SprParams[SL_P_RenderMode]);
set_entvar(Ent, var_rendercolor, SprColor);
SetLetterCharset(Ent, SprCharset);
set_entvar(Ent, var_renderamt, SprParams[SL_P_Alpha]);
SetEntSize(Ent, SprParams[SL_P_Size]*SprParams[SL_P_Scale]);
SetEntSize(Ent, SprParams[SL_P_Size] / 2);
set_entvar(Ent, var_angles, SprAngles);
set_entvar(Ent, var_scale, SprParams[SL_P_Scale]);
}
Expand Down
10 changes: 10 additions & 0 deletions include/SprLetters.inc
Expand Up @@ -69,6 +69,11 @@ enum _:SprLett_Params{
* Расстояние между буквами.
*/
Float:SL_P_Offset,

/**
* Режим рендера букв.
*/
SL_P_RenderMode,
}

/**
Expand All @@ -84,6 +89,11 @@ enum _:SprLett_ParamsVec{
* Направление букв
*/
SL_P_Angles,

/**
* Цвет рендера букв
*/
SL_P_Color,
}

/**
Expand Down

0 comments on commit 935bf4a

Please sign in to comment.