public override void Update() { if (this.commands == null) { World.Remove(this); return; } //make the wheel spin wheel.Angle -= 1; //keep track of mouse movement direction Point cMouse = new Point(Mouse.ScreenX, Mouse.ScreenY); int angle = (int)FP.Angle(cMouse.X, cMouse.Y, this.X, this.Y); if (commands != null && commands.Length > 0) { if (lastMouse != cMouse) { //check which command is being selected int deginc = 360 / commands.Length; //turn angle to '0' angle += deginc / 2 + 270; //find index of the command angle /= deginc; angle %= commands.Length; lastc = commands[angle]; //clear the last update scaling foreach (var img in commandImages.Values) { img.Scale = 1; } // Make it bigger to show its selected commandImages[lastc].Scale = 2; } } //Fire it if clicked if (Mouse.Left.Pressed) { if (lastc != null && lastc.Actions != null && lastc.Actions.Length > 0) { Action.runActions(lastc.Actions); World.Remove(this); } } else if (Mouse.Right.Pressed) { World.Remove(this); } //update last mouse lastMouse = cMouse; }
public override void Update() { base.Update(); var currentAnimaion = this.CheckAnimation(); if (Keyboard.Space.Pressed) { switch (InteractiveObjectRef.Attributes["AvatarSpriteState"]) { case 0: InteractiveObjectRef.Attributes["AvatarSpriteState"] = 1; break; case 1: InteractiveObjectRef.Attributes["AvatarSpriteState"] = 2; break; case 2: InteractiveObjectRef.Attributes["AvatarSpriteState"] = 3; break; case 3: InteractiveObjectRef.Attributes["AvatarSpriteState"] = 0; break; default: break; } } if (InventoryObject) { if (currentAnimaion != "Idle" + InteractiveObjectRef.Attributes["AvatarSpriteState"]) { PlayAnimation("Idle" + InteractiveObjectRef.Attributes["AvatarSpriteState"]); } return; } if (IsMoving) { this.MoveToward(walkToX, walkToY, FP.Elapsed * this.MoveSpeedX, FP.Elapsed * this.MoveSpeedY); //Trigger event if needed var worldMetadata = ((DynamicSceneWorld)World).metaData; if (worldMetadata.Regions != null) { foreach (var r in worldMetadata.Regions) { if (r.Area.Contains(X, Y)) { if (!wasInRegion[r]) { //just entered, execute shit Action.runActions(r.OnEnter); wasInRegion[r] = true; } } else { if (wasInRegion[r]) { //just left region, execute other shit Action.runActions(r.OnExit); wasInRegion[r] = false; } } } } //Animation stuff List <int> footFallFrameNumbers; footFallFrames.TryGetValue(currentAnimaion, out footFallFrameNumbers); if (footFallFrameNumbers != null && footFallFrameNumbers.Contains(sprite.Frame) && lastFootFrame != sprite.Frame) { lastFootFrame = sprite.Frame; SoundManager.PlaySoundVariations("footstepL", .8f, .9f); } if (pathNodes != null) { if ((int)X == (int)walkToX && (int)Y == (int)walkToY) { if (pathNodes.MoveNext()) { walkToX = pathNodes.Current.X; walkToY = pathNodes.Current.Y; } else { PlayAnimation("Idle" + InteractiveObjectRef.Attributes["AvatarSpriteState"]); pathNodes = null; IsMoving = false; return; } } var walkAngle = FP.Angle(this.X, this.Y, walkToX, walkToY); bool flip = walkAngle >= 90 && walkAngle <= 270; if (Flipped != flip) { Flipped = flip; } if (currentAnimaion != ("WalkDown" + InteractiveObjectRef.Attributes["AvatarSpriteState"]) && (walkAngle >= 0 && walkAngle <= 180)) { PlayAnimation("WalkDown" + InteractiveObjectRef.Attributes["AvatarSpriteState"]); } else if (currentAnimaion != ("WalkUp" + +InteractiveObjectRef.Attributes["AvatarSpriteState"]) && walkAngle > 180 && walkAngle < 360) { PlayAnimation("WalkUp" + InteractiveObjectRef.Attributes["AvatarSpriteState"]); } } } }