[update] Added new parameter assign type OnceAssign.

This commit is contained in:
falsycat 2019-10-04 00:00:00 +00:00
parent efc5dbb038
commit 1d3ce20332
4 changed files with 32 additions and 4 deletions

View File

@ -34,6 +34,7 @@ struct Period {
enum ParameterType { enum ParameterType {
Assign, Assign,
AddAssign, AddAssign,
OnceAssign,
} }
/// ///

View File

@ -73,6 +73,7 @@ enum TokenType {
@TextCompleteMatcher!"=" Assign, @TextCompleteMatcher!"=" Assign,
@TextCompleteMatcher!"+=" AddAssign, @TextCompleteMatcher!"+=" AddAssign,
@TextCompleteMatcher!":=" ColonAssign,
@TextCompleteMatcher!"+" Add, @TextCompleteMatcher!"+" Add,
@TextCompleteMatcher!"-" Sub, @TextCompleteMatcher!"-" Sub,

View File

@ -94,6 +94,14 @@ private class RuleSet {
return Parameter( return Parameter(
ident.text, ParameterType.AddAssign, expr, CreateTokenPos(ident, semicolon)); ident.text, ParameterType.AddAssign, expr, CreateTokenPos(ident, semicolon));
} }
static Parameter ParseOnceAssignParameter(
@(TokenType.Ident) Token ident,
@(TokenType.ColonAssign) Token,
Expression expr,
@(TokenType.SemiColon) Token semicolon) {
return Parameter(
ident.text, ParameterType.OnceAssign, expr, CreateTokenPos(ident, semicolon));
}
static Expression ParseExpressionFromFirstTerm(Term term) { static Expression ParseExpressionFromFirstTerm(Term term) {
return Expression([term]); return Expression([term]);

View File

@ -1,16 +1,34 @@
// this is comment // this is comment
$define sinwave {
translate_x = $sinwave_add_x + sin(rtime * $sinwave_hz) * $sinwave_amp_x;
translate_y = $sinwave_add_y + cos(rtime * $sinwave_hz) * $sinwave_amp_y;
}
$define horming { $define horming {
translate_x += cos(atan(player_y, player_x)) * $horming_speed; translate_x += cos(atan(player_y, player_x)) * $horming_speed;
translate_y += sin(atan(player_y, player_x)) * $horming_speed; translate_y += sin(atan(player_y, player_x)) * $horming_speed;
} }
$define shoot {
__dir_x := cos(atan(player_y, player_x)) * $shoot_speed;
__dir_y := sin(atan(player_y, player_x)) * $shoot_speed;
A [0..10] { translate_x += __dir_x;
translate_x = 0.5 + sin(rtime)*0.5; translate_y += __dir_y;
translate_y = 0.5 + cos(rtime)*0.5;
} }
B [5..15] { A [0..10] {
$define sinwave_add_x {0.5}
$define sinwave_add_y {0.5}
$define sinwave_amp_x {0.5}
$define sinwave_amp_y {0.5}
$define sinwave_hz {2}
$sinwave
}
B [10..20] {
$define horming_speed {0.1} $define horming_speed {0.1}
$horming $horming
} }
C [20..30] {
$define shoot_speed {0.1}
$shoot
}