public ParticleCustomForceField(FieldEffectType type, Func <Vector3, Vector3> f, Func <Vector3, Vector3> v0, int cdataIdx) { EffectType = type; force = f; velocity = v0; customDataIdx = cdataIdx; }
public void RemoveEffect(FieldEffectType fieldEffectType) { // TODO. LogEx.Log <FieldSide>("Removed effect: " + fieldEffectType); _fieldEffects[fieldEffectType].Reset(); }
public void AddEffect(FieldEffectType fieldEffectType) { if (_fieldEffects.ContainsKey(fieldEffectType)) { var fieldEffect = _fieldEffects[fieldEffectType]; if (fieldEffect.CanApply) { LogEx.Log <FieldSide>("Added effect: " + fieldEffectType); _fieldEffects[fieldEffectType].IncreaseEffect(); } else { LogEx.Log <FieldSide>("Field effect of type '{0}' cannot be applied.", fieldEffectType); } } }
public static void handleFieldEffect(Packet packet) { FieldEffectType type = Util.GetEnumObjectByValue <FieldEffectType>(packet.ReadByte()); String str; int x, y; switch (type) { case ObjectStateByString: Parser.getActiveScript().addLine(String.Format("sm.objectStateByString({0})", Util.quotes(packet.ReadString()))); break; case Tremble: Parser.getActiveScript().addLine(String.Format("sm.tremble({0}, {1}, {2})", packet.ReadByte(), packet.ReadInt(), packet.ReadShort())); break; case PlaySound: str = packet.ReadString(); x = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.playSound({0}, {1})", Util.quotes(str), x)); break; case ChangeBGM: str = packet.ReadString(); x = packet.ReadInt(); y = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.changeBGM({0}, {1}, {2})", Util.quotes(str), x, y)); break; case SetBGMVolume: Parser.getActiveScript().addLine(String.Format("sm.setBGMVolume({0}, {1})", packet.ReadInt(), packet.ReadInt())); break; case BackScreen: str = packet.ReadString(); x = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.showFieldBackgroundEffect({0}, {1})", Util.quotes(str), x)); break; case ScreenEffect: str = packet.ReadString(); x = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.showFieldEffect({0}, {1})", Util.quotes(str), x)); break; case Blind: int enable = packet.ReadByte(); x = packet.ReadShort(); int color = packet.ReadShort(); int unk1 = packet.ReadShort(); int unk2 = packet.ReadShort(); int time = packet.ReadInt(); int unk3 = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.blind({0}, {1}, {2}, {3}, {4}, {5}, {6})", enable, x, color, unk1, unk2, time, unk3)); break; case OnOffLayer: byte layerType = packet.ReadByte(); int term = packet.ReadInt(); String key = packet.ReadString(); if (layerType == 0) { x = packet.ReadInt(); y = packet.ReadInt(); int z = packet.ReadInt(); String effect = packet.ReadString(); int origin = packet.ReadInt(); int unk4 = packet.ReadByte(); int unk5 = packet.ReadInt(); int unk6 = packet.ReadByte(); Parser.getActiveScript().addLine(String.Format("sm.OnOffLayer_On({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", term, Util.quotes(key), x, y, z, Util.quotes(effect), origin, unk4, unk5, unk6)); } else if (layerType == 1) { x = packet.ReadInt(); y = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.OnOffLayer_Move({0}, {1}, {2}, {3})", term, Util.quotes(key), x, y)); } else if (layerType == 2) { x = packet.ReadByte(); Parser.getActiveScript().addLine(String.Format("sm.OnOffLayer_Off({0}, {1}, {2})", term, Util.quotes(key), x)); } break; case OverlapScreen: x = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.showFade({0})", x)); break; case OverlapScreenDetail: int duration = packet.ReadInt(); int fadeInTime = packet.ReadInt(); int fadeOutTime = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.showFadeTransition({0}, {1}, {2})", duration, fadeInTime, fadeOutTime)); break; case RemoveOverlapScreen: x = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.removeOverlapScreen({0})", x)); break; case StageClearExpOnly: x = packet.ReadInt(); Parser.getActiveScript().addLine(String.Format("sm.showClearStageExpWindow({0})", x)); break; case SpineScreen: Parser.getActiveScript().addLine(String.Format("sm.spineScreen({0}, {1}, {2}, {3}, {4}, {5}, {6})", packet.ReadBoolPy(), packet.ReadBoolPy(), packet.ReadBoolPy(), packet.ReadInt(), Util.quotes(packet.ReadString()), Util.quotes(packet.ReadString()), packet.ReadBool() ? Util.quotes(packet.ReadString()) : "None")); break; case OffSpineScreen: String layer = packet.ReadString(); int spineType = packet.ReadInt(); if (spineType == 1) { Parser.getActiveScript().addLine(String.Format("sm.offSpineScreenAlpha({0}, {1})", Util.quotes(layer), packet.ReadInt())); } else if (spineType == 2) { Parser.getActiveScript().addLine(String.Format("sm.offSpineScreenAni({0}, {1})", Util.quotes(layer), Util.quotes(packet.ReadString()))); } else { Parser.getActiveScript().addLine(String.Format("sm.offSpineScreenImmediate({0})", Util.quotes(layer))); } break; default: Parser.getActiveScript().addComment(String.Format("Unhandled Field Effect [{0}] Packet: {1}", type, packet.ToString())); break; } }