(Just bringing things up to date, while looking through the checkin logs.)
(Bug-fixing, warning-fixing, object abstraction/refactoring snipped. There was a fair bit of it; it’s boring. Well, it’s exciting to me because it means less mess to cleanup later, but it makes for boring reading.)
* Nov 5, added pickup/drop objects, enter/exit things with interiors (the shed, your robot).
* Added bumpers & thrusters to the robot. Thrusters let him move around (opposite of thrust direction), bumpers signal that he ran into something. If you’re familiar with Robot Odyssey, it’s pretty-much the same idea.
* My FarmViewController was getting substantially cluttered with debug code, so I refactored all of that out into a category (FarmViewController+debug), which makes things much neater.
* The game is 2.5-D isometric view. “2.5-D” means that it’s simulated 3D by putting objects behind/in front of each other as they move around, etc. Iso means that things are on a diagonal, such that “left” is really “down and left”, “right” is really “up and right”, etc. I’m sure you’ve seen games like that.
I had originally made an object called the IsoCellView that could be, for example, 3×3 or 2×1 to signify how many “cells” in the game the object occupied. (In other farm games, this is the item’s “footprint”, as you place it.) Turns out that my scheme complicated masking & collision-detection, so I altered the IsoCellView to be a collection of iso1x1View-s, laid-out properly in the grid. While this ended-up making things nicer, overall, there was a period of “practically everything is broken” that had to be dealt with.
* For some unknown reason, I had originally decided that everything was an RfcObject except the Farm, itself, which was a special-case thing. Turns out that was dumb and, barely a month after starting the project, I realized that the farm was just like any other RfcObject. Another refactoring, and suddenly things were getting a lot cleaner, inside the code!
* The week before Thanksgiving, I finally got to adding the different kinds of logic gates, and designed a set of clock-phase triggers to get everything to happen in the right order.
Then added the solder-pen and made so you can connect inputs to outputs (11/25.)
Gates were originally in a toolbox (a la Robot Odyssey) but I moved them to a gate-drawer that I like better. The “sliding drawer” thing is a cousin of the sliding-help view object, and sibling of the sliding inventory drawer and any other drawers I decide we need.