protected override void LocalPlayerUpdate() { timeSinceLastShot += Time.deltaTime; if (Input.GetMouseButtonDown(0)) { StartCoroutine(ShotTimer()); } if (Input.GetKeyDown(KeyCode.Alpha1)) { mode = SpecialMode.Piercing; } else if (Input.GetKeyDown(KeyCode.Alpha2)) { mode = SpecialMode.Ricochet; } else if (Input.GetKeyDown(KeyCode.Q)) { Rpc_ToggleStealth(!player.stealthed); } else if (Input.GetKeyDown(KeyCode.Alpha3)) { StartCoroutine(SummonTimer()); } }
/// <summary> /// Constructor. /// </summary> public VisParamDescr(string uiLabel, string name, Type csType, object min, object max, SpecialMode special, object defVal) { if (defVal.GetType() != csType) { throw new ArgumentException("Mismatch between type and default value in \"" + name + "\""); } UiLabel = uiLabel; Name = name; CsType = csType; Min = min; Max = max; Special = special; DefaultValue = defVal; }
public string ListAssembler(SpecialMode specialMode = SpecialMode.None) { opCodes = new OpCodes(); ushort ui16Loop = (ushort)(Format == ProgramFormat.OrixProgram ? OtherFileInfo.ORIX_HEADER_LENGTH : 0); ushort ui16Address; ushort ui16BranchAddr; string strAscii; StringBuilder stbDissassembly = new StringBuilder(); stbDissassembly.EnsureCapacity(65000); if (ProgramName == null) { ProgramName = ""; } ui16Address = (ushort)(StartAddress + (Format == ProgramFormat.OrixProgram ? OtherFileInfo.ORIX_HEADER_LENGTH : 0)); byte bByte; while (ui16Loop < ProgramLength) { bByte = ProgramData[ui16Loop]; OpCodes.sOpCode sTmpStructOpCodes = opCodes.FindOpInfo(bByte); // if the byte is 00 (BRK instruction) and it is a Telestrat (Stratsed) floppy disk, // this mnemonic is accompanied by an argument so we adjust the default properties if (bByte == 0 && specialMode == SpecialMode.Telestrat) { sTmpStructOpCodes.bOpBytes = 2; //instead of 1 sTmpStructOpCodes.bOpMode = 4; //instead of 1 } strAscii = ""; string strOpParams = ""; // Current address stbDissassembly.AppendFormat("${0:X4} ", ui16Address); if (ui16Loop + sTmpStructOpCodes.bOpBytes > ProgramLength) { byte bCurrByte = Convert.ToByte(ProgramData[ui16Loop]); stbDissassembly.AppendFormat("{0:X2} ", bCurrByte); sTmpStructOpCodes.bOpBytes = 1; sTmpStructOpCodes.bOpMode = 0; if (bCurrByte < 32 || bCurrByte > 126) { strAscii += "."; } else { strAscii += Convert.ToChar(bCurrByte); } } else { for (ushort siIndex = 0; siIndex < sTmpStructOpCodes.bOpBytes; siIndex++) { byte bCurrByte = Convert.ToByte(ProgramData[ui16Loop + siIndex]); stbDissassembly.AppendFormat("{0:X2} ", bCurrByte); if (bCurrByte < 32 || bCurrByte > 126) { strAscii += "."; } else { strAscii += Convert.ToChar(bCurrByte); } } } if (sTmpStructOpCodes.bOpBytes < 2) { stbDissassembly.Append(" "); } if (sTmpStructOpCodes.bOpBytes < 3) { stbDissassembly.Append(" "); } byte bByte1 = 0; byte bByte2 = 0; if (sTmpStructOpCodes.bOpBytes > 1) { bByte1 = Convert.ToByte(ProgramData[ui16Loop + 1]); } if (sTmpStructOpCodes.bOpBytes > 2) { bByte2 = Convert.ToByte(ProgramData[ui16Loop + 2]); } switch (sTmpStructOpCodes.bOpMode) { case 0: case 1: strOpParams = ""; break; case 2: strOpParams = string.Format("#${0:X2}", bByte1); break; case 3: strOpParams = string.Format("${0:X2}{1:X2}", bByte2, bByte1); break; case 4: strOpParams = string.Format("${0:X2}", bByte1); break; case 5: // Calculate jump address if (bByte1 > 127) { ui16BranchAddr = (ushort)(ui16Address - (255 - bByte1)); ui16BranchAddr++; } else { ui16BranchAddr = (ushort)((ui16Address + 2) + bByte1); } strOpParams = string.Format("${0:X4}", ui16BranchAddr); break; case 6: strOpParams = string.Format("${0:X2}{1:X2},X", bByte2, bByte1); break; case 7: strOpParams = string.Format("${0:X2}{1:X2},Y", bByte2, bByte1); break; case 8: strOpParams = string.Format("${0:X2},X", bByte1); break; case 9: strOpParams = string.Format("${0:X2},Y", bByte1); break; case 10: strOpParams = string.Format("(${0:X2},X)", bByte1); break; case 11: strOpParams = string.Format("(${0:X2}),Y", bByte1); break; case 12: strOpParams = "A"; break; case 13: strOpParams = string.Format("${0:X2}{1:X2}", bByte2, bByte1); break; } stbDissassembly.AppendFormat(" {0,-3:G} {1,-8:G} {2,-3}\n", sTmpStructOpCodes.strOpMne, strOpParams, strAscii); ui16Address += sTmpStructOpCodes.bOpBytes; ui16Loop += sTmpStructOpCodes.bOpBytes; } return(stbDissassembly.ToString().Replace('`', '©')); }
private static void FindFlags(SpecialMode specialMode, char character, RecognizedFlags flags) { flags.Reset(); flags.Character = character; var specialModeFlags = specialMode.Flags; var inBlockComment = (specialModeFlags & SpecialModeFlags.InBlockComment) != 0; var notInComment = !inBlockComment && (specialModeFlags & SpecialModeFlags.InLineComment) == 0; var inString = (specialModeFlags & SpecialModeFlags.InString) != 0; var notInSpecialMode = specialModeFlags == 0; switch (character) { case '/': flags.BlockCommentBeginCandidate = notInComment; break; case AsteriskCharacter: flags.BlockCommentEndCandidate = inBlockComment; break; case '-': flags.LineCommentCandidate = notInComment; break; case '|': flags.ConcatenationCandidate = notInSpecialMode; break; case '=': flags.OptionalParameterCandidate = notInSpecialMode; break; case ':': flags.AssignmentOperatorCandidate = notInSpecialMode; break; case '>': case '<': flags.LabelMarkerCandidate = notInSpecialMode; flags.RelationalOperatorCandidate = notInSpecialMode; break; case '^': case '!': flags.RelationalOperatorCandidate = notInSpecialMode; break; case 'e': case 'E': flags.ExponentCandidate = specialMode.InNumber && notInSpecialMode; break; case 'd': case 'D': case 'f': case 'F': flags.IsDataTypePostFix = specialMode.InNumber && notInSpecialMode; break; case 'n': case 'N': flags.UnicodeCandidate = !inString; break; case 'q': case 'Q': flags.QuotedStringCandidate = !inString; break; case SingleQuoteCharacter: flags.StringEndCandidate = inString; break; case '.': flags.IsDecimalCandidate = notInSpecialMode; break; case ' ': case '\u00A0': case '\t': flags.IsSpace = true; break; case '\r': case '\n': flags.IsLineTerminator = true; break; default: flags.IsDigit = character >= 48 && character <= 57; break; } }
public IEnumerable <OracleToken> GetTokens(bool includeCommentBlocks = false) { var builder = new StringBuilder(); var index = 0; var inQuotedString = false; var sqlPlusTerminatorCandidate = false; var candidateCharacterCode = EmptyCharacterCode; char?quotingInitializer = null; var quotingInitializerIndex = 0; var specialMode = new SpecialMode(); var flags = new RecognizedFlags(); var previousFlags = new RecognizedFlags(); int characterCode; while ((characterCode = _sqlReader.Read()) != EmptyCharacterCode) { index++; var character = (char)characterCode; flags.CopyToPrevious(previousFlags); FindFlags(specialMode, character, flags); var isBlank = flags.IsSpace || flags.IsLineTerminator; var isSingleCharacterTerminal = character == ',' || character == '(' || character == ')' || character == '+' || character == ';' || character == '@' || character == '[' || character == ']' || character == '{' || character == '}' || character == '%' || character == '?'; var characterYielded = false; if (flags.BlockCommentBeginCandidate && previousFlags.IsLineTerminator) { sqlPlusTerminatorCandidate = true; } else { if (sqlPlusTerminatorCandidate && flags.IsLineTerminator) { builder.Append("\n/\n"); candidateCharacterCode = EmptyCharacterCode; yield return(BuildToken(builder, index)); previousFlags.BlockCommentBeginCandidate = false; } sqlPlusTerminatorCandidate = false; } if ((flags.QuotedStringCandidate || flags.UnicodeCandidate) && builder.Length > 0 && character != 'q' && character != 'Q' && previousFlags.Character != 'n' && previousFlags.Character != 'N') { flags.QuotedStringCandidate = false; flags.UnicodeCandidate = false; } if (inQuotedString && quotingInitializer == null) { quotingInitializer = character; quotingInitializerIndex = index; } if (previousFlags.OptionalParameterCandidate) { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } builder.Append(previousFlags.Character); var indexOffset = 1; if (character == '>') { builder.Append(character); indexOffset = 0; characterYielded = true; flags.RelationalOperatorCandidate = false; } yield return(BuildToken(builder, index - indexOffset)); candidateCharacterCode = EmptyCharacterCode; } if ((specialMode.Flags & SpecialModeFlags.InString) != 0) { var isSimpleStringTerminator = !inQuotedString && previousFlags.StringEndCandidate && character != SingleQuoteCharacter; var isQuotedStringTerminator = inQuotedString && character == SingleQuoteCharacter && index > quotingInitializerIndex + 1 && IsQuotedStringClosingCharacter(quotingInitializer.Value, previousFlags.Character); if (isSimpleStringTerminator || isQuotedStringTerminator) { AppendCandidateCharacter(builder, ref candidateCharacterCode); var indexOffset = isQuotedStringTerminator ? 0 : 1; if (isQuotedStringTerminator) { builder.Append(character); } yield return(BuildToken(builder, index - indexOffset)); specialMode.Flags &= ~SpecialModeFlags.InString; inQuotedString = false; quotingInitializer = null; characterYielded = isQuotedStringTerminator; FindFlags(specialMode, character, flags); } else if (previousFlags.StringEndCandidate && flags.StringEndCandidate && character == SingleQuoteCharacter) { flags.StringEndCandidate = false; } } else if (specialMode.Flags == 0 && character == SingleQuoteCharacter) { AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0 && !previousFlags.QuotedStringCandidate && !previousFlags.UnicodeCandidate) { yield return(BuildToken(builder, index - 1)); } inQuotedString = previousFlags.QuotedStringCandidate; specialMode.Flags |= SpecialModeFlags.InString; previousFlags.AssignmentOperatorCandidate = false; } if (previousFlags.BlockCommentBeginCandidate && specialMode.Flags == 0) { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } if (character == AsteriskCharacter) { specialMode.Flags |= SpecialModeFlags.InBlockComment; AppendCandidateCharacter(builder, ref candidateCharacterCode); } else { yield return(BuildToken((char)candidateCharacterCode, index - 1)); } candidateCharacterCode = EmptyCharacterCode; flags.BlockCommentEndCandidate = false; } if (previousFlags.LineCommentCandidate && specialMode.Flags == 0) { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } AppendCandidateCharacter(builder, ref candidateCharacterCode); if (character == '-') { specialMode.Flags |= SpecialModeFlags.InLineComment; } else { yield return(BuildToken(builder, index - 1)); } } if (flags.IsDecimalCandidate) { if (previousFlags.IsDecimalCandidate) { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } AppendCandidateCharacter(builder, ref candidateCharacterCode); builder.Append(character); yield return(BuildToken(builder, index)); specialMode.InNumber = false; flags.IsDecimalCandidate = false; characterYielded = true; } else if (specialMode.InDecimalNumber || (!specialMode.InNumber && builder.Length > 0)) { AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0) { yield return(BuildToken(builder, index - 1)); } specialMode.InNumber = false; } } if (flags.IsDigit && builder.Length == 0) { specialMode.InNumber = true; } else if (!flags.IsDecimalCandidate && specialMode.InNumber) { if (!specialMode.InExponent && previousFlags.ExponentCandidate) { var isSign = character == '+' || character == '-'; if (isSign || flags.IsDigit) { specialMode.InExponent = true; isSingleCharacterTerminal = false; flags.LineCommentCandidate = false; } else { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } specialMode.InNumber = false; } AppendCandidateCharacter(builder, ref candidateCharacterCode); } else if (!flags.ExponentCandidate && !flags.IsDigit) { if (specialMode.InPostfixedNumber || !flags.IsDataTypePostFix) { AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0) { yield return(BuildToken(builder, index - 1)); } specialMode.InNumber = false; flags.ExponentCandidate = false; } else if (!specialMode.InPostfixedNumber && flags.IsDataTypePostFix) { specialMode.InPostfixedNumber = true; } } } if (previousFlags.IsDecimalCandidate) { if (specialMode.InNumber && !specialMode.InDecimalNumber) { AppendCandidateCharacter(builder, ref candidateCharacterCode); specialMode.InDecimalNumber = true; } else if (candidateCharacterCode > EmptyCharacterCode) { yield return(BuildToken((char)candidateCharacterCode, index - 1)); specialMode.InNumber = false; candidateCharacterCode = EmptyCharacterCode; } } if (flags.AssignmentOperatorCandidate && builder.Length > 0) { yield return(BuildToken(builder, index - 1)); } if (previousFlags.AssignmentOperatorCandidate) { if (character == '=') { AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0) { builder.Append(character); yield return(BuildToken(builder, index)); } flags.OptionalParameterCandidate = false; characterYielded = true; } else { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } yield return(BuildToken(previousFlags.Character, index - 1)); candidateCharacterCode = EmptyCharacterCode; } } if ((specialMode.Flags & SpecialModeFlags.InQuotedIdentifier) != 0 && character == '"') { AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0) { builder.Append(character); yield return(BuildToken(builder, index)); } characterYielded = true; specialMode.Flags &= ~SpecialModeFlags.InQuotedIdentifier; } else if (specialMode.Flags == 0 && character == '"') { AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0) { yield return(BuildToken(builder, index - 1)); } specialMode.Flags |= SpecialModeFlags.InQuotedIdentifier; } if (previousFlags.RelationalOperatorCandidate) { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } if (character == '=' || (character == '>' && previousFlags.Character == '<') || (previousFlags.LabelMarkerCandidate && character == previousFlags.Character)) { builder.Append(previousFlags.Character); builder.Append(character); yield return(BuildToken(builder, index)); characterYielded = true; } else { yield return(BuildToken(previousFlags.Character, index - 1)); } candidateCharacterCode = EmptyCharacterCode; flags.RelationalOperatorCandidate = false; flags.LabelMarkerCandidate = false; flags.OptionalParameterCandidate = false; } if (previousFlags.ConcatenationCandidate) { if (builder.Length > 0) { yield return(BuildToken(builder, index - 2)); } builder.Append(previousFlags.Character); var indexOffset = 1; if (character == '|') { builder.Append(character); indexOffset = 0; characterYielded = true; flags.ConcatenationCandidate = false; } yield return(BuildToken(builder, index - indexOffset)); candidateCharacterCode = EmptyCharacterCode; } if (specialMode.Flags == 0 && (isBlank || isSingleCharacterTerminal || character == AsteriskCharacter)) { specialMode.InNumber = false; AppendCandidateCharacter(builder, ref candidateCharacterCode); if (builder.Length > 0) { yield return(BuildToken(builder, index - 1)); } if (!isBlank) { characterYielded = true; yield return(BuildToken(character, index)); } } if (flags.IsLineTerminator && (specialMode.Flags & SpecialModeFlags.InLineComment) != 0) { if (includeCommentBlocks) { builder.Append(character); yield return(BuildToken(builder, index, CommentType.Line)); } else { builder.Clear(); } characterYielded = true; specialMode.Flags &= ~(SpecialModeFlags.InBlockComment | SpecialModeFlags.InLineComment); candidateCharacterCode = EmptyCharacterCode; } if (previousFlags.BlockCommentEndCandidate && (specialMode.Flags & SpecialModeFlags.InBlockComment) != 0) { if (character == '/') { specialMode.Flags &= ~(SpecialModeFlags.InBlockComment | SpecialModeFlags.InLineComment); if (includeCommentBlocks) { builder.Append(character); yield return(BuildToken(builder, index, CommentType.Block)); } else { builder.Clear(); } characterYielded = true; } candidateCharacterCode = EmptyCharacterCode; flags.BlockCommentBeginCandidate = false; } if (!characterYielded) { var candidateMode = flags.ConcatenationCandidate || flags.OptionalParameterCandidate || flags.LineCommentCandidate || flags.BlockCommentBeginCandidate || flags.RelationalOperatorCandidate || flags.IsDecimalCandidate || flags.ExponentCandidate || flags.AssignmentOperatorCandidate || flags.LabelMarkerCandidate; if (candidateMode && specialMode.Flags == 0) { candidateCharacterCode = characterCode; } else if (!isBlank || specialMode.Flags > 0) { builder.Append(character); } } } var commentType = (CommentType)(specialMode.Flags & (SpecialModeFlags.InLineComment | SpecialModeFlags.InBlockComment)); if (commentType == CommentType.None || includeCommentBlocks) { var indexOffset = candidateCharacterCode == EmptyCharacterCode ? 0 : 1; if (builder.Length > 0) { yield return(new OracleToken(builder.ToString(), index - builder.Length - indexOffset, commentType)); } if (candidateCharacterCode != EmptyCharacterCode) { yield return(new OracleToken(new String((char)candidateCharacterCode, 1), index - indexOffset, commentType)); } } }
public static void SetMode(DependencyObject obj, SpecialMode value) { obj.SetValue(ModeProperty, value); }
public override void Die() { if (SpecialMode.HasFlag(SpecialItemMode.Revival) && Envir.Time > LastRevivalTime) { LastRevivalTime = Envir.Time + 300000; for (var i = (int)EquipmentSlot.RingL; i <= (int)EquipmentSlot.RingR; i++) { var item = Info.Equipment[i]; if (item == null) { continue; } if (!(item.Info.Unique.HasFlag(SpecialItemMode.Revival)) || item.CurrentDura < 1000) { continue; } SetHP(Stats[Stat.HP]); item.CurrentDura = (ushort)(item.CurrentDura - 1000); Enqueue(new S.DuraChanged { UniqueID = item.UniqueID, CurrentDura = item.CurrentDura }); RefreshStats(); ReceiveChat("You have been given a second chance at life", ChatType.System); return; } } for (int i = Pets.Count - 1; i >= 0; i--) { if (Pets[i].Dead) { continue; } Pets[i].Die(); } RemoveBuff(BuffType.MagicShield); RemoveBuff(BuffType.ElementalBarrier); if (!InSafeZone) { DeathDrop(LastHitter); } HP = 0; Dead = true; LogTime = Envir.Time; BrownTime = Envir.Time; Broadcast(new S.ObjectDied { ObjectID = ObjectID, Direction = Direction, Location = CurrentLocation }); Owner.Enqueue(new S.UpdateHeroSpawnState { State = HeroSpawnState.Dead }); for (int i = 0; i < Buffs.Count; i++) { Buff buff = Buffs[i]; if (!buff.Properties.HasFlag(BuffProperty.RemoveOnDeath)) { continue; } RemoveBuff(buff.Type); } PoisonList.Clear(); InTrapRock = false; }
public static void SetSpecialMode(DependencyObject obj, SpecialMode value) { obj.SetValue(SpecialModeProperty, value); }
internal static extern bool IsSupported(SpecialMode query);