summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--elm/CharEdit.elm20
-rw-r--r--lib/VNWeb/Chars/Edit.pm1
-rw-r--r--lib/VNWeb/Chars/Page.pm9
-rw-r--r--sql/schema.sql6
-rw-r--r--util/updates/2020-06-13-spoil-gender.sql4
5 files changed, 37 insertions, 3 deletions
diff --git a/elm/CharEdit.elm b/elm/CharEdit.elm
index 6d268b21..0f75a357 100644
--- a/elm/CharEdit.elm
+++ b/elm/CharEdit.elm
@@ -48,6 +48,7 @@ type alias Model =
, alias : String
, desc : TP.Model
, gender : String
+ , spoilGender : Maybe String
, bMonth : Int
, bDay : Int
, age : Maybe Int
@@ -90,6 +91,7 @@ init d =
, alias = d.alias
, desc = TP.bbcode d.desc
, gender = d.gender
+ , spoilGender = d.spoil_gender
, bMonth = d.b_month
, bDay = if d.b_day == 0 then 1 else d.b_day
, age = d.age
@@ -133,6 +135,7 @@ encode model =
, alias = model.alias
, desc = model.desc.data
, gender = model.gender
+ , spoil_gender= model.spoilGender
, b_month = model.bMonth
, b_day = model.bDay
, age = model.age
@@ -171,6 +174,7 @@ type Msg
| Alias String
| Desc TP.Msg
| Gender String
+ | SpoilGender (Maybe String)
| BMonth Int
| BDay Int
| Age (Maybe Int)
@@ -213,6 +217,7 @@ update msg model =
Alias s -> ({ model | alias = s }, Cmd.none)
Desc m -> let (nm,nc) = TP.update m model.desc in ({ model | desc = nm }, Cmd.map Desc nc)
Gender s -> ({ model | gender = s }, Cmd.none)
+ SpoilGender s->({model | spoilGender = s }, Cmd.none)
BMonth n -> ({ model | bMonth = n }, Cmd.none)
BDay n -> ({ model | bDay = n }, Cmd.none)
Age s -> ({ model | age = s }, Cmd.none)
@@ -332,7 +337,20 @@ view model =
, formField "age::Age" [ inputNumber "age" model.age Age GCE.valAge, text " years" ]
, tr [ class "newpart" ] [ td [ colspan 2 ] [ text "Body" ] ]
- , formField "gender::Sex" [ inputSelect "gender" model.gender Gender [] GT.genders ]
+ , formField "gender::Sex"
+ [ inputSelect "gender" model.gender Gender [] GT.genders
+ , label [] [ inputCheck "" (isJust model.spoilGender) (\b -> SpoilGender <| if b then (Just "unknown") else Nothing), text " spoiler" ]
+ , case model.spoilGender of
+ Nothing -> text ""
+ Just gen -> span []
+ [ br [] []
+ , text "▲ apparent (non-spoiler) sex"
+ , br [] []
+ , text "▼ actual (spoiler) sex"
+ , br [] []
+ , inputSelect "" gen (\s -> SpoilGender (Just s)) [] GT.genders
+ ]
+ ]
, formField "sbust::Bust" [ inputNumber "sbust" (if model.sBust == 0 then Nothing else Just model.sBust ) SBust GCE.valS_Bust, text " cm" ]
, formField "swaist::Waist" [ inputNumber "swiast" (if model.sWaist == 0 then Nothing else Just model.sWaist) SWaist GCE.valS_Waist,text " cm" ]
, formField "ship::Hips" [ inputNumber "ship" (if model.sHip == 0 then Nothing else Just model.sHip ) SHip GCE.valS_Hip, text " cm" ]
diff --git a/lib/VNWeb/Chars/Edit.pm b/lib/VNWeb/Chars/Edit.pm
index 1d26c330..f5ccca38 100644
--- a/lib/VNWeb/Chars/Edit.pm
+++ b/lib/VNWeb/Chars/Edit.pm
@@ -10,6 +10,7 @@ my $FORM = {
alias => { required => 0, default => '', maxlength => 500 },
desc => { required => 0, default => '', maxlength => 5000 },
gender => { default => 'unknown', enum => \%GENDER },
+ spoil_gender=>{ required => 0, enum => \%GENDER },
b_month => { required => 0, default => 0, uint => 1, range => [ 0, 12 ] },
b_day => { required => 0, default => 0, uint => 1, range => [ 0, 31 ] },
age => { required => 0, uint => 1, range => [ 0, 32767 ] },
diff --git a/lib/VNWeb/Chars/Page.pm b/lib/VNWeb/Chars/Page.pm
index a9e06de6..7fcc6761 100644
--- a/lib/VNWeb/Chars/Page.pm
+++ b/lib/VNWeb/Chars/Page.pm
@@ -121,6 +121,7 @@ sub _rev_ {
[ alias => 'Aliases' ],
[ desc => 'Description' ],
[ gender => 'Sex', fmt => \%GENDER ],
+ [ spoil_gender=> 'Sex (spoiler)',fmt => \%GENDER ],
[ b_month => 'Birthday/month',empty => 0 ],
[ b_day => 'Birthday/day', empty => 0 ],
[ s_bust => 'Bust', empty => 0 ],
@@ -172,6 +173,13 @@ sub chartable_ {
: b_ style => 'margin-right: 10px', $c->{name};
b_ class => 'grayedout', style => 'margin-right: 10px', $c->{original} if $c->{original};
abbr_ class => "icons gen $c->{gender}", title => $GENDER{$c->{gender}}, '' if $c->{gender} ne 'unknown';
+ if($view->{spoilers} == 2 && defined $c->{spoil_gender}) {
+ txt_ '(';
+ abbr_ class => "icons gen $c->{spoil_gender}", title => $GENDER{$c->{spoil_gender}}, '' if $c->{spoil_gender} ne 'unknown';
+ txt_ 'unknown' if $c->{spoil_gender} eq 'unknown';
+ spoil_ 2;
+ txt_ ')';
+ }
span_ $BLOOD_TYPE{$c->{bloodt}} if $c->{bloodt} ne 'unknown';
}}};
@@ -289,6 +297,7 @@ TUWF::get qr{/$RE{crev}} => sub {
$inst_maxspoil||0,
(map $_->{spoil}, $c->{traits}->@*),
(map $_->{spoil}, $c->{vns}->@*),
+ defined $c->{spoil_gender} ? 2 : 0,
$c->{desc} =~ /\[spoiler\]/i ? 2 : 0, # crude
);
# Only display the sexual traits toggle when there are sexual traits within the current spoiler level.
diff --git a/sql/schema.sql b/sql/schema.sql
index eb2aa9a2..0098d482 100644
--- a/sql/schema.sql
+++ b/sql/schema.sql
@@ -135,7 +135,8 @@ CREATE TABLE chars ( -- dbentry_type=c
main integer, -- [pub] chars.id
main_spoil smallint NOT NULL DEFAULT 0, -- [pub]
cup_size cup_size NOT NULL DEFAULT '', -- [pub]
- age smallint -- [pub]
+ age smallint, -- [pub]
+ spoil_gender gender -- [pub]
);
-- chars_hist
@@ -158,7 +159,8 @@ CREATE TABLE chars_hist (
main integer, -- chars.id
main_spoil smallint NOT NULL DEFAULT 0,
cup_size cup_size NOT NULL DEFAULT '',
- age smallint
+ age smallint,
+ spoil_gender gender
);
-- chars_traits
diff --git a/util/updates/2020-06-13-spoil-gender.sql b/util/updates/2020-06-13-spoil-gender.sql
new file mode 100644
index 00000000..d09cd4d9
--- /dev/null
+++ b/util/updates/2020-06-13-spoil-gender.sql
@@ -0,0 +1,4 @@
+-- Run 'make' first to update editfunc.sql
+ALTER TABLE chars ADD COLUMN spoil_gender gender;
+ALTER TABLE chars_hist ADD COLUMN spoil_gender gender;
+\i sql/editfunc.sql